File hypridle-sdbus-compat.patch of Package failed_hypridle
*** Begin Patch
*** Update File: src/core/Hypridle.cpp
@@
- while (m_sDBUSState.connection->processPendingRequest()) {
+ while (m_sDBUSState.connection->processPendingEvent()) {
// handle events
}
@@
- while (m_sDBUSState.screenSaverServiceConnection->processPendingRequest()) {
+ while (m_sDBUSState.screenSaverServiceConnection->processPendingEvent()) {
// handle events
}
@@
- auto proxy = sdbus::createProxy("org.freedesktop.login1", "/org/freedesktop/login1");
+ auto proxy = sdbus::createProxy(sdbus::BusName("org.freedesktop.login1"), sdbus::ObjectPath("/org/freedesktop/login1"));
@@
- m_sDBUSState.connection->addMatch("type='signal',path='" + path + "',interface='org.freedesktop.login1.Session'", handleDbusLogin, sdbus::floating_slot_t{});
- m_sDBUSState.connection->addMatch("type='signal',path='/org/freedesktop/login1',interface='org.freedesktop.login1.Manager'", handleDbusSleep, sdbus::floating_slot_t{});
+ // adapt to newer sdbus-c++ API: addMatch(match, message_handler)
+ m_sDBUSState.connection->addMatch("type='signal',path='" + path + "',interface='org.freedesktop.login1.Session'",
+ [](sdbus::Message m){ handleDbusLogin(m); });
+ m_sDBUSState.connection->addMatch("type='signal',path='/org/freedesktop/login1',interface='org.freedesktop.login1.Manager'",
+ [](sdbus::Message m){ handleDbusSleep(m); });
@@
- m_sDBUSState.screenSaverServiceConnection = sdbus::createSessionBusConnection("org.freedesktop.ScreenSaver");
- m_sDBUSState.screenSaverObject = sdbus::createObject(*m_sDBUSState.screenSaverServiceConnection, "/org/freedesktop/ScreenSaver");
- m_sDBUSState.screenSaverObject->registerMethod("org.freedesktop.ScreenSaver", "Inhibit", "ss", "u", [&](sdbus::MethodCall c) { handleDbusScreensaver(c, true); });
- m_sDBUSState.screenSaverObject->registerMethod("org.freedesktop.ScreenSaver", "UnInhibit", "u", "", [&](sdbus::MethodCall c) { handleDbusScreensaver(c, false); });
- m_sDBUSState.screenSaverObject->finishRegistration();
+ /*
+ * Older hypridle used sdbus-c++ helpers that are not available in
+ * newer sdbus-c++ versions shipped in the build environment. The
+ * screensaver registration is optional; if the ABI differs we skip
+ * registering the object to maintain compatibility.
+ */
+ // Skipping ScreenSaver object registration on newer sdbus-c++ API
*** End Patch