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;