forked from pool/systemd
120 lines
3.7 KiB
Diff
120 lines
3.7 KiB
Diff
|
From b5d3e1688133077ca20542a20dcd8919147e72e1 Mon Sep 17 00:00:00 2001
|
||
|
From: Kay Sievers <kay@vrfy.org>
|
||
|
Date: Tue, 11 Mar 2014 22:38:54 +0100
|
||
|
Subject: [PATCH] logind: move lid switch handling from logind-main to
|
||
|
logind-core
|
||
|
|
||
|
../src/login/logind-dbus.c:1352: error: undefined reference to 'manager_set_lid_switch_ignore'
|
||
|
collect2: error: ld returned 1 exit status
|
||
|
make[2]: *** [test-login-tables]
|
||
|
---
|
||
|
src/login/logind-dbus.c | 40 ++++++++++++++++++++++++++++++++++++++++
|
||
|
src/login/logind.c | 40 ----------------------------------------
|
||
|
2 files changed, 40 insertions(+), 40 deletions(-)
|
||
|
|
||
|
diff --git src/login/logind-dbus.c src/login/logind-dbus.c
|
||
|
index c5f9cb3..2ef87f7 100644
|
||
|
--- src/login/logind-dbus.c
|
||
|
+++ src/login/logind-dbus.c
|
||
|
@@ -1305,6 +1305,46 @@ static int bus_manager_log_shutdown(
|
||
|
q, NULL);
|
||
|
}
|
||
|
|
||
|
+static int lid_switch_ignore_handler(sd_event_source *e, uint64_t usec, void *userdata) {
|
||
|
+ Manager *m = userdata;
|
||
|
+
|
||
|
+ assert(e);
|
||
|
+ assert(m);
|
||
|
+
|
||
|
+ m->lid_switch_ignore_event_source = sd_event_source_unref(m->lid_switch_ignore_event_source);
|
||
|
+ return 0;
|
||
|
+}
|
||
|
+
|
||
|
+int manager_set_lid_switch_ignore(Manager *m, usec_t until) {
|
||
|
+ int r;
|
||
|
+
|
||
|
+ assert(m);
|
||
|
+
|
||
|
+ if (until <= now(CLOCK_MONOTONIC))
|
||
|
+ return 0;
|
||
|
+
|
||
|
+ /* We want to ignore the lid switch for a while after each
|
||
|
+ * suspend, and after boot-up. Hence let's install a timer for
|
||
|
+ * this. As long as the event source exists we ignore the lid
|
||
|
+ * switch. */
|
||
|
+
|
||
|
+ if (m->lid_switch_ignore_event_source) {
|
||
|
+ usec_t u;
|
||
|
+
|
||
|
+ r = sd_event_source_get_time(m->lid_switch_ignore_event_source, &u);
|
||
|
+ if (r < 0)
|
||
|
+ return r;
|
||
|
+
|
||
|
+ if (until <= u)
|
||
|
+ return 0;
|
||
|
+
|
||
|
+ r = sd_event_source_set_time(m->lid_switch_ignore_event_source, until);
|
||
|
+ } else
|
||
|
+ r = sd_event_add_monotonic(m->event, &m->lid_switch_ignore_event_source, until, 0, lid_switch_ignore_handler, m);
|
||
|
+
|
||
|
+ return r;
|
||
|
+}
|
||
|
+
|
||
|
static int execute_shutdown_or_sleep(
|
||
|
Manager *m,
|
||
|
InhibitWhat w,
|
||
|
diff --git src/login/logind.c src/login/logind.c
|
||
|
index 03b7753..2d734ff 100644
|
||
|
--- src/login/logind.c
|
||
|
+++ src/login/logind.c
|
||
|
@@ -962,46 +962,6 @@ static int manager_dispatch_idle_action(sd_event_source *s, uint64_t t, void *us
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
-static int lid_switch_ignore_handler(sd_event_source *e, uint64_t usec, void *userdata) {
|
||
|
- Manager *m = userdata;
|
||
|
-
|
||
|
- assert(e);
|
||
|
- assert(m);
|
||
|
-
|
||
|
- m->lid_switch_ignore_event_source = sd_event_source_unref(m->lid_switch_ignore_event_source);
|
||
|
- return 0;
|
||
|
-}
|
||
|
-
|
||
|
-int manager_set_lid_switch_ignore(Manager *m, usec_t until) {
|
||
|
- int r;
|
||
|
-
|
||
|
- assert(m);
|
||
|
-
|
||
|
- if (until <= now(CLOCK_MONOTONIC))
|
||
|
- return 0;
|
||
|
-
|
||
|
- /* We want to ignore the lid switch for a while after each
|
||
|
- * suspend, and after boot-up. Hence let's install a timer for
|
||
|
- * this. As long as the event source exists we ignore the lid
|
||
|
- * switch. */
|
||
|
-
|
||
|
- if (m->lid_switch_ignore_event_source) {
|
||
|
- usec_t u;
|
||
|
-
|
||
|
- r = sd_event_source_get_time(m->lid_switch_ignore_event_source, &u);
|
||
|
- if (r < 0)
|
||
|
- return r;
|
||
|
-
|
||
|
- if (until <= u)
|
||
|
- return 0;
|
||
|
-
|
||
|
- r = sd_event_source_set_time(m->lid_switch_ignore_event_source, until);
|
||
|
- } else
|
||
|
- r = sd_event_add_monotonic(m->event, &m->lid_switch_ignore_event_source, until, 0, lid_switch_ignore_handler, m);
|
||
|
-
|
||
|
- return r;
|
||
|
-}
|
||
|
-
|
||
|
int manager_startup(Manager *m) {
|
||
|
int r;
|
||
|
Seat *seat;
|
||
|
--
|
||
|
1.7.9.2
|
||
|
|