diff --git a/dlls/gdi/tests/gdiobj.c b/dlls/gdi/tests/gdiobj.c index ec4d2d4ce21..4de266c0858 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 b2e7718c325..060102f74e3 100644 --- a/dlls/x11drv/bitmap.c +++ b/dlls/x11drv/bitmap.c @@ -146,7 +146,18 @@ BOOL X11DRV_CreateBitmap( X11DRV_PDEVICE *physDev, HBITMAP hbitmap ) } 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; }