From 501d8b8bc6dbb58668d3165998bb5f61d48fb0f6 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 3 Jan 2024 13:51:02 +0100 Subject: [PATCH] logind: Mark LidClosed property as "emits change" It may be useful for DEs to follow changes on this property, esp. now that recent UPower has removed its own lid handling code. Related: https://gitlab.freedesktop.org/upower/upower/-/commit/07565ef6a1aa4a115f8ce51e259e408edbaed4cc --- man/org.freedesktop.login1.xml | 1 - src/login/logind-button.c | 4 ++++ src/login/logind-dbus.c | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/man/org.freedesktop.login1.xml b/man/org.freedesktop.login1.xml index 581a261c798..f647b1cb5b0 100644 --- a/man/org.freedesktop.login1.xml +++ b/man/org.freedesktop.login1.xml @@ -257,7 +257,6 @@ node /org/freedesktop/login1 { readonly (st) ScheduledShutdown = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly b Docked = ...; - @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly b LidClosed = ...; @org.freedesktop.DBus.Property.EmitsChangedSignal("false") readonly b OnExternalPower = ...; diff --git a/src/login/logind-button.c b/src/login/logind-button.c index 7f95fa7a4f7..14835aedc15 100644 --- a/src/login/logind-button.c +++ b/src/login/logind-button.c @@ -11,6 +11,7 @@ #include "async.h" #include "fd-util.h" #include "logind-button.h" +#include "logind-dbus.h" #include "missing_input.h" #include "string-util.h" @@ -343,6 +344,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u b->lid_closed = true; button_lid_switch_handle_action(b->manager, true); button_install_check_event_source(b); + manager_send_changed(b->manager, "LidClosed", NULL); } else if (ev.code == SW_DOCK) { log_struct(LOG_INFO, @@ -361,6 +363,7 @@ static int button_dispatch(sd_event_source *s, int fd, uint32_t revents, void *u b->lid_closed = false; b->check_event_source = sd_event_source_unref(b->check_event_source); + manager_send_changed(b->manager, "LidClosed", NULL); } else if (ev.code == SW_DOCK) { log_struct(LOG_INFO, @@ -514,6 +517,7 @@ int button_check_switches(Button *b) { b->lid_closed = bitset_get(switches, SW_LID); b->docked = bitset_get(switches, SW_DOCK); + manager_send_changed(b->manager, "LidClosed", NULL); if (b->lid_closed) button_install_check_event_source(b); diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index b310a7cee86..4f8525b46a1 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -3576,7 +3576,7 @@ static const sd_bus_vtable manager_vtable[] = { SD_BUS_PROPERTY("PreparingForSleep", "b", property_get_preparing, 0, 0), SD_BUS_PROPERTY("ScheduledShutdown", "(st)", property_get_scheduled_shutdown, 0, 0), SD_BUS_PROPERTY("Docked", "b", property_get_docked, 0, 0), - SD_BUS_PROPERTY("LidClosed", "b", property_get_lid_closed, 0, 0), + SD_BUS_PROPERTY("LidClosed", "b", property_get_lid_closed, 0, SD_BUS_VTABLE_PROPERTY_EMITS_CHANGE), SD_BUS_PROPERTY("OnExternalPower", "b", property_get_on_external_power, 0, 0), SD_BUS_PROPERTY("RemoveIPC", "b", bus_property_get_bool, offsetof(Manager, remove_ipc), SD_BUS_VTABLE_PROPERTY_CONST), SD_BUS_PROPERTY("RuntimeDirectorySize", "t", NULL, offsetof(Manager, runtime_dir_size), SD_BUS_VTABLE_PROPERTY_CONST), -- 2.47.3