Module: wine Branch: master Commit: 129021a0ab10e42cec9c16aa8049d229876de290 URL: http://source.winehq.org/git/wine.git/?a=commit;h=129021a0ab10e42cec9c16aa80...
Author: Huw Davies huw@codeweavers.com Date: Mon Jun 6 12:58:42 2011 +0100
winex11: Move the code that checks for a colortable based dib to a separate function.
---
dlls/winex11.drv/xrender.c | 24 ++++++++++++++++++------ 1 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/dlls/winex11.drv/xrender.c b/dlls/winex11.drv/xrender.c index 52e7f25..48ecd22 100644 --- a/dlls/winex11.drv/xrender.c +++ b/dlls/winex11.drv/xrender.c @@ -1788,6 +1788,22 @@ static int XRenderErrorHandler(Display *dpy, XErrorEvent *event, void *arg) return 1; }
+/******************************************************************** + * is_dib_with_colortable + * + * Return TRUE if physdev is backed by a dibsection with <= 8 bits per pixel + */ +static inline BOOL is_dib_with_colortable( X11DRV_PDEVICE *physDev ) +{ + DIBSECTION dib; + + if( physDev->bitmap && GetObjectW( physDev->bitmap->hbitmap, sizeof(dib), &dib ) == sizeof(dib) && + dib.dsBmih.biBitCount <= 8 ) + return TRUE; + + return FALSE; +} + /*********************************************************************** * X11DRV_XRender_ExtTextOut */ @@ -1803,16 +1819,12 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag HRGN saved_region = 0; BOOL disable_antialias = FALSE; AA_Type aa_type = AA_None; - DIBSECTION bmp; unsigned int idx; const WineXRenderFormat *dst_format = get_xrender_format_from_color_shifts(physDev->depth, physDev->color_shifts); Picture tile_pict = 0;
- /* Do we need to disable antialiasing because of palette mode? */ - if( !physDev->bitmap || GetObjectW( physDev->bitmap->hbitmap, sizeof(bmp), &bmp ) != sizeof(bmp) ) { - TRACE("bitmap is not a DIB\n"); - } - else if (bmp.dsBmih.biBitCount <= 8) { + if(is_dib_with_colortable( physDev )) + { TRACE("Disabling antialiasing\n"); disable_antialias = TRUE; }