Check whether the foreign XID is mapped at binding time.
authorgb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Tue, 23 Mar 2010 07:42:05 +0000 (07:42 +0000)
committergb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Tue, 23 Mar 2010 07:42:05 +0000 (07:42 +0000)
gst-libs/gst/vaapi/gstvaapiwindow_x11.c

index 6273ed0..18450df 100644 (file)
@@ -198,6 +198,7 @@ gst_vaapi_window_x11_create(GstVaapiWindow *window, guint *width, guint *height)
 {
     GstVaapiWindowX11Private * const priv = GST_VAAPI_WINDOW_X11(window)->priv;
     Display * const dpy = GST_VAAPI_DISPLAY_XDISPLAY(priv->display);
+    XWindowAttributes wattr;
     Atom atoms[2];
     gboolean ok;
 
@@ -208,6 +209,8 @@ gst_vaapi_window_x11_create(GstVaapiWindow *window, guint *width, guint *height)
 
     if (!priv->create_window && priv->xid) {
         GST_VAAPI_DISPLAY_LOCK(priv->display);
+        XGetWindowAttributes(dpy, priv->xid, &wattr);
+        priv->is_mapped = wattr.map_state == IsViewable;
         ok = x11_get_geometry(dpy, priv->xid, NULL, NULL, width, height);
         GST_VAAPI_DISPLAY_UNLOCK(priv->display);
         return ok;