http://bugs.winehq.org/show_bug.cgi?id=11203
--- Comment #36 from Ian Goddard igoddard@nildram.co.uk 2009-08-16 05:37:54 --- (In reply to comment #35) I backed out my change so that x11drv_main.c continued to report a depth of 32 but modified bitmap.c at line 143 so that it would report an error on trying to create a bitmap more than 24bpp. This is the test which generates the non-fatal error when I return a depth of 24.
This now reports several similar errors but then crashes with the normal read error.
It appears that the app is trying to create a number of bitmaps. In most cases it respects the reported depth but in one case it doesn't and tries to generate a 32bpp bitmap whatever the depth.
I also looked at a number of pieces of code which seemed to be setting the depth and limited these to 24 but none of them prevented the crash.
As the app respects the reported depth in most cases it seems likely that my original fix of reporting a depth of 24 avoids the crash by the app respecting it and not by allowing Wine to use the conversion functions you mentioned to correct a 32bpp operation by the app.
At present it seems that the best solution is for those of us who aren't using Nvidia but are using apps that will try to use 32bpp to amend the appropriate line in xlldrv_main.c (currently line 315). Instead of "return 32;" this should be amended to "return depth;".