Skip to content

Commit

Permalink
libobs-opengl: Try to use the platform display if available
Browse files Browse the repository at this point in the history
We need to ensure we're running all X11 code on the same display.
  • Loading branch information
GeorgesStavracas committed Aug 10, 2020
1 parent 588d2b6 commit c606fcd
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions libobs-opengl/gl-x11-egl.c
Original file line number Diff line number Diff line change
Expand Up @@ -324,14 +324,19 @@ static void gl_x11_egl_windowinfo_destroy(struct gl_windowinfo *info)
bfree(info);
}

static Display *open_windowless_display(void)
static Display *open_windowless_display(Display *platform_display)
{
Display *display = XOpenDisplay(NULL);
Display *display;
xcb_connection_t *xcb_conn;
xcb_screen_iterator_t screen_iterator;
xcb_screen_t *screen;
int screen_num;

if (platform_display)
display = platform_display;
else
display = XOpenDisplay(NULL);

if (!display) {
blog(LOG_ERROR, "Unable to open new X connection!");
return NULL;
Expand Down Expand Up @@ -392,7 +397,8 @@ static struct gl_platform *gl_x11_egl_platform_create(gs_device_t *device,
For an explanation see here: http://xcb.freedesktop.org/MixingCalls/
Essentially, EGL requires Xlib. Everything else we use xcb. */
struct gl_platform *plat = bmalloc(sizeof(struct gl_platform));
Display *display = open_windowless_display();
Display *platform_display = obs_get_nix_platform_display();
Display *display = open_windowless_display(platform_display);

if (!display) {
goto fail_display_open;
Expand Down

0 comments on commit c606fcd

Please sign in to comment.