mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-25 23:21:33 +03:00
logind: expose a boolean on the bus explaining whether logind thinks the lid is closed
This copies how we already expose a "Docked" boolean the reflects whether we are in a docking station or not.
This commit is contained in:
parent
a7891d203c
commit
9b9c23daf4
@ -566,6 +566,17 @@ int manager_spawn_autovt(Manager *m, unsigned vtnr) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool manager_is_lid_closed(Manager *m) {
|
||||
Iterator i;
|
||||
Button *b;
|
||||
|
||||
HASHMAP_FOREACH(b, m->buttons, i)
|
||||
if (b->lid_closed)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool manager_is_docked(Manager *m) {
|
||||
Iterator i;
|
||||
Button *b;
|
||||
|
@ -274,6 +274,7 @@ static int property_get_scheduled_shutdown(
|
||||
|
||||
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_handle_action, handle_action, HandleAction);
|
||||
static BUS_DEFINE_PROPERTY_GET(property_get_docked, "b", Manager, manager_is_docked_or_external_displays);
|
||||
static BUS_DEFINE_PROPERTY_GET(property_get_lid_closed, "b", Manager, manager_is_lid_closed);
|
||||
static BUS_DEFINE_PROPERTY_GET_GLOBAL(property_get_compat_user_tasks_max, "t", CGROUP_LIMIT_MAX);
|
||||
static BUS_DEFINE_PROPERTY_GET_REF(property_get_hashmap_size, "t", Hashmap *, (uint64_t) hashmap_size);
|
||||
|
||||
@ -2666,6 +2667,7 @@ 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("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),
|
||||
SD_BUS_PROPERTY("InhibitorsMax", "t", NULL, offsetof(Manager, inhibitors_max), SD_BUS_VTABLE_PROPERTY_CONST),
|
||||
|
@ -146,6 +146,7 @@ int manager_get_idle_hint(Manager *m, dual_timestamp *t);
|
||||
int manager_get_user_by_pid(Manager *m, pid_t pid, User **user);
|
||||
int manager_get_session_by_pid(Manager *m, pid_t pid, Session **session);
|
||||
|
||||
bool manager_is_lid_closed(Manager *m);
|
||||
bool manager_is_docked_or_external_displays(Manager *m);
|
||||
bool manager_is_on_external_power(void);
|
||||
bool manager_all_buttons_ignored(Manager *m);
|
||||
|
Loading…
Reference in New Issue
Block a user