vis,
xswa_mask, &xswa
);
- if (window)
- XSelectInput(display, window, x11_event_mask);
+ if (!window)
+ return None;
+
+ XSelectInput(display, window, x11_event_mask);
return window;
}
}
static gboolean
+gst_vaapi_window_x11_show(GstVaapiWindow *window)
+{
+ GstVaapiWindowX11Private * const priv = GST_VAAPI_WINDOW_X11(window)->priv;
+ Display * const dpy = GST_VAAPI_DISPLAY_XDISPLAY(priv->display);
+
+ x11_trap_errors();
+ XMapWindow(dpy, priv->xid);
+ x11_wait_event(dpy, priv->xid, MapNotify);
+ return x11_untrap_errors() == 0;
+}
+
+static gboolean
+gst_vaapi_window_x11_hide(GstVaapiWindow *window)
+{
+ GstVaapiWindowX11Private * const priv = GST_VAAPI_WINDOW_X11(window)->priv;
+ Display * const dpy = GST_VAAPI_DISPLAY_XDISPLAY(priv->display);
+
+ x11_trap_errors();
+ XUnmapWindow(dpy, priv->xid);
+ x11_wait_event(dpy, priv->xid, UnmapNotify);
+ return x11_untrap_errors() == 0;
+}
+
+static gboolean
gst_vaapi_window_x11_create(GstVaapiWindow *window, guint width, guint height)
{
GstVaapiWindowX11Private * const priv = GST_VAAPI_WINDOW_X11(window)->priv;
dpy = GST_VAAPI_DISPLAY_XDISPLAY(priv->display);
priv->xid = x11_create_window(dpy, width, height);
- XMapRaised(dpy, priv->xid);
- x11_wait_event(dpy, priv->xid, MapNotify);
- return TRUE;
+ if (!gst_vaapi_window_x11_show(window))
+ return FALSE;
+
+ x11_trap_errors();
+ XRaiseWindow(dpy, priv->xid);
+ XSync(dpy, False);
+ return x11_untrap_errors() == 0;
}
static void
Display * const dpy = GST_VAAPI_DISPLAY_XDISPLAY(priv->display);
if (priv->create_window && priv->xid) {
- XUnmapWindow(dpy, priv->xid);
- x11_wait_event(dpy, priv->xid, UnmapNotify);
+ gst_vaapi_window_x11_hide(window);
XDestroyWindow(dpy, priv->xid);
priv->xid = None;
}
}
static gboolean
-gst_vaapi_window_x11_show(GstVaapiWindow *window)
-{
- GstVaapiWindowX11Private * const priv = GST_VAAPI_WINDOW_X11(window)->priv;
- Display * const dpy = GST_VAAPI_DISPLAY_XDISPLAY(priv->display);
-
- x11_trap_errors();
- XMapWindow(dpy, priv->xid);
- x11_wait_event(dpy, priv->xid, MapNotify);
- return x11_untrap_errors() == 0;
-}
-
-static gboolean
-gst_vaapi_window_x11_hide(GstVaapiWindow *window)
-{
- GstVaapiWindowX11Private * const priv = GST_VAAPI_WINDOW_X11(window)->priv;
- Display * const dpy = GST_VAAPI_DISPLAY_XDISPLAY(priv->display);
-
- x11_trap_errors();
- XUnmapWindow(dpy, priv->xid);
- x11_wait_event(dpy, priv->xid, UnmapNotify);
- return x11_untrap_errors() == 0;
-}
-
-static gboolean
gst_vaapi_window_x11_resize(GstVaapiWindow *window, guint width, guint height)
{
GstVaapiWindowX11Private * const priv = GST_VAAPI_WINDOW_X11(window)->priv;