Ver Fonte

UI: Set the Unix platform on startup

Move the OBS_USE_EGL environment variable check to obs-app.cpp,
and set the OBS platform to be either OBS_NIX_PLATFORM_X11_GLX
or OBS_NIX_PLATFORM_X11_EGL.
Georges Basile Stavracas Neto há 5 anos atrás
pai
commit
27d0182fdb
3 ficheiros alterados com 12 adições e 4 exclusões
  1. 4 0
      UI/obs-app.cpp
  2. 6 4
      libobs-opengl/gl-nix.c
  3. 2 0
      libobs-opengl/gl-nix.h

+ 4 - 0
UI/obs-app.cpp

@@ -1392,6 +1392,10 @@ bool OBSApp::OBSInit()
 #if !defined(_WIN32) && !defined(__APPLE__)
 	obs_set_nix_platform(OBS_NIX_PLATFORM_X11_GLX);
 	if (QApplication::platformName() == "xcb") {
+		if (getenv("OBS_USE_EGL")) {
+			blog(LOG_INFO, "Using EGL/X11");
+			obs_set_nix_platform(OBS_NIX_PLATFORM_X11_EGL);
+		}
 		obs_set_nix_platform_display(QX11Info::display());
 	}
 #endif

+ 6 - 4
libobs-opengl/gl-nix.c

@@ -25,11 +25,13 @@ static void init_winsys(void)
 {
 	assert(gl_vtable == NULL);
 
-	if (getenv("OBS_USE_EGL")) {
-		gl_vtable = gl_x11_egl_get_winsys_vtable();
-		blog(LOG_INFO, "Using EGL/X11");
-	} else {
+	switch (obs_get_nix_platform()) {
+	case OBS_NIX_PLATFORM_X11_GLX:
 		gl_vtable = gl_x11_glx_get_winsys_vtable();
+		break;
+	case OBS_NIX_PLATFORM_X11_EGL:
+		gl_vtable = gl_x11_egl_get_winsys_vtable();
+		break;
 	}
 
 	assert(gl_vtable != NULL);

+ 2 - 0
libobs-opengl/gl-nix.h

@@ -17,6 +17,8 @@
 
 #pragma once
 
+#include <obs-nix-platform.h>
+
 #include "gl-subsystem.h"
 
 struct gl_winsys_vtable {