#endif
#include <X11/Xlib.h>
+#include <X11/Xproto.h>
#include <X11/Xmd.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>
static int WindowOnTop( vout_thread_t *, vlc_bool_t );
+static int X11ErrorHandler( Display *, XErrorEvent * );
+
/*****************************************************************************
* Activate: allocate X11 video thread output method
*****************************************************************************
}
if( psz_display ) free( psz_display );
+ /* Replace error handler so we can intercept some non-fatal errors */
+ XSetErrorHandler( X11ErrorHandler );
+
/* Get a screen ID matching the XOpenDisplay return value */
p_vout->p_sys->i_screen = DefaultScreen( p_vout->p_sys->p_display );
return p_image;
}
+/*****************************************************************************
+ * X11ErrorHandler: replace error handler so we can intercept some of them
+ *****************************************************************************/
+static int X11ErrorHandler( Display * display, XErrorEvent * event )
+{
+ /* Ingnore errors on XSetInputFocus()
+ * (they happen when a window is not yet mapped) */
+ if( event->request_code == X_SetInputFocus )
+ {
+ fprintf(stderr, "XSetInputFocus failed\n");
+ return 0;
+ }
+
+ XSetErrorHandler(NULL);
+ return (XSetErrorHandler(X11ErrorHandler))( display, event );
+}
+
#ifdef MODULE_NAME_IS_x11
/*****************************************************************************
* SetPalette: sets an 8 bpp palette