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-10-11 18:00:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kidletime (Old) and /work/SRC/openSUSE:Factory/.kidletime.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kidletime" Tue Oct 11 18:00:01 2022 rev:108 rq:1009001 version:5.99.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kidletime/kidletime.changes 2022-09-13 15:10:19.092799549 +0200 +++ /work/SRC/openSUSE:Factory/.kidletime.new.2275/kidletime.changes 2022-10-11 18:01:53.601730155 +0200 @@ -1,0 +2,13 @@ +Sat Oct 1 15:55:50 UTC 2022 - Christophe Giboudeaux <christo...@krop.fr> + +- Update to 5.99.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/5/5.99.0 +- Changes since 5.98.0: + * .gitlab-ci.yml: enable static builds + * Add Qt6 windows CI support + * Add native wayland plugin + * xsyncbasedpoller ctor initialize m_sync_event + +------------------------------------------------------------------- Old: ---- kidletime-5.98.0.tar.xz kidletime-5.98.0.tar.xz.sig New: ---- kidletime-5.99.0.tar.xz kidletime-5.99.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kidletime.spec ++++++ --- /var/tmp/diff_new_pack.5AzRcX/_old 2022-10-11 18:01:55.285732877 +0200 +++ /var/tmp/diff_new_pack.5AzRcX/_new 2022-10-11 18:01:55.293732890 +0200 @@ -17,7 +17,7 @@ %define lname libKF5IdleTime5 -%define _tar_path 5.98 +%define _tar_path 5.99 # 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,7 +25,7 @@ # Only needed for the package signature condition %bcond_without released Name: kidletime -Version: 5.98.0 +Version: 5.99.0 Release: 0 Summary: User and system idle time reporting singleton License: LGPL-2.1-or-later ++++++ kidletime-5.98.0.tar.xz -> kidletime-5.99.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kidletime-5.98.0/.gitlab-ci.yml new/kidletime-5.99.0/.gitlab-ci.yml --- old/kidletime-5.98.0/.gitlab-ci.yml 2022-09-05 11:27:02.000000000 +0200 +++ new/kidletime-5.99.0/.gitlab-ci.yml 2022-10-01 15:17:27.000000000 +0200 @@ -3,7 +3,10 @@ include: - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml - - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux-static.yml - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux-qt6.yml - - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/windows.yml + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd-qt6.yml + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/windows.yml + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/windows-static.yml + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/windows-qt6.yml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kidletime-5.98.0/.kde-ci.yml new/kidletime-5.99.0/.kde-ci.yml --- old/kidletime-5.98.0/.kde-ci.yml 2022-09-05 11:27:02.000000000 +0200 +++ new/kidletime-5.99.0/.kde-ci.yml 2022-10-01 15:17:27.000000000 +0200 @@ -3,6 +3,10 @@ 'require': 'frameworks/extra-cmake-modules': '@same' +- 'on': ['Linux', 'FreeBSD'] + 'require': + 'libraries/plasma-wayland-protocols': '@latest' + Options: test-before-installing: True require-passing-tests-on: [ 'Linux', 'FreeBSD', 'Windows' ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kidletime-5.98.0/CMakeLists.txt new/kidletime-5.99.0/CMakeLists.txt --- old/kidletime-5.98.0/CMakeLists.txt 2022-09-05 11:27:02.000000000 +0200 +++ new/kidletime-5.99.0/CMakeLists.txt 2022-10-01 15:17:27.000000000 +0200 @@ -1,11 +1,11 @@ cmake_minimum_required(VERSION 3.16) -set(KF_VERSION "5.98.0") # handled by release scripts +set(KF_VERSION "5.99.0") # handled by release scripts project(KIdleTime VERSION ${KF_VERSION}) # ECM setup include(FeatureSummary) -find_package(ECM 5.98.0 NO_MODULE) +find_package(ECM 5.99.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) @@ -40,6 +40,7 @@ if(NOT APPLE) find_package(X11) find_package(XCB COMPONENTS XCB) + find_package(Qt${QT_MAJOR_VERSION}WaylandClient ${REQUIRED_QT_VERSION} CONFIG) endif() if(X11_FOUND) @@ -76,6 +77,12 @@ set(HAVE_X11 FALSE) endif() +if(Qt5WaylandClient_FOUND) + find_package(QtWaylandScanner REQUIRED) + find_package(Wayland 1.9 REQUIRED Client) + find_package(PlasmaWaylandProtocols 1.6.0 CONFIG REQUIRED) +endif() + set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].") option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kidletime-5.98.0/src/CMakeLists.txt new/kidletime-5.99.0/src/CMakeLists.txt --- old/kidletime-5.98.0/src/CMakeLists.txt 2022-09-05 11:27:02.000000000 +0200 +++ new/kidletime-5.99.0/src/CMakeLists.txt 2022-10-01 15:17:27.000000000 +0200 @@ -61,7 +61,7 @@ Devel ) -install(TARGETS KF5IdleTime EXPORT KF5IdleTimeTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) +install(TARGETS KF5IdleTime EXPORT KF5IdleTimeTargets ${KF_INSTALL_TARGETS_DEFAULT_ARGS}) ecm_qt_install_logging_categories( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kidletime-5.98.0/src/plugins/CMakeLists.txt new/kidletime-5.99.0/src/plugins/CMakeLists.txt --- old/kidletime-5.98.0/src/plugins/CMakeLists.txt 2022-09-05 11:27:02.000000000 +0200 +++ new/kidletime-5.99.0/src/plugins/CMakeLists.txt 2022-10-01 15:17:27.000000000 +0200 @@ -14,3 +14,7 @@ add_subdirectory(xsync) endif() endif() + +if (Qt5WaylandClient_FOUND) + add_subdirectory(wayland) +endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kidletime-5.98.0/src/plugins/wayland/CMakeLists.txt new/kidletime-5.99.0/src/plugins/wayland/CMakeLists.txt --- old/kidletime-5.98.0/src/plugins/wayland/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/kidletime-5.99.0/src/plugins/wayland/CMakeLists.txt 2022-10-01 15:17:27.000000000 +0200 @@ -0,0 +1,25 @@ +add_library(KF5IdleTimeWaylandPlugin MODULE) +if (QT_MAJOR_VERSION EQUAL "5") + ecm_add_qtwayland_client_protocol(idletime_plugin_SRCS + PROTOCOL ${PLASMA_WAYLAND_PROTOCOLS_DIR}/idle.xml + BASENAME idle + ) +else() + qt6_generate_wayland_protocol_client_sources(KF5IdleTimeWaylandPlugin FILES + ${PLASMA_WAYLAND_PROTOCOLS_DIR}/idle.xml) +endif() +target_sources(KF5IdleTimeWaylandPlugin PRIVATE poller.cpp ${idletime_plugin_SRCS}) + +target_link_libraries(KF5IdleTimeWaylandPlugin + KF5::IdleTime + Qt${QT_MAJOR_VERSION}::WaylandClient + Qt${QT_MAJOR_VERSION}::GuiPrivate + Wayland::Client +) + +install( + TARGETS + KF5IdleTimeWaylandPlugin + DESTINATION + ${KDE_INSTALL_PLUGINDIR}/kf5/org.kde.kidletime.platforms/ +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kidletime-5.98.0/src/plugins/wayland/poller.cpp new/kidletime-5.99.0/src/plugins/wayland/poller.cpp --- old/kidletime-5.98.0/src/plugins/wayland/poller.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kidletime-5.99.0/src/plugins/wayland/poller.cpp 2022-10-01 15:17:27.000000000 +0200 @@ -0,0 +1,163 @@ +/* + SPDX-FileCopyrightText: 2021 David Edmundson <davidedmund...@kde.org> + + SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL +*/ +#include "poller.h" + +#include <QDebug> +#include <QGuiApplication> +#include <QLoggingCategory> +#include <QWaylandClientExtensionTemplate> +#include <QtWaylandClient/QtWaylandClientVersion> + +#include <qpa/qplatformnativeinterface.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 +{ + Q_OBJECT +public: + IdleTimeout(struct ::org_kde_kwin_idle_timeout* object) + : QObject() + , QtWayland::org_kde_kwin_idle_timeout(object) + {} + + ~IdleTimeout() { + release(); + } +Q_SIGNALS: + void idle(); + void resumeFromIdle(); +protected: + void org_kde_kwin_idle_timeout_idle() override { + Q_EMIT idle(); + } + void org_kde_kwin_idle_timeout_resumed() override { + Q_EMIT resumeFromIdle(); + } +}; + +class IdleManager : public QWaylandClientExtensionTemplate<IdleManager>, public QtWayland::org_kde_kwin_idle +{ +public: + IdleManager() + : QWaylandClientExtensionTemplate<IdleManager>(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 + } +}; + +Poller::Poller(QObject *parent) + : AbstractSystemPoller(parent) + , m_idleManager(new IdleManager) +{ + +} + +Poller::~Poller() = default; + +bool Poller::isAvailable() +{ + return m_idleManager->isActive(); +} + +void Poller::addTimeout(int nextTimeout) +{ + if (m_timeouts.contains(nextTimeout)) { + return; + } + + auto timeout = createTimeout(nextTimeout); + if (!timeout) { + return; + } + + connect(timeout, &IdleTimeout::idle, this, [this, nextTimeout] { + Q_EMIT timeoutReached(nextTimeout); + }); + connect(timeout, &IdleTimeout::resumeFromIdle, this, &Poller::resumingFromIdle); + m_timeouts.insert(nextTimeout, QSharedPointer<IdleTimeout>(timeout)); +} + +void Poller::removeTimeout(int nextTimeout) +{ + m_timeouts.remove(nextTimeout); +} + +QList<int> Poller::timeouts() const +{ + return QList<int>(); +} + +void Poller::catchIdleEvent() +{ + if (m_catchResumeTimeout) { + // already setup + return; + } + if (!isAvailable()) { + return; + } + + m_catchResumeTimeout.reset(createTimeout(0)); + if (!m_catchResumeTimeout) { + return; + } + connect(m_catchResumeTimeout.get(), &IdleTimeout::resumeFromIdle, this, [this] { + stopCatchingIdleEvents(); + Q_EMIT resumingFromIdle(); + }); +} + +void Poller::stopCatchingIdleEvents() +{ + m_catchResumeTimeout.reset(); +} + +int Poller::forcePollRequest() +{ + qCWarning(POLLER) << "This plugin does not support polling idle time"; + return 0; +} + +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; + } + auto seat = static_cast<wl_seat *>(nativeInterface->nativeResourceForIntegration("wl_seat")); + if (!seat) { + return nullptr; + } + + return new IdleTimeout(m_idleManager->get_idle_timeout(seat, timeout)); +} + + + +#include "poller.moc" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kidletime-5.98.0/src/plugins/wayland/poller.h new/kidletime-5.99.0/src/plugins/wayland/poller.h --- old/kidletime-5.98.0/src/plugins/wayland/poller.h 1970-01-01 01:00:00.000000000 +0100 +++ new/kidletime-5.99.0/src/plugins/wayland/poller.h 2022-10-01 15:17:27.000000000 +0200 @@ -0,0 +1,49 @@ +/* + SPDX-FileCopyrightText: 2021 David Edmundson <davidedmund...@kde.org> + + SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL +*/ +#pragma once + +#include "abstractsystempoller.h" + +#include <QHash> +#include <memory> + +class IdleManager; +class IdleTimeout; + +class Poller : public AbstractSystemPoller +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.kde.kidletime.AbstractSystemPoller" FILE "wayland.json") + Q_INTERFACES(AbstractSystemPoller) + +public: + explicit Poller(QObject *parent = nullptr); + ~Poller() override; + + bool isAvailable() override; + bool setUpPoller() override { + return true; + } + void unloadPoller() override {} + +public Q_SLOTS: + void addTimeout(int nextTimeout) override; + void removeTimeout(int nextTimeout) override; + QList<int> timeouts() const override; + int forcePollRequest() override; + void catchIdleEvent() override; + void stopCatchingIdleEvents() override; + void simulateUserActivity() override; + +private: + bool initWayland(); + IdleTimeout* createTimeout(int timeout); + + QScopedPointer<IdleManager> m_idleManager; + QHash<int, QSharedPointer<IdleTimeout>> m_timeouts; + QScopedPointer<IdleTimeout> m_catchResumeTimeout; + +}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kidletime-5.98.0/src/plugins/wayland/wayland.json new/kidletime-5.99.0/src/plugins/wayland/wayland.json --- old/kidletime-5.98.0/src/plugins/wayland/wayland.json 1970-01-01 01:00:00.000000000 +0100 +++ new/kidletime-5.99.0/src/plugins/wayland/wayland.json 2022-10-01 15:17:27.000000000 +0200 @@ -0,0 +1,3 @@ +{ + "platforms": ["wayland", "wayland-egl"] +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kidletime-5.98.0/src/plugins/xsync/xsyncbasedpoller.cpp new/kidletime-5.99.0/src/plugins/xsync/xsyncbasedpoller.cpp --- old/kidletime-5.98.0/src/plugins/xsync/xsyncbasedpoller.cpp 2022-09-05 11:27:02.000000000 +0200 +++ new/kidletime-5.99.0/src/plugins/xsync/xsyncbasedpoller.cpp 2022-10-01 15:17:27.000000000 +0200 @@ -68,6 +68,7 @@ , m_display(QX11Info::display()) #endif , m_xcb_connection(nullptr) + , m_sync_event(0) , m_idleCounter(None) , m_resetAlarm(None) , m_available(true)