Browse Source

Merge pull request #4 from i3/master

Merge upstream commits
master
Chris Guillott 9 years ago
parent
commit
de6bea2603
  1. 18
      i3lock.c
  2. 4
      xcb.c

18
i3lock.c

@ -657,6 +657,22 @@ static void xcb_prepare_cb(EV_P_ ev_prepare *w, int revents) {
xcb_flush(conn); xcb_flush(conn);
} }
/*
* Try closing logind sleep lock fd passed over from xss-lock, in case we're
* being run from there.
*
*/
static void maybe_close_sleep_lock_fd(void) {
const char *sleep_lock_fd = getenv("XSS_SLEEP_LOCK_FD");
char *endptr;
if (sleep_lock_fd && *sleep_lock_fd != 0) {
long int fd = strtol(sleep_lock_fd, &endptr, 10);
if (*endptr == 0) {
close(fd);
}
}
}
/* /*
* Instead of polling the X connection socket we leave this to * Instead of polling the X connection socket we leave this to
* xcb_poll_for_event() which knows better than we can ever know. * xcb_poll_for_event() which knows better than we can ever know.
@ -691,6 +707,7 @@ static void xcb_check_cb(EV_P_ ev_check *w, int revents) {
break; break;
case XCB_MAP_NOTIFY: case XCB_MAP_NOTIFY:
maybe_close_sleep_lock_fd();
if (!dont_fork) { if (!dont_fork) {
/* After the first MapNotify, we never fork again. We don’t /* After the first MapNotify, we never fork again. We don’t
* expect to get another MapNotify, but better be sure */ * expect to get another MapNotify, but better be sure */
@ -1131,6 +1148,7 @@ int main(int argc, char *argv[]) {
if (pid == 0) { if (pid == 0) {
/* Child */ /* Child */
close(xcb_get_file_descriptor(conn)); close(xcb_get_file_descriptor(conn));
maybe_close_sleep_lock_fd();
raise_loop(win); raise_loop(win);
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
} }

4
xcb.c

@ -10,6 +10,7 @@
#include <xcb/xcb.h> #include <xcb/xcb.h>
#include <xcb/xcb_image.h> #include <xcb/xcb_image.h>
#include <xcb/xcb_atom.h> #include <xcb/xcb_atom.h>
#include <xcb/xcb_aux.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdbool.h> #include <stdbool.h>
@ -150,6 +151,9 @@ xcb_window_t open_fullscreen_window(xcb_connection_t *conn, xcb_screen_t *scr, c
values[0] = XCB_STACK_MODE_ABOVE; values[0] = XCB_STACK_MODE_ABOVE;
xcb_configure_window(conn, win, XCB_CONFIG_WINDOW_STACK_MODE, values); xcb_configure_window(conn, win, XCB_CONFIG_WINDOW_STACK_MODE, values);
/* Ensure that the window is created and set up before returning */
xcb_aux_sync(conn);
return win; return win;
} }

Loading…
Cancel
Save