xserver: Branch 'xwayland-1.12'

Kristian Høgsberg krh at kemper.freedesktop.org
Thu May 2 10:26:53 PDT 2013


 hw/xfree86/xwayland/xwayland-drm.c |   11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

New commits:
commit 43eacf4a50d3aa700f4e49a8b8b36da5e7e7f256
Author: Kristian Høgsberg <krh at bitplanet.net>
Date:   Thu May 2 13:26:32 2013 -0400

    xwayland: Pick wl_drm pixel formats based on the window visual
    
    This reverts c13becb2b and uses the right pixel format for the window
    contents.  The weston X wm can instead reparent the client window into
    an ARGB frame window and draw ARGB decorations there.  This way xwayland
    will pick the ARGB pixel format for the window that lets weston render
    transparent decorations and use an opaque area for the client window.

diff --git a/hw/xfree86/xwayland/xwayland-drm.c b/hw/xfree86/xwayland/xwayland-drm.c
index 8d595b0..7be1351 100644
--- a/hw/xfree86/xwayland/xwayland-drm.c
+++ b/hw/xfree86/xwayland/xwayland-drm.c
@@ -210,6 +210,7 @@ xwl_create_window_buffer_drm(struct xwl_window *xwl_window,
     VisualID visual;
     WindowPtr window = xwl_window->window;
     ScreenPtr screen = window->drawable.pScreen;
+    uint32_t format;
     int i;
 
     visual = wVisual(window);
@@ -217,13 +218,21 @@ xwl_create_window_buffer_drm(struct xwl_window *xwl_window,
 	if (screen->visuals[i].vid == visual)
 	    break;
 
+    if (screen->visuals[i].nplanes == 32) {
+	format = WL_DRM_FORMAT_ARGB8888;
+	ErrorF("picking WL_DRM_FORMAT_ARGB8888\n");
+    } else {
+	format = WL_DRM_FORMAT_XRGB8888;
+	ErrorF("picking WL_DRM_FORMAT_XRGB8888\n");
+    }
+
     xwl_window->buffer =
       wl_drm_create_buffer(xwl_window->xwl_screen->drm,
 			   name,
 			   pixmap->drawable.width,
 			   pixmap->drawable.height,
 			   pixmap->devKind,
-			   WL_DRM_FORMAT_ARGB8888);
+			   format);
 
     return xwl_window->buffer ? Success : BadDrawable;
 }


More information about the xorg-commit mailing list