Skip to content

Commit 8fd4e7f

Browse files
committed
Add more error handling
1 parent 403a952 commit 8fd4e7f

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

gui-daemon/xside.c

+19-3
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,14 @@ int x11_error_handler(Display * dpy, XErrorEvent * ev)
274274
* handled in handle_mfndump/handle_window_dump */
275275
return 0;
276276
}
277+
278+
char error_msg[1024];
279+
XGetErrorText(ev->display, ev->error_code, error_msg, sizeof(error_msg));
280+
int now = (int) time(NULL); // truncate
281+
fprintf(stderr, "[%d] Encountered X Error:\n", now);
282+
fprintf(stderr, error_msg);
283+
284+
277285
#ifdef MAKE_X11_ERRORS_FATAL
278286
/* The exit(1) below will call release_all_mapped_mfns (registerd with
279287
* atexit(3)), which would try to release window images with XShmDetach. We
@@ -393,7 +401,12 @@ static Window mkwindow(Ghandles * g, struct windowdata *vm_window)
393401
XISetMask(xi_mask.mask, XI_KeyRelease);
394402
XISetMask(xi_mask.mask, XI_FocusIn);
395403
XISetMask(xi_mask.mask, XI_FocusOut);
396-
XISelectEvents(g->display, child_win, &xi_mask, 1);
404+
405+
int err = XISelectEvents(g->display, child_win, &xi_mask, 1);
406+
if (err) {
407+
fprintf(stderr, "Failed to subscribe to XI events. ErrCode: %d\n", err);
408+
exit(1);
409+
}
397410
free(xi_mask.mask);
398411
XSync(g->display, False);
399412

@@ -1409,7 +1422,6 @@ static void process_xevent_button(Ghandles * g, const XButtonEvent * ev)
14091422
update_wm_user_time(g, ev->window, ev->time);
14101423

14111424
k.type = ev->type;
1412-
14131425
k.x = ev->x;
14141426
k.y = ev->y;
14151427
k.state = ev->state;
@@ -1901,7 +1913,11 @@ static void send_keymap_notify(Ghandles * g)
19011913
{
19021914
struct msg_hdr hdr;
19031915
char keys[32];
1904-
XQueryKeymap(g->display, keys);
1916+
int err = XQueryKeymap(g->display, keys);
1917+
if (err) {
1918+
fprintf(stderr, "XQueryKeymap failed: %d.\n", err);
1919+
return; // non fatal
1920+
}
19051921
hdr.type = MSG_KEYMAP_NOTIFY;
19061922
hdr.window = 0;
19071923
write_message(g->vchan, hdr, keys);

0 commit comments

Comments
 (0)