http://bugs.winehq.org/show_bug.cgi?id=14868
--- Comment #9 from David Hall (gringer) winehq@gringer.dis.org.nz 2008-08-15 22:26:25 --- sorry, didn't notice your comment #5, but it's nice to know that we ended up with the same patch.
I did a quick trace to work out why it was crashing, by adding a FIXME to show the number of bytes per pixel:
diff --git a/dlls/gdi32/dib.c b/dlls/gdi32/dib.c index 440857d..31e003a 100644 --- a/dlls/gdi32/dib.c +++ b/dlls/gdi32/dib.c @@ -641,6 +641,7 @@ INT WINAPI GetDIBits( DIB_GetDIBImageBytes( bmp->bitmap.bmWidth, bmp->bitmap.bmHeight, bmp->bitmap.bmBitsPixel ); + FIXME("Bits per pixel: %d\n", bmp->bitmap.bmBitsPixel); info->bmiHeader.biCompression = (bmp->bitmap.bmBitsPixel > 8) ? BI_BITFIELDS : BI_RGB; switch(bmp->bitmap.bmBitsPixel) {
Running the program demonstrates that the bitmap is encoded as 32 bits per pixel:
$ ~/install/git/wine-git/wine GSpot.exe ALSA lib seq_hw.c:457:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory fixme:bitmap:GetDIBits Bits per pixel: 32 wine: Unhandled page fault on read access to 0x0000ff00 at address 0xff00 (thread 0009), starting debugger...
Taking into account that your patch fixes this (I have confirmed this) means that the compression expected is BI_BITFIELDS, while the actual compression is BI_RGB (i.e. none / uncompressed).