Allow window creation with a specific visual (e.g. for GLX support).
authorgb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Thu, 25 Mar 2010 13:54:06 +0000 (13:54 +0000)
committergb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Thu, 25 Mar 2010 13:54:06 +0000 (13:54 +0000)
gst-libs/gst/vaapi/gstvaapiutils_x11.c
gst-libs/gst/vaapi/gstvaapiutils_x11.h
gst-libs/gst/vaapi/gstvaapiwindow_x11.c

index 46ed190..317609a 100644 (file)
@@ -55,23 +55,37 @@ static const int x11_event_mask = (KeyPressMask |
                                    ExposureMask |
                                    StructureNotifyMask);
 
+/**
+ * x11_create_window:
+ * @display: an X11 #Display
+ * @width: the requested width, in pixels
+ * @height: the requested height, in pixels
+ * @vis: the request visual
+ *
+ * Creates a border-less window with the specified dimensions. If @vis
+ * is %NULL, the default visual for @display will be used. The default
+ * background color is black.
+ *
+ * Return value: the newly created X #Window.
+ */
 Window
-x11_create_window(Display *display, guint width, guint height)
+x11_create_window(Display *display, guint width, guint height, Visual *vis)
 {
     Window root_window, window;
     int screen, depth;
-    Visual *vis;
     XSetWindowAttributes xswa;
     unsigned long xswa_mask;
     XWindowAttributes wattr;
     unsigned long black_pixel, white_pixel;
 
     screen      = DefaultScreen(display);
-    vis         = DefaultVisual(display, screen);
     root_window = RootWindow(display, screen);
     black_pixel = BlackPixel(display, screen);
     white_pixel = WhitePixel(display, screen);
 
+    if (!vis)
+        vis = DefaultVisual(display, screen);
+
     XGetWindowAttributes(display, root_window, &wattr);
     depth = wattr.depth;
     if (depth != 15 && depth != 16 && depth != 24 && depth != 32)
index b66e5c1..9ab0131 100644 (file)
@@ -32,7 +32,7 @@ int x11_untrap_errors(void)
     attribute_hidden;
 
 Window
-x11_create_window(Display *display, guint width, guint height)
+x11_create_window(Display *display, guint width, guint height, Visual *vis)
     attribute_hidden;
 
 gboolean
index ffe1a37..2630836 100644 (file)
@@ -241,7 +241,7 @@ gst_vaapi_window_x11_create(GstVaapiWindow *window, guint *width, guint *height)
     priv->atom_NET_WM_STATE            = atoms[0];
     priv->atom_NET_WM_STATE_FULLSCREEN = atoms[1];
 
-    xid = x11_create_window(dpy, *width, *height);
+    xid = x11_create_window(dpy, *width, *height, NULL);
     if (xid)
         XRaiseWindow(dpy, xid);
     GST_VAAPI_OBJECT_UNLOCK_DISPLAY(window);