summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormartin <martin.sandsmark@kde.org>2016-05-25 22:19:17 +0200
committerMichael Stapelberg <stapelberg@users.noreply.github.com>2016-05-25 22:19:17 +0200
commit402254b5752fcf6a8197b92f558cb0c35289fa74 (patch)
tree63377978e9378dd4193545a8e9987f7d523a5c2e
parent9a7604bb35212dcc49e1e108a0631a0906560e5a (diff)
Flush xcb connection after opening fullscreen window (#74)
We need to ensure that the window handle is valid, i. e. the window is actually created and accessible, before returning. This is necessary because we immediately fork after returning, and the child process opens its own X11 connection and expects the window handle to be valid. Fixes #46
-rw-r--r--xcb.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/xcb.c b/xcb.c
index f1a9a76..3e8cd07 100644
--- a/xcb.c
+++ b/xcb.c
@@ -10,6 +10,7 @@
#include <xcb/xcb.h>
#include <xcb/xcb_image.h>
#include <xcb/xcb_atom.h>
+#include <xcb/xcb_aux.h>
#include <stdio.h>
#include <stdlib.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;
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;
}