Roderick Colenbrander : winex11: Move AlphaBlend over to get_xrender_format .

Alexandre Julliard julliard at winehq.org
Mon Jul 6 09:34:00 CDT 2009


Module: wine
Branch: master
Commit: bf86daa0b676533d8c7f7f68e1825e28751b106b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=bf86daa0b676533d8c7f7f68e1825e28751b106b

Author: Roderick Colenbrander <thunderbird2k at gmail.com>
Date:   Sun Jul  5 20:52:19 2009 +0200

winex11: Move AlphaBlend over to get_xrender_format.

---

 dlls/winex11.drv/xrender.c |   44 ++++++++------------------------------------
 1 files changed, 8 insertions(+), 36 deletions(-)

diff --git a/dlls/winex11.drv/xrender.c b/dlls/winex11.drv/xrender.c
index e3d2105..afbadb3 100644
--- a/dlls/winex11.drv/xrender.c
+++ b/dlls/winex11.drv/xrender.c
@@ -1739,35 +1739,6 @@ BOOL CDECL X11DRV_AlphaBlend(X11DRV_PDEVICE *devDst, INT xDst, INT yDst, INT wid
                              BLENDFUNCTION blendfn)
 {
     XRenderPictureAttributes pa;
-    XRenderPictFormat *src_format;
-    XRenderPictFormat argb32_templ = {
-        0,                          /* id */
-        PictTypeDirect,             /* type */
-        32,                         /* depth */
-        {                           /* direct */
-            16,                     /* direct.red */
-            0xff,                   /* direct.redMask */
-            8,                      /* direct.green */
-            0xff,                   /* direct.greenMask */
-            0,                      /* direct.blue */
-            0xff,                   /* direct.blueMask */
-            24,                     /* direct.alpha */
-            0xff,                   /* direct.alphaMask */
-        },
-        0,                          /* colormap */
-    };
-    unsigned long argb32_templ_mask = 
-        PictFormatType |
-        PictFormatDepth |
-        PictFormatRed |
-        PictFormatRedMask |
-        PictFormatGreen |
-        PictFormatGreenMask |
-        PictFormatBlue |
-        PictFormatBlueMask |
-        PictFormatAlpha |
-        PictFormatAlphaMask;
-
     Picture dst_pict, src_pict;
     Pixmap xpm;
     DIBSECTION dib;
@@ -1780,6 +1751,7 @@ BOOL CDECL X11DRV_AlphaBlend(X11DRV_PDEVICE *devDst, INT xDst, INT yDst, INT wid
     BOOL top_down = FALSE;
     RGNDATA *rgndata;
     WineXRenderFormat *dst_format = get_xrender_format_from_pdevice(devDst);
+    WineXRenderFormat *src_format;
     int repeat_src;
 
     if(!X11DRV_XRender_Installed) {
@@ -1896,13 +1868,13 @@ BOOL CDECL X11DRV_AlphaBlend(X11DRV_PDEVICE *devDst, INT xDst, INT yDst, INT wid
     image = XCreateImage(gdi_display, visual, 32, ZPixmap, 0,
                          (char*) data, widthSrc, heightSrc, 32, widthSrc * 4);
 
-    /*
-      Avoid using XRenderFindStandardFormat as older libraries don't have it
-      src_format = pXRenderFindStandardFormat(gdi_display, PictStandardARGB32);
-    */
-    src_format = pXRenderFindFormat(gdi_display, argb32_templ_mask, &argb32_templ, 0);
-
+    src_format = get_xrender_format(WXR_FORMAT_A8R8G8B8);
     TRACE("src_format %p\n", src_format);
+    if(!src_format)
+    {
+        WARN("Unable to find a picture format supporting alpha, make sure X is running at 24-bit\n");
+        return FALSE;
+    }
 
     pa.subwindow_mode = IncludeInferiors;
     pa.repeat = repeat_src ? RepeatNormal : RepeatNone;
@@ -1923,7 +1895,7 @@ BOOL CDECL X11DRV_AlphaBlend(X11DRV_PDEVICE *devDst, INT xDst, INT yDst, INT wid
     XPutImage(gdi_display, xpm, gc, image, 0, 0, 0, 0, widthSrc, heightSrc);
 
     src_pict = pXRenderCreatePicture(gdi_display,
-                                     xpm, src_format,
+                                     xpm, src_format->pict_format,
                                      CPSubwindowMode|CPRepeat, &pa);
     TRACE("src_pict %08lx\n", src_pict);
 




More information about the wine-cvs mailing list