Merge pull request #3381 from oscarwcl/swayidle-inhibit-sleep

swayidle: Fix sleep inhibitor not being acquired
This commit is contained in:
emersion 2019-01-07 13:34:04 +01:00 committed by GitHub
commit bd59602711
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,6 +1,7 @@
#define _POSIX_C_SOURCE 200809L
#include <assert.h>
#include <errno.h>
#include <fcntl.h>
#include <getopt.h>
#include <pthread.h>
#include <signal.h>
@ -104,9 +105,21 @@ static void acquire_sleep_lock(void) {
if (ret < 0) {
wlr_log(WLR_ERROR, "Failed to parse D-Bus response for Inhibit: %s",
strerror(-ret));
sd_bus_error_free(&error);
sd_bus_message_unref(msg);
return;
} else {
wlr_log(WLR_INFO, "Got sleep lock: %d", lock_fd);
}
// sd_bus_message_unref closes the file descriptor so we need
// to copy it beforehand
lock_fd = fcntl(lock_fd, F_DUPFD_CLOEXEC, 3);
if (lock_fd < 0) {
wlr_log(WLR_ERROR, "Failed to copy sleep lock fd: %s",
strerror(errno));
}
sd_bus_error_free(&error);
sd_bus_message_unref(msg);
}