chiark / gitweb /
Use bus_maybe_send_reply() where applicable
[elogind.git] / src / login / logind.h
index 24d705b541c116b2cf559c5271318d89620e36bd..904dc20467100157eecee5a550cefa5f711bc910 100644 (file)
@@ -40,6 +40,7 @@ typedef struct Manager Manager;
 #include "logind-user.h"
 #include "logind-inhibit.h"
 #include "logind-button.h"
+#include "logind-action.h"
 
 struct Manager {
         DBusConnection *bus;
@@ -68,6 +69,9 @@ struct Manager {
 
         unsigned n_autovts;
 
+        unsigned reserve_vt;
+        int reserve_vt_fd;
+
         Seat *vtconsole;
 
         char *cgroup_path;
@@ -87,18 +91,36 @@ struct Manager {
         Hashmap *inhibitor_fds;
         Hashmap *button_fds;
 
-        /* If a shutdown was delayed due to a inhibitor this contains
-           the unit name we are supposed to start after the delay is
-           over */
-        const char *delayed_unit;
-        InhibitWhat delayed_what;
-        usec_t delayed_timestamp;
-
         usec_t inhibit_delay_max;
 
-        HandleButton handle_power_key;
-        HandleButton handle_sleep_key;
-        HandleButton handle_lid_switch;
+        /* If an action is currently being executed or is delayed,
+         * this is != 0 and encodes what is being done */
+        InhibitWhat action_what;
+
+        /* If a shutdown/suspend was delayed due to a inhibitor this
+           contains the unit name we are supposed to start after the
+           delay is over */
+        const char *action_unit;
+
+        /* If a shutdown/suspend is currently executed, then this is
+         * the job of it */
+        char *action_job;
+        usec_t action_timestamp;
+
+        int idle_action_fd; /* the timer_fd */
+        usec_t idle_action_usec;
+        usec_t idle_action_not_before_usec;
+        HandleAction idle_action;
+
+        HandleAction handle_power_key;
+        HandleAction handle_suspend_key;
+        HandleAction handle_hibernate_key;
+        HandleAction handle_lid_switch;
+
+        bool power_key_ignore_inhibited;
+        bool suspend_key_ignore_inhibited;
+        bool hibernate_key_ignore_inhibited;
+        bool lid_switch_ignore_inhibited;
 };
 
 enum {
@@ -107,6 +129,7 @@ enum {
         FD_BUTTON_UDEV,
         FD_CONSOLE,
         FD_BUS,
+        FD_IDLE_ACTION,
         FD_OTHER_BASE
 };
 
@@ -129,6 +152,7 @@ int manager_dispatch_seat_udev(Manager *m);
 int manager_dispatch_vcsa_udev(Manager *m);
 int manager_dispatch_button_udev(Manager *m);
 int manager_dispatch_console(Manager *m);
+int manager_dispatch_idle_action(Manager *m);
 
 int manager_enumerate_devices(Manager *m);
 int manager_enumerate_buttons(Manager *m);