From 6006a91e8a39ecff1e74dfd05def83436afe203b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Tue, 3 Dec 2013 07:13:44 +0100 Subject: [PATCH] Invoke the reinit Compositor signal when the advanced options changed Therefore we track whether the options got changed and if they did we emit the reinit signal once the configuration is saved. --- kcmkwin/kwincompositing/compositing.cpp | 16 ++++++++++++++++ kcmkwin/kwincompositing/compositing.h | 2 ++ kcmkwin/kwincompositing/main.cpp | 6 ------ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/kcmkwin/kwincompositing/compositing.cpp b/kcmkwin/kwincompositing/compositing.cpp index 566af416de..08d7357464 100644 --- a/kcmkwin/kwincompositing/compositing.cpp +++ b/kcmkwin/kwincompositing/compositing.cpp @@ -44,6 +44,7 @@ Compositing::Compositing(QObject *parent) , m_glSwapStrategy(0) , m_glColorCorrection(false) , m_compositingType(0) + , m_changed(false) { reset(); connect(this, &Compositing::animationSpeedChanged, this, &Compositing::changed); @@ -54,6 +55,10 @@ Compositing::Compositing(QObject *parent) connect(this, &Compositing::glSwapStrategyChanged, this, &Compositing::changed); connect(this, &Compositing::glColorCorrectionChanged, this, &Compositing::changed); connect(this, &Compositing::compositingTypeChanged, this, &Compositing::changed); + + connect(this, &Compositing::changed, [this]{ + m_changed = true; + }); } void Compositing::reset() @@ -101,6 +106,7 @@ void Compositing::reset() } }; setCompositingType(type()); + m_changed = false; } void Compositing::defaults() @@ -113,6 +119,7 @@ void Compositing::defaults() setGlSwapStrategy(1); setGlColorCorrection(false); setCompositingType(CompositingType::OPENGL20_INDEX); + m_changed = true; } bool Compositing::OpenGLIsUnsafe() const @@ -308,6 +315,15 @@ void Compositing::save() kwinConfig.writeEntry("GLLegacy", glLegacy); kwinConfig.writeEntry("GLCore", glCore); kwinConfig.sync(); + + if (m_changed) { + // Send signal to all kwin instances + QDBusMessage message = QDBusMessage::createSignal(QStringLiteral("/Compositor"), + QStringLiteral("org.kde.kwin.Compositing"), + QStringLiteral("reinit")); + QDBusConnection::sessionBus().asyncCall(message); + m_changed = false; + } } CompositingType::CompositingType(QObject *parent) diff --git a/kcmkwin/kwincompositing/compositing.h b/kcmkwin/kwincompositing/compositing.h index 69178e90ba..363a9cde37 100644 --- a/kcmkwin/kwincompositing/compositing.h +++ b/kcmkwin/kwincompositing/compositing.h @@ -89,6 +89,8 @@ private: int m_glSwapStrategy; bool m_glColorCorrection; int m_compositingType; + + bool m_changed; }; diff --git a/kcmkwin/kwincompositing/main.cpp b/kcmkwin/kwincompositing/main.cpp index 250ded3f1d..96c8e11556 100644 --- a/kcmkwin/kwincompositing/main.cpp +++ b/kcmkwin/kwincompositing/main.cpp @@ -23,8 +23,6 @@ #include "model.h" #include -#include -#include #include #include @@ -75,10 +73,6 @@ void KWinCompositingKCM::save() { m_view->save(); KCModule::save(); - // Send signal to all kwin instances - // TODO: handle reinitCompositing case and send to compositor - QDBusMessage message = QDBusMessage::createSignal("/KWin", "org.kde.KWin", "reloadConfig"); - QDBusConnection::sessionBus().send(message); } void KWinCompositingKCM::load()