http://bugs.winehq.org/show_bug.cgi?id=2666
------- Additional Comments From oliver_stieber@yahoo.co.uk 2005-18-10 12:16 ------- I've done a bit more digging and:
The problem seems to be that the physBitmap is 32 bit and were mapping to an 8 bit dibSection but the 8 bit pallette for the physBitmap is all black.
the structure is setup in x11drl/dib.c X11DRV_DIB_DoCopyDIBSection.
It's unclear how the palette should be handled, should the DC's paette be used? should a new palette be created if the image changed? or should the palette be fixed at creation time(in which case it's wrong)
So far I've traced everything back through : trace:bitmap:X11DRV_DIB_Lock Locking 0x1208 from thread 0009 trace:bitmap:X11DRV_DIB_Coerce InSync requested in status GdiMod trace:bitmap:X11DRV_DIB_DoProtectDIBSection Changed protection from 1 to 4 trace:bitmap:X11DRV_DIB_DoCopyDIBSection 0x7ee4f088 1 0x7ecf8ac8 256 0x3600425 0 0 0 0 128 32 trace:bitmap:X11DRV_DIB_DoCopyDIBSection Copying from Pixmap to DIB bits trace:bitmap:X11DRV_DIB_GetImageBits XShmGetImage(0x7c027a48, 56624165, 0x7c470710, 0, 0, -1) trace:bitmap:X11DRV_DIB_GetImageBits Dib: depth= 8 r=0 g=0 b=0 trace:bitmap:X11DRV_DIB_GetImageBits Bmp: depth=24/32 r=ff0000 g=ff00 b=ff
Warblade has exactly the same problem.
The DIB engine (which hasn't been merged yet) may fix the problem, or make the problem easier to fix.