x11drv: Clear new bitmaps if they don't contain any data.

oldstable
Alexandre Julliard 2006-03-20 16:00:34 +01:00
parent 5c1b27a029
commit ddc60c85f6
2 changed files with 11 additions and 2 deletions

View File

@ -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);

View File

@ -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;
}