2020-09-01 10:47:53 +00:00
|
|
|
From 8c482e031d9891e13d787653135651426661b3b6 Mon Sep 17 00:00:00 2001
|
2020-08-09 11:22:33 +00:00
|
|
|
From: Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
|
|
|
|
Date: Sat, 11 Apr 2020 23:32:16 -0300
|
2020-09-01 10:47:53 +00:00
|
|
|
Subject: [PATCH 12/24] libobs-opengl: Try to use the platform display if
|
2020-08-09 11:22:33 +00:00
|
|
|
available
|
|
|
|
|
|
|
|
We need to ensure we're running all X11 code on the same display.
|
|
|
|
---
|
|
|
|
libobs-opengl/gl-x11-egl.c | 12 +++++++++---
|
|
|
|
1 file changed, 9 insertions(+), 3 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/libobs-opengl/gl-x11-egl.c b/libobs-opengl/gl-x11-egl.c
|
|
|
|
index 5b413995..47b8e420 100644
|
|
|
|
--- a/libobs-opengl/gl-x11-egl.c
|
|
|
|
+++ b/libobs-opengl/gl-x11-egl.c
|
|
|
|
@@ -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;
|
|
|
|
@@ -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;
|
|
|
|
--
|
|
|
|
2.28.0
|
|
|
|
|