Huw Davies : winex11.drv: Move the PictFormats into an array.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Jul 4 06:56:49 CDT 2007
Module: wine
Branch: master
Commit: 030ef1ef0567ab77c1c5bbcadd70e6ec48f5f034
URL: http://source.winehq.org/git/wine.git/?a=commit;h=030ef1ef0567ab77c1c5bbcadd70e6ec48f5f034
Author: Huw Davies <huw at codeweavers.com>
Date: Tue Jul 3 15:18:55 2007 +0100
winex11.drv: Move the PictFormats into an array.
---
dlls/winex11.drv/xrender.c | 33 +++++++++++++++++----------------
1 files changed, 17 insertions(+), 16 deletions(-)
diff --git a/dlls/winex11.drv/xrender.c b/dlls/winex11.drv/xrender.c
index e677cea..33da629 100644
--- a/dlls/winex11.drv/xrender.c
+++ b/dlls/winex11.drv/xrender.c
@@ -46,8 +46,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(xrender);
#include <X11/Xlib.h>
#include <X11/extensions/Xrender.h>
-static XRenderPictFormat *screen_format; /* format of screen */
-static XRenderPictFormat *mono_format; /* format of mono bitmap */
+
+enum drawable_depth_type {mono_drawable, color_drawable};
+static XRenderPictFormat *pict_formats[2];
typedef struct
{
@@ -203,8 +204,8 @@ LOAD_OPTIONAL_FUNCPTR(XRenderSetPictureTransform)
if(pXRenderQueryExtension(gdi_display, &event_base, &xrender_error_base)) {
X11DRV_XRender_Installed = TRUE;
TRACE("Xrender is up and running error_base = %d\n", xrender_error_base);
- screen_format = pXRenderFindVisualFormat(gdi_display, visual);
- if(!screen_format)
+ pict_formats[color_drawable] = pXRenderFindVisualFormat(gdi_display, visual);
+ if(!pict_formats[color_drawable])
{
/* Xrender doesn't like DirectColor visuals, try to find a TrueColor one instead */
if (visual->class == DirectColor)
@@ -213,12 +214,12 @@ LOAD_OPTIONAL_FUNCPTR(XRenderSetPictureTransform)
if (XMatchVisualInfo( gdi_display, DefaultScreen(gdi_display),
screen_depth, TrueColor, &info ))
{
- screen_format = pXRenderFindVisualFormat(gdi_display, info.visual);
- if (screen_format) visual = info.visual;
+ pict_formats[color_drawable] = pXRenderFindVisualFormat(gdi_display, info.visual);
+ if (pict_formats[color_drawable]) visual = info.visual;
}
}
}
- if(!screen_format) /* This fails in buggy versions of libXrender.so */
+ if(!pict_formats[color_drawable]) /* This fails in buggy versions of libXrender.so */
{
wine_tsx11_unlock();
WINE_MESSAGE(
@@ -232,10 +233,10 @@ LOAD_OPTIONAL_FUNCPTR(XRenderSetPictureTransform)
pf.depth = 1;
pf.direct.alpha = 0;
pf.direct.alphaMask = 1;
- mono_format = pXRenderFindFormat(gdi_display, PictFormatType |
- PictFormatDepth | PictFormatAlpha |
- PictFormatAlphaMask, &pf, 0);
- if(!mono_format) {
+ pict_formats[mono_drawable] = pXRenderFindFormat(gdi_display, PictFormatType |
+ PictFormatDepth | PictFormatAlpha |
+ PictFormatAlphaMask, &pf, 0);
+ if(!pict_formats[mono_drawable]) {
ERR("mono_format == NULL?\n");
X11DRV_XRender_Installed = FALSE;
}
@@ -1098,6 +1099,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
unsigned int idx;
double cosEsc, sinEsc;
LOGFONTW lf;
+ enum drawable_depth_type depth_type = (physDev->depth == 1) ? mono_drawable : color_drawable;
/* Do we need to disable antialiasing because of palette mode? */
if( !physDev->bitmap || GetObjectW( physDev->bitmap->hbitmap, sizeof(bmp), &bmp ) != sizeof(bmp) ) {
@@ -1176,8 +1178,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
wine_tsx11_lock();
physDev->xrender->pict = pXRenderCreatePicture(gdi_display,
physDev->drawable,
- (physDev->depth == 1) ?
- mono_format : screen_format,
+ pict_formats[depth_type],
CPSubwindowMode, &pa);
wine_tsx11_unlock();
@@ -1204,7 +1205,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
if(!physDev->xrender->tile_xpm) {
XRenderPictureAttributes pa;
- XRenderPictFormat *format = (physDev->depth == 1) ? mono_format : screen_format;
+ XRenderPictFormat *format = pict_formats[depth_type];
wine_tsx11_lock();
physDev->xrender->tile_xpm = XCreatePixmap(gdi_display,
root_window,
@@ -1534,6 +1535,7 @@ BOOL X11DRV_AlphaBlend(X11DRV_PDEVICE *devDst, INT xDst, INT yDst, INT widthDst,
POINT pts[2];
BOOL top_down = FALSE;
RGNDATA *rgndata;
+ enum drawable_depth_type dst_depth_type = (devDst->depth == 1) ? mono_drawable : color_drawable;
if(!X11DRV_XRender_Installed) {
FIXME("Unable to AlphaBlend without Xrender\n");
@@ -1616,8 +1618,7 @@ BOOL X11DRV_AlphaBlend(X11DRV_PDEVICE *devDst, INT xDst, INT yDst, INT widthDst,
/* FIXME use devDst->xrender->pict ? */
dst_pict = pXRenderCreatePicture(gdi_display,
devDst->drawable,
- (devDst->depth == 1) ?
- mono_format : screen_format,
+ pict_formats[dst_depth_type],
CPSubwindowMode, &pa);
TRACE("dst_pict %08lx\n", dst_pict);
TRACE("src_drawable = %08lx\n", devSrc->drawable);
More information about the wine-cvs
mailing list