aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-07-12 12:47:12 +0100
committerGitHub <noreply@github.com>2018-07-12 12:47:12 +0100
commitd8bbdf3bd5edce03c550bb0982ac997392ac5711 (patch)
tree33ee06b7d9fb6daa41835a5ab5a13ca0764dcd4e
parente226e2c01154f3c7d9481655684417635e003c38 (diff)
parent40fe252c2dea81c5a248c16b6c1b80e57b6a6a70 (diff)
Merge pull request #1128 from agx/unbreak-xvfb
Unbreak xvfb
-rw-r--r--backend/x11/backend.c3
-rw-r--r--backend/x11/output.c10
2 files changed, 11 insertions, 2 deletions
diff --git a/backend/x11/backend.c b/backend/x11/backend.c
index cbe4833b..e0f5d6e7 100644
--- a/backend/x11/backend.c
+++ b/backend/x11/backend.c
@@ -258,12 +258,13 @@ struct wlr_backend *wlr_x11_backend_create(struct wl_display *display,
int fd = xcb_get_file_descriptor(x11->xcb_conn);
struct wl_event_loop *ev = wl_display_get_event_loop(display);
- int events = WL_EVENT_READABLE | WL_EVENT_ERROR | WL_EVENT_HANGUP;
+ uint32_t events = WL_EVENT_READABLE | WL_EVENT_ERROR | WL_EVENT_HANGUP;
x11->event_source = wl_event_loop_add_fd(ev, fd, events, x11_event, x11);
if (!x11->event_source) {
wlr_log(WLR_ERROR, "Could not create event source");
goto error_display;
}
+ wl_event_source_check(x11->event_source);
x11->screen = xcb_setup_roots_iterator(xcb_get_setup(x11->xcb_conn)).data;
diff --git a/backend/x11/output.c b/backend/x11/output.c
index 9f8918ab..151807dd 100644
--- a/backend/x11/output.c
+++ b/backend/x11/output.c
@@ -47,8 +47,16 @@ static bool output_set_custom_mode(struct wlr_output *wlr_output,
output_set_refresh(&output->wlr_output, refresh);
const uint32_t values[] = { width, height };
- xcb_configure_window(x11->xcb_conn, output->win,
+ xcb_void_cookie_t cookie = xcb_configure_window_checked(x11->xcb_conn, output->win,
XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT, values);
+
+ xcb_generic_error_t *error;
+ if ((error = xcb_request_check(x11->xcb_conn, cookie))) {
+ wlr_log(WLR_ERROR, "Could not set window size to %dx%d\n", width, height);
+ free(error);
+ return false;
+ }
+
return true;
}