Browse Source

Fix getting the X11 display with the Qt ui

BtbN 11 years ago
parent
commit
a31e938c2b
3 changed files with 12 additions and 7 deletions
  1. 1 6
      libobs-opengl/gl-x11.c
  2. 6 1
      obs/CMakeLists.txt
  3. 5 0
      obs/qt-wrappers.cpp

+ 1 - 6
libobs-opengl/gl-x11.c

@@ -59,12 +59,7 @@ extern struct gl_windowinfo *gl_windowinfo_create(struct gs_init_data *info)
 {
 	struct gl_windowinfo *wi = bzalloc(sizeof(struct gl_windowinfo));
 	wi->id = info->window.id;
-	/* wi->display = info->window.display; */
-
-	/*
-		The above no longer works with Qt.
-		Let's hope it continues to work.
-	*/
+	wi->display = info->window.display;
 
 	return wi;
 }

+ 6 - 1
obs/CMakeLists.txt

@@ -31,6 +31,8 @@ elseif(APPLE)
 
 	add_definitions(-fobjc-arc)
 elseif(UNIX)
+        find_package(Qt5X11Extras REQUIRED)
+
 	set(obs_PLATFORM_SOURCES
 		platform-x11.cpp)
 
@@ -44,6 +46,9 @@ elseif(UNIX)
 	set(obs_PLATFORM_LIBRARIES
 		${X11_LIBRARIES}
 		${X11_Xinerama_LIB})
+
+        set(obs_PLATFORM_QT_MODULES
+                X11Extras)
 endif()
 
 set(obs_SOURCES
@@ -87,7 +92,7 @@ add_executable(obs WIN32
 	${obs_UI_HEADERS}
 	${obs_QRC_SOURCES})
 
-qt5_use_modules(obs Widgets)
+qt5_use_modules(obs Widgets ${obs_PLATFORM_QT_MODULES})
 
 if(WIN32)
 	if(CMAKE_SIZEOF_VOID_P EQUAL 8)

+ 5 - 0
obs/qt-wrappers.cpp

@@ -20,6 +20,10 @@
 #include <QWidget>
 #include <QMessageBox>
 
+#if !defined(_WIN32) && !defined(__APPLE__)
+#include <QX11Info>
+#endif
+
 static inline void OBSErrorBoxva(QWidget *parent, const char *msg, va_list args)
 {
 	char full_message[4096];
@@ -44,5 +48,6 @@ void QTToGSWindow(WId windowId, gs_window &gswindow)
 	gswindow.view = (id)windowId;
 #else
 	gswindow.id = windowId;
+	gswindow.display = QX11Info::display();
 #endif
 }