fix #1382
authorRafaël Carré <funman@videolan.org>
Sun, 9 Dec 2007 19:42:02 +0000 (19:42 +0000)
committerRafaël Carré <funman@videolan.org>
Sun, 9 Dec 2007 19:42:02 +0000 (19:42 +0000)
configure.ac
modules/gui/qt4/qt4.cpp

index 7cc7b4b..2c163de 100644 (file)
@@ -5187,6 +5187,9 @@ AS_IF([test "${enable_qt4}" != "no" &&
     [ VLC_ADD_PLUGINS([qt4])
       ALIASES="${ALIASES} qvlc"
       enableqt4=true
+      if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a "${SYS}" != "cygwin"; then
+        AC_CHECK_HEADERS([X11/Xlib.h],[],[AC_MSG_ERROR([You need X11 headers])])
+      fi
       VLC_ADD_LIBS([qt4],[$QT4_LIBS])
       VLC_ADD_CXXFLAGS([qt4],[$QT4_CFLAGS -DQT4LOCALEDIR=\\\\\\\"$($PKG_CONFIG --variable=prefix QtCore)/share/qt4/translations/\\\\\\\"])
       AC_PATH_PROGS(MOC, [moc-qt4 moc], moc,`$PKG_CONFIG --variable=exec_prefix QtCore`/bin)
@@ -5194,9 +5197,9 @@ AS_IF([test "${enable_qt4}" != "no" &&
       AC_PATH_PROGS(UIC, [uic-qt4 uic], uic,`$PKG_CONFIG --variable=exec_prefix QtCore`/bin)
       ],
       AS_IF([test "${enable_qt4}" = "yes"],[
-       AC_MSG_ERROR(QT4 library not found)
+    AC_MSG_ERROR(QT4 library not found)
       ],[
-        AC_MSG_WARN(QT4 library not found)
+    AC_MSG_WARN(QT4 library not found)
       ])
     )
 ])
index 686456b..9f2ca79 100644 (file)
 #include "input_manager.hpp"
 #include "main_interface.hpp"
 
+#ifdef HAVE_X11_XLIB_H
+#include <X11/Xlib.h>
+#endif
+
 #include "../../../share/vlc32x32.xpm"
 
 /*****************************************************************************
@@ -176,13 +180,22 @@ static int Open( vlc_object_t *p_this )
 {
     intf_thread_t *p_intf = (intf_thread_t *)p_this;
     p_intf->pf_run = Run;
-#if defined HAVE_GETENV && defined Q_WS_X11
+#if defined HAVE_GETENV && defined Q_WS_X11 && defined HAVE_X11_XLIB_H
     char *psz_display = getenv( "DISPLAY" );
     if( !psz_display || !*psz_display )
     {
-        msg_Err(p_intf, "no X server");
+        msg_Err( p_intf, "no X server" );
+        return VLC_EGENERIC;
+    }
+    /* Thanks for libqt4 calling exit() in QApplication::QApplication()
+     * instead of returning an error, we have to check for DISPLAY validity */
+    Display *p_display = XOpenDisplay( psz_display );
+    if( !p_display )
+    {
+        msg_Err( p_intf, "Could not connect to X server %s", psz_display );
         return VLC_EGENERIC;
     }
+    XCloseDisplay( p_display );
 #endif
     p_intf->p_sys = (intf_sys_t *)malloc( sizeof( intf_sys_t ) );
     if( !p_intf->p_sys )