From: Carlos Garnacho Date: Wed, 3 Jan 2024 12:51:02 +0000 (+0100) Subject: logind: Mark LidClosed property as "emits change" X-Git-Tag: v256-rc1~1201 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=501d8b8bc6dbb58668d3165998bb5f61d48fb0f6;p=thirdparty%2Fsystemd.git 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 --- 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),