Browse Source

libobs-opengl: Add X11 error handler (for logging)

jp9000 10 years ago
parent
commit
ec69bcb15e
1 changed files with 10 additions and 0 deletions
  1. 10 0
      libobs-opengl/gl-x11.c

+ 10 - 0
libobs-opengl/gl-x11.c

@@ -263,6 +263,15 @@ extern void gl_windowinfo_destroy(struct gl_windowinfo *info)
 	bfree(info);
 }
 
+static int x_error_handler(Display *display, XErrorEvent *error)
+{
+	char str[512];
+	XGetErrorText(display, error->error_code, str, sizeof(str));
+
+	blog(LOG_ERROR, "X Error: %s", str);
+	return 0;
+}
+
 extern struct gl_platform *gl_platform_create(gs_device_t *device,
 		const struct gs_init_data *info)
 {
@@ -287,6 +296,7 @@ extern struct gl_platform *gl_platform_create(gs_device_t *device,
 	}
 
 	XSetEventQueueOwner(display, XCBOwnsEventQueue);
+	XSetErrorHandler(x_error_handler);
 
 	/* We assume later that cur_swap is already set. */
 	device->cur_swap = &plat->swap;