diff options
author | Dan Williams <dan@bigw.org> | 2025-01-23 02:35:44 +0000 |
---|---|---|
committer | Dan Williams <dan@bigw.org> | 2025-01-23 02:35:44 +0000 |
commit | 4e31b7fdda9f341f3d9f1e9d6c8fc9e2ba27bafd (patch) | |
tree | 236b2407c527e030fb898f084ace57e3f02c4649 | |
parent | 18f6190ff233f06c5a2e825dd0db188bfc52e030 (diff) | |
parent | 5eb8203f8eba57aca55f67d63b309522c281e353 (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.c | 7 |
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, |