Alexandre Julliard : x11drv: Clear new bitmaps if they don' t contain any data.
Module: wine Branch: refs/heads/master Commit: ddc60c85f6747a96c93925b2fd785d1419f17dee URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=ddc60c85f6747a96c93925b2... Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Mar 20 16:00:34 2006 +0100 x11drv: Clear new bitmaps if they don't contain any data. --- dlls/gdi/tests/gdiobj.c | 2 -- dlls/x11drv/bitmap.c | 11 +++++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dlls/gdi/tests/gdiobj.c b/dlls/gdi/tests/gdiobj.c index ec4d2d4..4de266c 100644 --- a/dlls/gdi/tests/gdiobj.c +++ b/dlls/gdi/tests/gdiobj.c @@ -1034,9 +1034,7 @@ static void test_bitmap(void) memset(buf, 0xAA, sizeof(buf)); ret = GetBitmapBits(hbmp, sizeof(buf), buf); ok(ret == bm.bmWidthBytes * bm.bmHeight, "%d != %d\n", ret, bm.bmWidthBytes * bm.bmHeight); -todo_wine { ok(!memcmp(buf, buf_cmp, sizeof(buf)), "buffers do not match\n"); -} hbmp_old = SelectObject(hdc, hbmp_old); ok(hbmp_old == hbmp, "wrong old bitmap %p\n", hbmp_old); diff --git a/dlls/x11drv/bitmap.c b/dlls/x11drv/bitmap.c index b2e7718..060102f 100644 --- a/dlls/x11drv/bitmap.c +++ b/dlls/x11drv/bitmap.c @@ -146,7 +146,18 @@ BOOL X11DRV_CreateBitmap( X11DRV_PDEVICE } if (bitmap.bmBits) /* Set bitmap bits */ + { X11DRV_SetBitmapBits( hbitmap, bitmap.bmBits, bitmap.bmHeight * bitmap.bmWidthBytes ); + } + else /* else clear the bitmap */ + { + wine_tsx11_lock(); + XSetFunction( gdi_display, BITMAP_GC(physBitmap), GXclear ); + XFillRectangle( gdi_display, physBitmap->pixmap, BITMAP_GC(physBitmap), 0, 0, + bitmap.bmWidth, bitmap.bmHeight ); + XSetFunction( gdi_display, BITMAP_GC(physBitmap), GXcopy ); + wine_tsx11_unlock(); + } return TRUE; }
participants (1)
-
Alexandre Julliard