diff --git a/0000-feature-idle-lock-add-idle-activation-lock-gsettings-a7ecb4a2.patch b/0000-feature-idle-lock-add-idle-activation-lock-gsettings-a7ecb4a2.patch deleted file mode 100644 index 7cb20a2..0000000 --- a/0000-feature-idle-lock-add-idle-activation-lock-gsettings-a7ecb4a2.patch +++ /dev/null @@ -1,188 +0,0 @@ -From a7ecb4a280029c94d743dd20a23baac75f20c930 Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Tue, 21 Dec 2021 15:51:41 +0800 -Subject: [PATCH] feature(idle lock): add idle-activation-lock gsettings option -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 添加空闲时是否锁定屏幕GSettings配置项 ---- - ...com.kylinsec.kiran.screensaver.gschema.xml | 8 +++---- - src/idle-watcher/idle-watcher-mate.cpp | 1 + - src/manager.cpp | 12 +++++++--- - src/prefs.cpp | 23 +++++++++++-------- - src/prefs.h | 6 ++++- - src/view/window.cpp | 2 +- - 6 files changed, 33 insertions(+), 19 deletions(-) - -diff --git a/data/com.kylinsec.kiran.screensaver.gschema.xml b/data/com.kylinsec.kiran.screensaver.gschema.xml -index d5d77e6..17b6f20 100644 ---- a/data/com.kylinsec.kiran.screensaver.gschema.xml -+++ b/data/com.kylinsec.kiran.screensaver.gschema.xml -@@ -5,10 +5,10 @@ - "/usr/lib64/kiran-screensaver/libkiran-screensaver-dialog.so" - - -- -- -- -- -+ -+ true -+ 空闲时是否锁定 -+ - - - true -diff --git a/src/idle-watcher/idle-watcher-mate.cpp b/src/idle-watcher/idle-watcher-mate.cpp -index f562022..0cba668 100644 ---- a/src/idle-watcher/idle-watcher-mate.cpp -+++ b/src/idle-watcher/idle-watcher-mate.cpp -@@ -97,6 +97,7 @@ bool IdleWatcherMate::setIdleDetectionActive(bool idleDetectionActive) - - m_idle = false; - m_idleNotice = false; -+ //NOTE:由于空闲预告阶段会抓取鼠标键盘到屏幕外,所以空闲预告阶段不会出现设置空闲检测的情况,暂时不需要考虑特殊情况 - if(m_idleTimerID != 0) - { - killTimer(m_idleTimerID); -diff --git a/src/manager.cpp b/src/manager.cpp -index 8c26da9..87041ca 100644 ---- a/src/manager.cpp -+++ b/src/manager.cpp -@@ -137,9 +137,15 @@ bool Manager::initIdleWatcher() - connect(m_idleWatcher,&IdleWatcher::idleChanged,this, &Manager::onWatcherIdleChanged,Qt::DirectConnection); - connect(m_idleWatcher,&IdleWatcher::idleNoticeChanged,this, &Manager::onWatcherIdleNoticeChanged,Qt::DirectConnection); - -- m_idleWatcher->setEnabled(true); -- m_idleWatcher->setIdleDetectionActive(true); -- -+ m_idleWatcher->setEnabled(m_prefs->getIdleActivationLock()); -+ m_idleWatcher->setIdleDetectionActive(m_prefs->getIdleActivationLock()); -+ -+ //连接至GSettings变化,判断是否开启空闲时锁屏,同步空闲监控器状态 -+ connect(m_prefs,&Prefs::idleActivationLockChanged,[this](bool idleActivationLock){ -+ KLOG_DEBUG() << "prefs idle activation lock changed:" << idleActivationLock << " update idle watcher enable"; -+ m_idleWatcher->setEnabled(idleActivationLock); -+ m_idleWatcher->setIdleDetectionActive(idleActivationLock); -+ }); - return true; - } - -diff --git a/src/prefs.cpp b/src/prefs.cpp -index bd34bbd..3e654a9 100644 ---- a/src/prefs.cpp -+++ b/src/prefs.cpp -@@ -26,11 +26,11 @@ - } - - #define SCHEMA_KIRAN_SCREENSAVER "com.kylinsec.kiran.screensaver" --#define KEY_IDLE_ACTIVATION_LOCK "idle-activation-lock" --#define KEY_CAN_LOGOUT "can-logout" --#define KEY_CAN_USER_SWITCH "can-user-switch" --#define KEY_ENABLE_ANIMATION "enable-animation" --#define KEY_SCREENSAVER_LOCKER "screensaver-locker" -+#define KEY_IDLE_ACTIVATION_LOCK "idleActivationLock" -+#define KEY_CAN_LOGOUT "canLogout" -+#define KEY_CAN_USER_SWITCH "canUserSwitch" -+#define KEY_ENABLE_ANIMATION "enableAnimation" -+#define KEY_SCREENSAVER_LOCKER "screensaverLocker" - - using namespace Kiran::ScreenSaver; - -@@ -58,7 +58,7 @@ bool Prefs::init() - KLOG_WARNING() << "can't connect screensaver settings changed!"; - } - -- //m_idleActivationLock = m_screensaverSettings->get(KEY_IDLE_ACTIVATION_LOCK).toBool(); -+ m_idleActivationLock = m_screensaverSettings->get(KEY_IDLE_ACTIVATION_LOCK).toBool(); - m_canLogout = m_screensaverSettings->get(KEY_CAN_LOGOUT).toBool(); - m_canUserSwitch = m_screensaverSettings->get(KEY_CAN_USER_SWITCH).toBool(); - m_enableAnimation = m_screensaverSettings->get(KEY_ENABLE_ANIMATION).toBool(); -@@ -66,7 +66,7 @@ bool Prefs::init() - - ///输出设置项 - KLOG_DEBUG() << "load kiran-screensaver prefs:"; -- //KLOG_DEBUG() << "\t" KEY_IDLE_ACTIVATION_LOCK << m_idleActivationLock; -+ KLOG_DEBUG() << "\t" KEY_IDLE_ACTIVATION_LOCK << m_idleActivationLock; - KLOG_DEBUG() << "\t" KEY_CAN_LOGOUT << m_canLogout; - KLOG_DEBUG() << "\t" KEY_CAN_USER_SWITCH << m_canUserSwitch; - KLOG_DEBUG() << "\t" KEY_ENABLE_ANIMATION << m_enableAnimation; -@@ -91,14 +91,12 @@ bool Prefs::getCanUserSwitch() const - return m_canUserSwitch; - } - --/* - void Prefs::setIdleActivationLock(bool idleActivationLock) - { - RETURN_IF_SAME(m_idleActivationLock, idleActivationLock); - m_idleActivationLock = idleActivationLock; - m_screensaverSettings->set(KEY_IDLE_ACTIVATION_LOCK, m_idleActivationLock); - } --*/ - - void Prefs::setCanLogout(bool canLogout) - { -@@ -117,7 +115,7 @@ void Prefs::setCanUserSwitch(bool canUserSwitch) - void Prefs::handleGSettingsChanged(const QString& key) - { - const QMap boolKeyMap = { -- //{KEY_IDLE_ACTIVATION_LOCK, &m_idleActivationLock}, -+ {KEY_IDLE_ACTIVATION_LOCK, &m_idleActivationLock}, - {KEY_CAN_LOGOUT, &m_canLogout}, - {KEY_CAN_USER_SWITCH, &m_canUserSwitch}, - {KEY_ENABLE_ANIMATION,&m_enableAnimation} -@@ -128,6 +126,11 @@ void Prefs::handleGSettingsChanged(const QString& key) - { - *boolIter.value() = m_screensaverSettings->get(boolIter.key()).toBool(); - } -+ qInfo() << "keyChanged" << key; -+ if( key == KEY_IDLE_ACTIVATION_LOCK ) -+ { -+ emit idleActivationLockChanged(m_idleActivationLock); -+ } - } - - bool Prefs::getEnableAnimation() const -diff --git a/src/prefs.h b/src/prefs.h -index 797bdfe..30431d3 100644 ---- a/src/prefs.h -+++ b/src/prefs.h -@@ -30,6 +30,7 @@ namespace ScreenSaver - { - class Prefs : public QObject - { -+ Q_OBJECT - public: - static Prefs* getInstance(); - ~Prefs() override; -@@ -48,8 +49,11 @@ public: - - QString getLockerPluginPath() const; - -+signals: -+ void idleActivationLockChanged(bool idleActivationLock); -+ - private: -- //void setIdleActivationLock(bool idleActivationLock); -+ void setIdleActivationLock(bool idleActivationLock); - void setCanLogout(bool canLogout); - void setCanUserSwitch(bool canUserSwitch); - void setEnableAnimation(bool enableAnimation); -diff --git a/src/view/window.cpp b/src/view/window.cpp -index b05dd81..c826e97 100644 ---- a/src/view/window.cpp -+++ b/src/view/window.cpp -@@ -80,7 +80,7 @@ void Window::setScreen(QScreen *screen) - { - setObjectName(QString("screen_background_%1").arg(screen->name())); - connect(screen, &QScreen::geometryChanged, -- this, &Window::handleScreenGeometryChanged); -+ this, &Window::handleScreenGeometryChanged ); - } - else - { --- -2.27.0 - diff --git a/0002-fix-crash-fix-crash-in-some-situation-d001fc82.patch b/0002-fix-crash-fix-crash-in-some-situation-d001fc82.patch deleted file mode 100644 index 567c640..0000000 --- a/0002-fix-crash-fix-crash-in-some-situation-d001fc82.patch +++ /dev/null @@ -1,119 +0,0 @@ -From d001fc82a1a872ae1dd0dadc5ef3d0c80181c1f6 Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Fri, 31 Dec 2021 15:32:01 +0800 -Subject: [PATCH 2/3] fix(crash): fix crash in some situation -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 修复屏保后端在某些情况下崩溃的问题 ---- - src/idle-watcher/idle-watcher-mate.cpp | 3 +++ - src/view/screen-manager.cpp | 16 ++++++++++------ - src/view/screen-manager.h | 6 +++--- - 3 files changed, 16 insertions(+), 9 deletions(-) - -diff --git a/src/idle-watcher/idle-watcher-mate.cpp b/src/idle-watcher/idle-watcher-mate.cpp -index 0cba668..9d744c3 100644 ---- a/src/idle-watcher/idle-watcher-mate.cpp -+++ b/src/idle-watcher/idle-watcher-mate.cpp -@@ -97,11 +97,14 @@ bool IdleWatcherMate::setIdleDetectionActive(bool idleDetectionActive) - - m_idle = false; - m_idleNotice = false; -+ - //NOTE:由于空闲预告阶段会抓取鼠标键盘到屏幕外,所以空闲预告阶段不会出现设置空闲检测的情况,暂时不需要考虑特殊情况 - if(m_idleTimerID != 0) - { - killTimer(m_idleTimerID); -+ m_idleTimerID = 0; - } -+ - m_idleDetectionActive = idleDetectionActive; - return true; - } -diff --git a/src/view/screen-manager.cpp b/src/view/screen-manager.cpp -index f8d7803..d7fc124 100644 ---- a/src/view/screen-manager.cpp -+++ b/src/view/screen-manager.cpp -@@ -42,10 +42,10 @@ ScreenManager::ScreenManager(Fade *fade, - if (m_prefs != nullptr) - { - m_enableAnimation = m_prefs->getEnableAnimation(); -- m_idleActivationLock = m_prefs->getIdleActivationLock(); -+ //m_idleActivationLock = m_prefs->getIdleActivationLock(); - } - -- QCoreApplication::instance()->installEventFilter(this); -+ QApplication::instance()->installEventFilter(this); - } - - ScreenManager::~ScreenManager() -@@ -260,14 +260,15 @@ bool ScreenManager::activate() - // 创建解锁框,屏保框 - m_screensaver = new Screensaver(m_enableAnimation, nullptr); - -- if (m_idleActivationLock) -- { -+ //NOTE:空闲是否锁定屏幕控制权交由IdleWatcher决定,若IdleWatcher发出空闲信号,则锁定屏幕 -+// if (m_idleActivationLock) // 若开启空闲时锁定屏幕,创建解锁框 -+// { - if (!setLockActive(true)) - { - delete m_screensaver; - return false; - } -- } -+// } - - // 获取桌面壁纸路径 - QString backgroundPath; -@@ -371,9 +372,10 @@ bool ScreenManager::eventFilter(QObject *watched, QEvent *event) - return QObject::eventFilter(watched, event); - } - -+//NOTE:在事件过滤之中删除某些控件并且该控件同时是事件的接收者需要过滤该事件,避免崩溃 - bool ScreenManager::eventFilterActivate(QObject *watched, QEvent *event) - { -- if (!m_active) -+ if ( !m_active || (event->type()!=QEvent::MouseButtonPress && event->type()!=QEvent::KeyPress) ) - return false; - - // 若解锁框已被激活 按键和鼠标事件触发解锁框显示 -@@ -388,6 +390,7 @@ bool ScreenManager::eventFilterActivate(QObject *watched, QEvent *event) - else if (!getLockActive()) - { - emit sigReqDeactivated(); -+ return true; - } - } - else if (event->type() == QEvent::KeyPress) -@@ -396,6 +399,7 @@ bool ScreenManager::eventFilterActivate(QObject *watched, QEvent *event) - if (!getLockActive()) - { - emit sigReqDeactivated(); -+ return true; - } - else - { -diff --git a/src/view/screen-manager.h b/src/view/screen-manager.h -index b5253a0..9fa14c9 100644 ---- a/src/view/screen-manager.h -+++ b/src/view/screen-manager.h -@@ -121,10 +121,10 @@ private: - // 当前显示内容的背景窗口 - Window* m_currentWindow = nullptr; - // 屏保界面 -- Screensaver* m_screensaver; -+ Screensaver* m_screensaver = nullptr; - // 解锁框界面 -- PluginInterface* m_lockerPluginInterface; -- LockerInterface* m_lockerInterface; -+ PluginInterface* m_lockerPluginInterface = nullptr; -+ LockerInterface* m_lockerInterface = nullptr; - }; - } // namespace ScreenSaver - } // namespace Kiran --- -2.27.0 - diff --git a/0003-refactor-Qt-adapt-to-lower-version-QT-d588833c.patch b/0003-refactor-Qt-adapt-to-lower-version-QT-d588833c.patch deleted file mode 100644 index a4f4ac8..0000000 --- a/0003-refactor-Qt-adapt-to-lower-version-QT-d588833c.patch +++ /dev/null @@ -1,32 +0,0 @@ -From d588833ca6e4b53037e88a67716f03ce332aae9a Mon Sep 17 00:00:00 2001 -From: liuxinhao -Date: Tue, 4 Jan 2022 15:26:55 +0800 -Subject: [PATCH 3/3] refactor(Qt): adapt to lower version QT -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -- 适配5.9.2版本Qt,QStringLiteral头文件差异问题 ---- - src/listener/listener.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/listener/listener.cpp b/src/listener/listener.cpp -index b01996e..4440f72 100644 ---- a/src/listener/listener.cpp -+++ b/src/listener/listener.cpp -@@ -20,7 +20,11 @@ - #include - #include - #include -+#if (QT_VERSION > QT_VERSION_CHECK(5,9,2)) - #include -+#else -+#include -+#endif - - #define NOT_SUPPORTED_METHOD \ - { \ --- -2.27.0 - diff --git a/kiran-screensaver-2.2.0.tar.gz b/kiran-screensaver-2.2.0.tar.gz deleted file mode 100644 index f2cab26..0000000 Binary files a/kiran-screensaver-2.2.0.tar.gz and /dev/null differ diff --git a/kiran-screensaver-2.2.1.tar.gz b/kiran-screensaver-2.2.1.tar.gz new file mode 100644 index 0000000..ae7966d Binary files /dev/null and b/kiran-screensaver-2.2.1.tar.gz differ diff --git a/kiran-screensaver.spec b/kiran-screensaver.spec index 707a8e4..83e821c 100644 --- a/kiran-screensaver.spec +++ b/kiran-screensaver.spec @@ -1,6 +1,6 @@ Name: kiran-screensaver -Version: 2.2.0 -Release: 9 +Version: 2.2.1 +Release: 1 Summary: Kiran Desktop Screensaver Backend Summary(zh_CN): kiran桌面屏保后端 @@ -8,10 +8,6 @@ License: Mulan PSL v2 Source0: %{name}-%{version}.tar.gz -Patch0001: 0000-feature-idle-lock-add-idle-activation-lock-gsettings-a7ecb4a2.patch -Patch0002: 0002-fix-crash-fix-crash-in-some-situation-d001fc82.patch -Patch0003: 0003-refactor-Qt-adapt-to-lower-version-QT-d588833c.patch - BuildRequires: gcc-c++ BuildRequires: cmake BuildRequires: qt5-qtbase-devel @@ -74,6 +70,11 @@ glib-compile-schemas /usr/share/glib-2.0/schemas &> /dev/nulls || : rm -rf %{buildroot} %changelog +* Mon Jul 25 2022 liuxinhao - 2.2.1-1 +- KYOS-F: fix xscreensaver black screen +- KYOS-F: Fixed high CPU utilization caused by floating label animation +- KYOS-F: fixed unlocked screen due to blocking access to the kiran backend before suspend + * Tue Mar 01 2022 longcheng - 2.2.0-9 - KYOS-F: Do not output the alarm information to the screen