diff options
| -rw-r--r-- | swayidle/main.c | 13 | 
1 files changed, 13 insertions, 0 deletions
diff --git a/swayidle/main.c b/swayidle/main.c index 9a76e58c..41eecc41 100644 --- a/swayidle/main.c +++ b/swayidle/main.c @@ -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);  }  | 
