Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kidletime for openSUSE:Factory 
checked in at 2022-12-12 17:38:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kidletime (Old)
 and      /work/SRC/openSUSE:Factory/.kidletime.new.1835 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kidletime"

Mon Dec 12 17:38:19 2022 rev:110 rq:1042129 version:5.101.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kidletime/kidletime.changes      2022-11-15 
13:19:32.424312087 +0100
+++ /work/SRC/openSUSE:Factory/.kidletime.new.1835/kidletime.changes    
2022-12-12 17:40:02.649284317 +0100
@@ -1,0 +2,10 @@
+Tue Dec  6 20:10:44 UTC 2022 - Christophe Marin <christo...@krop.fr>
+
+- Update to 5.101.0
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/frameworks/5/5.101.0
+- Changes since 5.100.0:
+  * Port KIdleTime to ext_idle_notifier_v1
+
+-------------------------------------------------------------------

Old:
----
  kidletime-5.100.0.tar.xz
  kidletime-5.100.0.tar.xz.sig

New:
----
  kidletime-5.101.0.tar.xz
  kidletime-5.101.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kidletime.spec ++++++
--- /var/tmp/diff_new_pack.Oil5nd/_old  2022-12-12 17:40:03.197287081 +0100
+++ /var/tmp/diff_new_pack.Oil5nd/_new  2022-12-12 17:40:03.209287141 +0100
@@ -17,7 +17,7 @@
 
 
 %define lname   libKF5IdleTime5
-%define _tar_path 5.100
+%define _tar_path 5.101
 # Full KF5 version (e.g. 5.33.0)
 %{!?_kf5_version: %global _kf5_version %{version}}
 # Last major and minor KF5 version (e.g. 5.33)
@@ -25,11 +25,10 @@
 # Only needed for the package signature condition
 %bcond_without released
 Name:           kidletime
-Version:        5.100.0
+Version:        5.101.0
 Release:        0
 Summary:        User and system idle time reporting singleton
 License:        LGPL-2.1-or-later
-Group:          System/GUI/KDE
 URL:            https://www.kde.org
 Source:         %{name}-%{version}.tar.xz
 %if %{with released}
@@ -56,7 +55,6 @@
 
 %package -n %{lname}
 Summary:        User and system idle time reporting singleton
-Group:          System/GUI/KDE
 %requires_ge    libQt5Core5
 %requires_ge    libQt5Widgets5
 %requires_ge    libQt5X11Extras5
@@ -68,7 +66,6 @@
 
 %package devel
 Summary:        Build environment for kidletime, an idle time singleton
-Group:          Development/Libraries/KDE
 Requires:       %{lname} = %{version}
 Requires:       extra-cmake-modules
 Requires:       cmake(Qt5Core) >= 5.15.0


++++++ kidletime-5.100.0.tar.xz -> kidletime-5.101.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kidletime-5.100.0/CMakeLists.txt 
new/kidletime-5.101.0/CMakeLists.txt
--- old/kidletime-5.100.0/CMakeLists.txt        2022-11-05 13:28:01.000000000 
+0100
+++ new/kidletime-5.101.0/CMakeLists.txt        2022-12-03 10:47:34.000000000 
+0100
@@ -1,11 +1,11 @@
 cmake_minimum_required(VERSION 3.16)
 
-set(KF_VERSION "5.100.0") # handled by release scripts
+set(KF_VERSION "5.101.0") # handled by release scripts
 project(KIdleTime VERSION ${KF_VERSION})
 
 # ECM setup
 include(FeatureSummary)
-find_package(ECM 5.100.0  NO_MODULE)
+find_package(ECM 5.101.0  NO_MODULE)
 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake 
Modules." URL "https://commits.kde.org/extra-cmake-modules";)
 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
@@ -81,6 +81,12 @@
     find_package(QtWaylandScanner REQUIRED)
     find_package(Wayland 1.9 REQUIRED Client)
     find_package(PlasmaWaylandProtocols 1.6.0 CONFIG REQUIRED)
+    find_package(WaylandProtocols 1.27)
+    set_package_properties(WaylandProtocols PROPERTIES
+        TYPE REQUIRED
+        PURPOSE "Collection of Wayland protocols that add functionality not 
available in the Wayland core protocol"
+        URL "https://gitlab.freedesktop.org/wayland/wayland-protocols/";
+    )
 endif()
 
 set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of 
deprecated API excluded from the build [default=0].")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kidletime-5.100.0/src/plugins/wayland/CMakeLists.txt 
new/kidletime-5.101.0/src/plugins/wayland/CMakeLists.txt
--- old/kidletime-5.100.0/src/plugins/wayland/CMakeLists.txt    2022-11-05 
13:28:01.000000000 +0100
+++ new/kidletime-5.101.0/src/plugins/wayland/CMakeLists.txt    2022-12-03 
10:47:34.000000000 +0100
@@ -4,9 +4,14 @@
         PROTOCOL ${PLASMA_WAYLAND_PROTOCOLS_DIR}/idle.xml
         BASENAME idle
     )
+    ecm_add_qtwayland_client_protocol(idletime_plugin_SRCS
+        PROTOCOL 
${WaylandProtocols_DATADIR}/staging/ext-idle-notify/ext-idle-notify-v1.xml
+        BASENAME ext-idle-notify-v1
+    )
 else()
     qt6_generate_wayland_protocol_client_sources(KF5IdleTimeWaylandPlugin FILES
-        ${PLASMA_WAYLAND_PROTOCOLS_DIR}/idle.xml)
+        ${PLASMA_WAYLAND_PROTOCOLS_DIR}/idle.xml
+        ${WAYLAND_PROTOCOLS_DIR}/ext-idle-notify-v1.xml)
 endif()
 target_sources(KF5IdleTimeWaylandPlugin PRIVATE poller.cpp 
${idletime_plugin_SRCS})
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kidletime-5.100.0/src/plugins/wayland/poller.cpp 
new/kidletime-5.101.0/src/plugins/wayland/poller.cpp
--- old/kidletime-5.100.0/src/plugins/wayland/poller.cpp        2022-11-05 
13:28:01.000000000 +0100
+++ new/kidletime-5.101.0/src/plugins/wayland/poller.cpp        2022-12-03 
10:47:34.000000000 +0100
@@ -13,26 +13,46 @@
 
 #include <qpa/qplatformnativeinterface.h>
 
+#include "qwayland-ext-idle-notify-v1.h"
 #include "qwayland-idle.h"
 
 Q_DECLARE_LOGGING_CATEGORY(POLLER)
 Q_LOGGING_CATEGORY(POLLER, "kf5idletime_wayland")
 
-class IdleTimeout : public QObject, public QtWayland::org_kde_kwin_idle_timeout
+/*
+ * Porting notes:
+ * org_kde_kwin_idle refers to an early specific idle timeout protocol
+ * the version ext_idle refers to an upstream stable protocol
+ *
+ * Pragmattically they're both the same, but we have to have two 
implementations for a while
+ *
+ * When a suitable amount of time passes (Plasma 5.24 being EOL) drop 
IdleTimeoutKwin and drop IdleManagerKwin as well as merge the abstract 
IdleTimeout class into the real implementation
+ */
+
+class IdleTimeout : public QObject
 {
     Q_OBJECT
 public:
-    IdleTimeout(struct ::org_kde_kwin_idle_timeout* object)
-        : QObject()
+    IdleTimeout() = default;
+Q_SIGNALS:
+    void idle();
+    void resumeFromIdle();
+};
+
+class IdleTimeoutKwin : public IdleTimeout, public 
QtWayland::org_kde_kwin_idle_timeout
+{
+    Q_OBJECT
+public:
+    IdleTimeoutKwin(struct ::org_kde_kwin_idle_timeout *object)
+        : IdleTimeout()
         , QtWayland::org_kde_kwin_idle_timeout(object)
     {}
 
-    ~IdleTimeout() {
+    ~IdleTimeoutKwin()
+    {
         release();
     }
-Q_SIGNALS:
-    void idle();
-    void resumeFromIdle();
+
 protected:
     void org_kde_kwin_idle_timeout_idle() override {
         Q_EMIT idle();
@@ -42,11 +62,53 @@
     }
 };
 
-class IdleManager : public QWaylandClientExtensionTemplate<IdleManager>, 
public QtWayland::org_kde_kwin_idle
+class IdleTimeoutExt : public IdleTimeout, public 
QtWayland::ext_idle_notification_v1
 {
+    Q_OBJECT
 public:
-    IdleManager()
-        : QWaylandClientExtensionTemplate<IdleManager>(1)
+    IdleTimeoutExt(struct ::ext_idle_notification_v1 *object)
+        : IdleTimeout()
+        , QtWayland::ext_idle_notification_v1(object)
+    {
+    }
+
+    ~IdleTimeoutExt()
+    {
+        destroy();
+    }
+
+protected:
+    void ext_idle_notification_v1_idled() override
+    {
+        Q_EMIT idle();
+    }
+    void ext_idle_notification_v1_resumed() override
+    {
+        Q_EMIT resumeFromIdle();
+    }
+};
+
+class IdleManagerKwin : public 
QWaylandClientExtensionTemplate<IdleManagerKwin>, public 
QtWayland::org_kde_kwin_idle
+{
+public:
+    IdleManagerKwin()
+        : QWaylandClientExtensionTemplate<IdleManagerKwin>(1)
+    {
+#if QTWAYLANDCLIENT_VERSION >= QT_VERSION_CHECK(6, 2, 0)
+        initialize();
+#else
+        // QWaylandClientExtensionTemplate invokes this with a 
QueuedConnection but we want shortcuts
+        // to be inhibited immediately.
+        QMetaObject::invokeMethod(this, "addRegistryListener");
+#endif
+    }
+};
+
+class IdleManagerExt : public QWaylandClientExtensionTemplate<IdleManagerExt>, 
public QtWayland::ext_idle_notifier_v1
+{
+public:
+    IdleManagerExt()
+        : QWaylandClientExtensionTemplate<IdleManagerExt>(1)
     {
 #if QTWAYLANDCLIENT_VERSION >= QT_VERSION_CHECK(6, 2, 0)
         initialize();
@@ -56,20 +118,24 @@
         QMetaObject::invokeMethod(this, "addRegistryListener");
 #endif
     }
+    ~IdleManagerExt()
+    {
+        destroy();
+    }
 };
 
 Poller::Poller(QObject *parent)
     : AbstractSystemPoller(parent)
-    , m_idleManager(new IdleManager)
+    , m_idleManagerKwin(new IdleManagerKwin)
+    , m_idleManagerExt(new IdleManagerExt)
 {
-
 }
 
 Poller::~Poller() = default;
 
 bool Poller::isAvailable()
 {
-    return m_idleManager->isActive();
+    return m_idleManagerKwin->isActive() || m_idleManagerExt->isActive();
 }
 
 void Poller::addTimeout(int nextTimeout)
@@ -133,19 +199,10 @@
 
 void Poller::simulateUserActivity()
 {
-    // the timeout value doesn't matter as we're just calling one method on it 
then deleting
-    QScopedPointer<IdleTimeout> timeout(createTimeout(UINT_MAX));
-    if (timeout) {
-        timeout->simulate_user_activity();
-    }
 }
 
 IdleTimeout* Poller::createTimeout(int timeout)
 {
-    if (!isAvailable()) {
-        return nullptr;
-    }
-
     QPlatformNativeInterface *nativeInterface = 
qGuiApp->platformNativeInterface();
     if (!nativeInterface) {
         return nullptr;
@@ -155,9 +212,13 @@
         return nullptr;
     }
 
-    return new IdleTimeout(m_idleManager->get_idle_timeout(seat, timeout));
+    if (m_idleManagerExt->isActive()) {
+        return new 
IdleTimeoutExt(m_idleManagerExt->get_idle_notification(timeout, seat));
+    }
+    if (m_idleManagerKwin->isActive()) {
+        return new IdleTimeoutKwin(m_idleManagerKwin->get_idle_timeout(seat, 
timeout));
+    }
+    return nullptr;
 }
 
-
-
 #include "poller.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kidletime-5.100.0/src/plugins/wayland/poller.h 
new/kidletime-5.101.0/src/plugins/wayland/poller.h
--- old/kidletime-5.100.0/src/plugins/wayland/poller.h  2022-11-05 
13:28:01.000000000 +0100
+++ new/kidletime-5.101.0/src/plugins/wayland/poller.h  2022-12-03 
10:47:34.000000000 +0100
@@ -10,7 +10,9 @@
 #include <QHash>
 #include <memory>
 
-class IdleManager;
+class IdleManagerKwin;
+class IdleManagerExt;
+
 class IdleTimeout;
 
 class Poller : public AbstractSystemPoller
@@ -42,7 +44,8 @@
     bool initWayland();
     IdleTimeout* createTimeout(int timeout);
 
-    QScopedPointer<IdleManager> m_idleManager;
+    QScopedPointer<IdleManagerKwin> m_idleManagerKwin;
+    QScopedPointer<IdleManagerExt> m_idleManagerExt;
     QHash<int, QSharedPointer<IdleTimeout>> m_timeouts;
     QScopedPointer<IdleTimeout> m_catchResumeTimeout;
 

Reply via email to