aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dan@bigw.org>2025-01-23 02:35:44 +0000
committerDan Williams <dan@bigw.org>2025-01-23 02:35:44 +0000
commit4e31b7fdda9f341f3d9f1e9d6c8fc9e2ba27bafd (patch)
tree236b2407c527e030fb898f084ace57e3f02c4649
parent18f6190ff233f06c5a2e825dd0db188bfc52e030 (diff)
parent5eb8203f8eba57aca55f67d63b309522c281e353 (diff)
Merge request !1274 from 'resume-inhibitor-crash'
suspend: support logind not sending PrepareForSleep(true) https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/1274 Closes #949
-rw-r--r--src/mm-sleep-monitor-systemd.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/mm-sleep-monitor-systemd.c b/src/mm-sleep-monitor-systemd.c
index 99814386..c432a416 100644
--- a/src/mm-sleep-monitor-systemd.c
+++ b/src/mm-sleep-monitor-systemd.c
@@ -114,7 +114,12 @@ inhibit_done (GObject *source,
static void
take_inhibitor (MMSleepMonitor *self)
{
- g_assert (self->inhibit_fd == -1);
+ if (self->inhibit_fd != -1) {
+ // logind didn't send us a `PrepareForSleep(true)` so we didn't drop our previous inhibitor.
+ // Just reuse it.
+ mm_obj_warn (self, "logind did not send sleep notification! Taking over existing inhibitor.");
+ return;
+ }
mm_obj_dbg (self, "taking systemd sleep inhibitor");
g_dbus_proxy_call_with_unix_fd_list (self->sd_proxy,