From f2ad6bcce9004192a4b5458d0e8936e683fe6c5e Mon Sep 17 00:00:00 2001 From: Xaver Hugl Date: Wed, 20 Jul 2022 12:27:28 +0200 Subject: [PATCH] move ColorManager singleton to Application --- src/colors/colormanager.cpp | 12 +++--------- src/colors/colormanager.h | 5 +++-- src/main.cpp | 9 +++++++-- src/main.h | 3 +++ src/plugins/colord-integration/colorddevice.cpp | 2 +- src/plugins/nightcolor/nightcolormanager.cpp | 4 ++-- 6 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/colors/colormanager.cpp b/src/colors/colormanager.cpp index ca36b7781d..79e7e6f9f4 100644 --- a/src/colors/colormanager.cpp +++ b/src/colors/colormanager.cpp @@ -15,17 +15,14 @@ namespace KWin { -KWIN_SINGLETON_FACTORY(ColorManager) - class ColorManagerPrivate { public: QVector devices; }; -ColorManager::ColorManager(QObject *parent) - : QObject(parent) - , d(new ColorManagerPrivate) +ColorManager::ColorManager() + : d(std::make_unique()) { Platform *platform = kwinApp()->platform(); Session *session = platform->session(); @@ -40,10 +37,7 @@ ColorManager::ColorManager(QObject *parent) connect(session, &Session::activeChanged, this, &ColorManager::handleSessionActiveChanged); } -ColorManager::~ColorManager() -{ - s_self = nullptr; -} +ColorManager::~ColorManager() = default; QVector ColorManager::devices() const { diff --git a/src/colors/colormanager.h b/src/colors/colormanager.h index 746010da6c..db77ce9d2c 100644 --- a/src/colors/colormanager.h +++ b/src/colors/colormanager.h @@ -9,6 +9,7 @@ #include "kwinglobals.h" #include +#include namespace KWin { @@ -25,6 +26,7 @@ class KWIN_EXPORT ColorManager : public QObject Q_OBJECT public: + ColorManager(); ~ColorManager() override; /** @@ -55,8 +57,7 @@ private Q_SLOTS: void handleSessionActiveChanged(bool active); private: - QScopedPointer d; - KWIN_SINGLETON(ColorManager) + std::unique_ptr d; }; } // namespace KWin diff --git a/src/main.cpp b/src/main.cpp index 31ec9c9fd7..17ca4104bb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -271,7 +271,7 @@ void Application::createPlugins() void Application::createColorManager() { - ColorManager::create(this); + m_colorManager = std::make_unique(); } void Application::createInputMethod() @@ -311,7 +311,7 @@ void Application::destroyPlugins() void Application::destroyColorManager() { - delete ColorManager::self(); + m_colorManager.reset(); } void Application::destroyInputMethod() @@ -572,4 +572,9 @@ InputMethod *Application::inputMethod() const return m_inputMethod.get(); } +ColorManager *Application::colorManager() const +{ + return m_colorManager.get(); +} + } // namespace diff --git a/src/main.h b/src/main.h index 46cc36d5a1..80a49a1c0c 100644 --- a/src/main.h +++ b/src/main.h @@ -31,6 +31,7 @@ class Platform; class X11EventFilter; class PluginManager; class InputMethod; +class ColorManager; class XcbEventFilter : public QAbstractNativeEventFilter { @@ -243,6 +244,7 @@ public: PluginManager *pluginManager() const; InputMethod *inputMethod() const; + ColorManager *colorManager() const; Q_SIGNALS: void x11ConnectionChanged(); @@ -301,6 +303,7 @@ private: QProcessEnvironment m_processEnvironment; std::unique_ptr m_pluginManager; std::unique_ptr m_inputMethod; + std::unique_ptr m_colorManager; }; inline static Application *kwinApp() diff --git a/src/plugins/colord-integration/colorddevice.cpp b/src/plugins/colord-integration/colorddevice.cpp index a1769b9272..c51a66b98d 100644 --- a/src/plugins/colord-integration/colorddevice.cpp +++ b/src/plugins/colord-integration/colorddevice.cpp @@ -54,7 +54,7 @@ void ColordDevice::updateProfile() return; } - ColorDevice *device = ColorManager::self()->findDevice(m_output); + ColorDevice *device = kwinApp()->colorManager()->findDevice(m_output); if (device) { device->setProfile(profile.filename()); } diff --git a/src/plugins/nightcolor/nightcolormanager.cpp b/src/plugins/nightcolor/nightcolormanager.cpp index 593fa2605c..3c5d3f4262 100644 --- a/src/plugins/nightcolor/nightcolormanager.cpp +++ b/src/plugins/nightcolor/nightcolormanager.cpp @@ -114,7 +114,7 @@ void NightColorManager::init() KGlobalAccel::setGlobalShortcut(toggleAction, QList()); input()->registerShortcut(QKeySequence(), toggleAction, this, &NightColorManager::toggle); - connect(ColorManager::self(), &ColorManager::deviceAdded, this, &NightColorManager::hardReset); + connect(kwinApp()->colorManager(), &ColorManager::deviceAdded, this, &NightColorManager::hardReset); connect(kwinApp()->platform()->session(), &Session::activeChanged, this, [this](bool active) { if (active) { @@ -671,7 +671,7 @@ int NightColorManager::currentTargetTemp() const void NightColorManager::commitGammaRamps(int temperature) { - const QVector devices = ColorManager::self()->devices(); + const QVector devices = kwinApp()->colorManager()->devices(); for (ColorDevice *device : devices) { device->setTemperature(temperature); }