diff --git a/clients/aurorae/src/aurorae.cpp b/clients/aurorae/src/aurorae.cpp index f2457c3aa1..c8b508bdc4 100644 --- a/clients/aurorae/src/aurorae.cpp +++ b/clients/aurorae/src/aurorae.cpp @@ -51,6 +51,7 @@ AuroraeFactory::AuroraeFactory(QObject *parent) , m_engine(new QQmlEngine(this)) , m_component(new QQmlComponent(m_engine, this)) , m_engineType(AuroraeEngine) + , m_mutex(new QMutex(QMutex::Recursive)) { init(); connect(options(), &KDecorationOptions::buttonsChanged, this, &AuroraeFactory::buttonsChanged); @@ -245,7 +246,6 @@ AuroraeClient::AuroraeClient(KDecorationBridge *bridge, KDecorationFactory *fact : KDecoration(bridge, factory) , m_view(nullptr) , m_item(AuroraeFactory::instance()->createQmlDecoration(this)) - , m_mutex(new QMutex(QMutex::Recursive)) { connect(AuroraeFactory::instance(), SIGNAL(buttonsChanged()), SIGNAL(buttonsChanged())); connect(AuroraeFactory::instance(), SIGNAL(configChanged()), SIGNAL(configChanged())); @@ -282,7 +282,7 @@ void AuroraeClient::init() m_view->setRenderTarget(m_fbo.data()); }); connect(m_view, &QQuickWindow::afterRendering, [this]{ - QMutexLocker locker(m_mutex.data()); + QMutexLocker locker(AuroraeFactory::instance()->mutex()); m_buffer = m_fbo->toImage(); }); connect(m_view, &QQuickWindow::afterRendering, this, @@ -563,7 +563,7 @@ bool AuroraeClient::animationsSupported() const void AuroraeClient::render(QPaintDevice *device, const QRegion &sourceRegion) { - QMutexLocker locker(m_mutex.data()); + QMutexLocker locker(AuroraeFactory::instance()->mutex()); QPainter painter(device); painter.setClipRegion(sourceRegion); painter.drawImage(QPoint(0, 0), m_buffer); diff --git a/clients/aurorae/src/aurorae.h b/clients/aurorae/src/aurorae.h index a85467a062..a5d085ce95 100644 --- a/clients/aurorae/src/aurorae.h +++ b/clients/aurorae/src/aurorae.h @@ -57,6 +57,10 @@ public: return m_themeName; } + QMutex *mutex() { + return m_mutex.data(); + } + private: enum EngineType { AuroraeEngine, @@ -83,6 +87,7 @@ private: QQmlComponent *m_component; EngineType m_engineType; QString m_themeName; + QScopedPointer m_mutex; }; class AuroraeClient : public KDecoration @@ -162,7 +167,6 @@ private: QScopedPointer m_item; QScopedPointer m_fbo; QImage m_buffer; - QScopedPointer m_mutex; }; }