Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package knighttime6 for openSUSE:Factory 
checked in at 2026-05-13 21:37:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/knighttime6 (Old)
 and      /work/SRC/openSUSE:Factory/.knighttime6.new.1966 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "knighttime6"

Wed May 13 21:37:35 2026 rev:12 rq:1352841 version:6.6.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/knighttime6/knighttime6.changes  2026-04-10 
17:49:59.586344149 +0200
+++ /work/SRC/openSUSE:Factory/.knighttime6.new.1966/knighttime6.changes        
2026-05-13 21:38:04.416580881 +0200
@@ -1,0 +2,10 @@
+Tue May 12 13:58:07 UTC 2026 - Fabian Vogt <[email protected]>
+
+- Update to 6.6.5:
+  * New bugfix release
+  * For more details see https://kde.org/announcements/plasma/6/6.6.5
+- Changes since 6.6.4:
+  * Update version for new release 6.6.5
+  * Resubscribe to the daemon if it is restarted
+
+-------------------------------------------------------------------

Old:
----
  knighttime-6.6.4.tar.xz
  knighttime-6.6.4.tar.xz.sig

New:
----
  knighttime-6.6.5.tar.xz
  knighttime-6.6.5.tar.xz.sig

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

Other differences:
------------------
++++++ knighttime6.spec ++++++
--- /var/tmp/diff_new_pack.b6HEwh/_old  2026-05-13 21:38:06.616671237 +0200
+++ /var/tmp/diff_new_pack.b6HEwh/_new  2026-05-13 21:38:06.640672223 +0200
@@ -26,7 +26,7 @@
 %{!?_plasma6_version: %define _plasma6_version %(echo %{_plasma6_bugfix} | awk 
-F. '{print $1"."$2}')}
 %bcond_without released
 Name:           knighttime6
-Version:        6.6.4
+Version:        6.6.5
 Release:        0
 Summary:        Day-night cycle helper library
 License:        LGPL-2.1-or-later

++++++ knighttime-6.6.4.tar.xz -> knighttime-6.6.5.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/knighttime-6.6.4/CMakeLists.txt 
new/knighttime-6.6.5/CMakeLists.txt
--- old/knighttime-6.6.4/CMakeLists.txt 2026-04-07 09:55:26.000000000 +0200
+++ new/knighttime-6.6.5/CMakeLists.txt 2026-05-12 12:25:05.000000000 +0200
@@ -4,13 +4,13 @@
 
 cmake_minimum_required(VERSION 3.16)
 
-set(PROJECT_VERSION "6.6.4")
+set(PROJECT_VERSION "6.6.5")
 project(KNightTime VERSION ${PROJECT_VERSION})
 
 set(CMAKE_CXX_STANDARD 23)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
 
-set(PROJECT_DEP_VERSION "6.6.4")
+set(PROJECT_DEP_VERSION "6.6.5")
 set(QT_MIN_VERSION "6.10.0")
 set(KF6_MIN_VERSION "6.22.0")
 set(KDE_COMPILERSETTINGS_LEVEL "5.82")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/knighttime-6.6.4/src/daemon/org.kde.knighttimed.desktop.in 
new/knighttime-6.6.5/src/daemon/org.kde.knighttimed.desktop.in
--- old/knighttime-6.6.4/src/daemon/org.kde.knighttimed.desktop.in      
2026-04-07 09:55:26.000000000 +0200
+++ new/knighttime-6.6.5/src/daemon/org.kde.knighttimed.desktop.in      
2026-05-12 12:25:05.000000000 +0200
@@ -7,6 +7,7 @@
 Name[ar]=خدمة وقت الليل
 Name[ca]=Servei d'hora de nit
 Name[ca@valencia]=Servei prompte de nit
+Name[cs]=Noční služba
 Name[de]=Nachtzeit-Dienst
 Name[es]=Servicio de hora nocturna
 Name[eu]=Gaueko ordu zerbitzua
@@ -28,6 +29,7 @@
 Name[pl]=Usługa nocnych barw
 Name[pt_BR]=Serviço de hora noturna
 Name[ro]=Serviciu de oră nocturnă
+Name[sk]=Služba nočného času
 Name[sl]=Storitev nočnega časa
 Name[sv]=Nattjänst
 Name[ta]=இரவு நேர செவை
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/knighttime-6.6.4/src/kdarklightschedulesubscription.cpp 
new/knighttime-6.6.5/src/kdarklightschedulesubscription.cpp
--- old/knighttime-6.6.4/src/kdarklightschedulesubscription.cpp 2026-04-07 
09:55:26.000000000 +0200
+++ new/knighttime-6.6.5/src/kdarklightschedulesubscription.cpp 2026-05-12 
12:25:05.000000000 +0200
@@ -31,31 +31,16 @@
 KDarkLightScheduleSubscription::KDarkLightScheduleSubscription(QObject *parent)
     : QObject(parent)
 {
-    QDBusConnection::sessionBus().connect(QStringLiteral("org.kde.NightTime"), 
QStringLiteral("/org/kde/NightTime/Manager"), 
QStringLiteral("org.kde.NightTime.Manager"), QStringLiteral("Refreshed"), this, 
SLOT(OnRefreshed(QVariantMap)));
+    auto bus = QDBusConnection::sessionBus();
+    bus.connect(QStringLiteral("org.kde.NightTime"), 
QStringLiteral("/org/kde/NightTime/Manager"), 
QStringLiteral("org.kde.NightTime.Manager"), QStringLiteral("Refreshed"), this, 
SLOT(OnRefreshed(QVariantMap)));
 
-    auto message = 
QDBusMessage::createMethodCall(QStringLiteral("org.kde.NightTime"), 
QStringLiteral("/org/kde/NightTime/Manager"), 
QStringLiteral("org.kde.NightTime.Manager"), QStringLiteral("Subscribe"));
-    message.setArguments({QVariantMap()});
-    auto pendingCall = QDBusConnection::sessionBus().asyncCall(message);
+    m_daemonWatcher = 
std::make_unique<QDBusServiceWatcher>(QStringLiteral("org.kde.NightTime"), bus);
+    connect(m_daemonWatcher.get(), &QDBusServiceWatcher::serviceRegistered,
+            this, &KDarkLightScheduleSubscription::OnDaemonRegistered);
+    connect(m_daemonWatcher.get(), &QDBusServiceWatcher::serviceUnregistered,
+            this, &KDarkLightScheduleSubscription::OnDaemonUnregistered);
 
-    auto watcher = new QDBusPendingCallWatcher(pendingCall);
-    auto self = QPointer(this);
-    connect(watcher, &QDBusPendingCallWatcher::finished, qApp, 
[self](QDBusPendingCallWatcher *watcher) {
-        watcher->deleteLater();
-
-        if (watcher->isError()) {
-            qCWarning(KNIGHTTIME) << "Subscribe() failed:" << watcher->error();
-            return;
-        }
-
-        QDBusPendingReply<QVariantMap> reply = *watcher;
-        if (self) {
-            self->OnSubscribed(reply.value());
-        } else {
-            auto message = 
QDBusMessage::createMethodCall(QStringLiteral("org.kde.NightTime"), 
QStringLiteral("/org/kde/NightTime/Manager"), 
QStringLiteral("org.kde.NightTime.Manager"), QStringLiteral("Unsubscribe"));
-            
message.setArguments({reply.value().value(QStringLiteral("Cookie"))});
-            QDBusConnection::sessionBus().asyncCall(message);
-        }
-    });
+    subscribe();
 }
 
 KDarkLightScheduleSubscription::~KDarkLightScheduleSubscription()
@@ -99,6 +84,59 @@
     }
 }
 
+void KDarkLightScheduleSubscription::OnDaemonRegistered()
+{
+    // Usually, if we start the daemon, we will get the reply for the 
Subscribe request first, then
+    // we will get notified that the daemon service has become available. 
However, just to be sure,
+    // this code also handles when things are vice versa.
+    //
+    // If there is an in-flight subscribe request (but it fails) and the 
daemon dies and it is started
+    // again, this code assumes that the error reply will be processed before 
this slot gets called.
+
+    if (!m_cookie && !m_cookieWatcher) {
+        subscribe();
+    }
+}
+
+void KDarkLightScheduleSubscription::OnDaemonUnregistered()
+{
+    m_cookie.reset();
+
+    // Avoid resetting the cookie watcher. The subscribe request could have 
been sent around the
+    // same time the daemon has been unregistered. In which case, the daemon 
will be started again.
+}
+
+void KDarkLightScheduleSubscription::subscribe()
+{
+    auto message = 
QDBusMessage::createMethodCall(QStringLiteral("org.kde.NightTime"), 
QStringLiteral("/org/kde/NightTime/Manager"), 
QStringLiteral("org.kde.NightTime.Manager"), QStringLiteral("Subscribe"));
+    message.setArguments({QVariantMap()});
+    auto pendingCall = QDBusConnection::sessionBus().asyncCall(message);
+
+    m_cookieWatcher = new QDBusPendingCallWatcher(pendingCall);
+    connect(m_cookieWatcher, &QDBusPendingCallWatcher::finished, qApp, [self = 
QPointer(this)](QDBusPendingCallWatcher *watcher) {
+        watcher->deleteLater();
+
+        if (watcher->isError()) {
+            if (self && self->m_cookieWatcher == watcher) {
+                self->m_cookieWatcher = nullptr;
+            }
+            qCWarning(KNIGHTTIME) << "Subscribe() failed:" << watcher->error();
+            return;
+        }
+
+        QDBusPendingReply<QVariantMap> reply = *watcher;
+        if (self && self->m_cookieWatcher == watcher) {
+            self->m_cookieWatcher = nullptr;
+
+            self->OnSubscribed(reply.value());
+        } else {
+            auto message = 
QDBusMessage::createMethodCall(QStringLiteral("org.kde.NightTime"), 
QStringLiteral("/org/kde/NightTime/Manager"), 
QStringLiteral("org.kde.NightTime.Manager"), QStringLiteral("Unsubscribe"));
+            
message.setArguments({reply.value().value(QStringLiteral("Cookie"))});
+            QDBusConnection::sessionBus().asyncCall(message);
+        }
+    });
+}
+
 void KDarkLightScheduleSubscription::update(const QVariant &data)
 {
     const auto dbusSchedule = 
qdbus_cast<KNightTimeDbusSchedule>(data.value<QDBusArgument>());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/knighttime-6.6.4/src/kdarklightschedulesubscription_p.h 
new/knighttime-6.6.5/src/kdarklightschedulesubscription_p.h
--- old/knighttime-6.6.4/src/kdarklightschedulesubscription_p.h 2026-04-07 
09:55:26.000000000 +0200
+++ new/knighttime-6.6.5/src/kdarklightschedulesubscription_p.h 2026-05-12 
12:25:05.000000000 +0200
@@ -8,6 +8,8 @@
 
 #include "kdarklightschedule.h"
 
+#include <QDBusPendingCallWatcher>
+#include <QDBusServiceWatcher>
 #include <QObject>
 
 class KDarkLightScheduleSubscription : public QObject
@@ -29,11 +31,16 @@
 private Q_SLOTS:
     void OnSubscribed(const QVariantMap &data);
     void OnRefreshed(const QVariantMap &data);
+    void OnDaemonRegistered();
+    void OnDaemonUnregistered();
 
 private:
+    void subscribe();
     void update(const QVariant &data);
 
+    std::unique_ptr<QDBusServiceWatcher> m_daemonWatcher;
     std::optional<KDarkLightSchedule> m_schedule;
     QString m_state;
+    QDBusPendingCallWatcher *m_cookieWatcher = nullptr;
     std::optional<uint> m_cookie;
 };

Reply via email to