From 754b549f01b1adee727aa8e155e08cda8af91f44 Mon Sep 17 00:00:00 2001 From: Vlad Zahorodnii Date: Fri, 20 Oct 2023 15:10:24 +0300 Subject: [PATCH] Restart compositing if kwinrc changes only on X11 On Wayland, options don't influence compositing as on X11. For example, kwin cannot easily switch between compositing modes, etc. One can still force kwin_wayland to reinitialize compositing by using the dbus api. --- src/compositor.cpp | 7 ------- src/compositor.h | 2 -- src/compositor_x11.cpp | 17 ++++++++--------- src/compositor_x11.h | 1 - 4 files changed, 8 insertions(+), 19 deletions(-) diff --git a/src/compositor.cpp b/src/compositor.cpp index 27ce49e243..09e711c39b 100644 --- a/src/compositor.cpp +++ b/src/compositor.cpp @@ -41,8 +41,6 @@ Compositor *Compositor::self() Compositor::Compositor(QObject *workspace) : QObject(workspace) { - connect(options, &Options::configChanged, this, &Compositor::configChanged); - // 2 sec which should be enough to restart the compositor. static const int compositorLostMessageDelay = 2000; @@ -119,11 +117,6 @@ void Compositor::deleteUnusedSupportProperties() } } -void Compositor::configChanged() -{ - reinitialize(); -} - void Compositor::reinitialize() { // Restart compositing diff --git a/src/compositor.h b/src/compositor.h index 20861584fb..354d4ac214 100644 --- a/src/compositor.h +++ b/src/compositor.h @@ -130,8 +130,6 @@ protected: virtual void start() = 0; virtual void stop() = 0; - virtual void configChanged(); - static Compositor *s_compositor; protected Q_SLOTS: diff --git a/src/compositor_x11.cpp b/src/compositor_x11.cpp index 249d01d36f..f69ee10432 100644 --- a/src/compositor_x11.cpp +++ b/src/compositor_x11.cpp @@ -79,6 +79,14 @@ X11Compositor::X11Compositor(QObject *parent) m_framesToTestForSafety = qEnvironmentVariableIntValue("KWIN_MAX_FRAMES_TESTED"); } + connect(options, &Options::configChanged, this, [this]() { + if (m_suspended) { + stop(); + } else { + reinitialize(); + } + }); + m_releaseSelectionTimer.setSingleShot(true); m_releaseSelectionTimer.setInterval(2000); connect(&m_releaseSelectionTimer, &QTimer::timeout, this, &X11Compositor::releaseCompositorSelection); @@ -127,15 +135,6 @@ void X11Compositor::reinitialize() Compositor::reinitialize(); } -void X11Compositor::configChanged() -{ - if (m_suspended) { - stop(); - return; - } - Compositor::configChanged(); -} - void X11Compositor::suspend(X11Compositor::SuspendReason reason) { Q_ASSERT(reason != NoReasonSuspend); diff --git a/src/compositor_x11.h b/src/compositor_x11.h index ccfb483b20..be396e4787 100644 --- a/src/compositor_x11.h +++ b/src/compositor_x11.h @@ -97,7 +97,6 @@ public: void uninhibit(Window *window) override; void reinitialize() override; - void configChanged() override; bool compositingPossible() const override; QString compositingNotPossibleReason() const override; bool openGLCompositingIsBroken() const override;