Rolf Kalbermatter ha scritto:
It may be ugly in some ways but incorporating it in wineX11.drv has the big disadvantage that it would not be easy to leverage it off to other possible display drivers such as the quartz driver. Windows 2K/XP does appear to do it mostly in the Eng... GDI functions which would have been another possibility. Vista changed the entire GDI/display driver business seriously again and I have no idea how it does work there.
Rolf Kalbermatter
Well, imho the right way would be to replace winex11.drv with a driver with pluggable backends, which could do all DIB stuffs as dib engine and forward to the backend(s) all device drawings. Or, even better, change gdi32 to hook to different drivers for DIB and DDB bitmaps. I mean, every gdi function should test if bitmap is a DDB or a DIB and use the appropriate driver. What I'm doing now (and what's done in Jesse's and Huw's engines) is an hack that swaps driver's hooks depending on bitmap type just on SelectBitmap() function, which has many disadvantages : 1) BitBlt functions (and maybe any call that operates on 2 BMPs) must check whether both BMPs are of the same kind, OR change one of them, in order the correct driver to operate (which is indeed done in Jesse's and in my engine). 2) CreateDc() and similars are called twice, once for every driver, and the DIB one must be done on SelectBitmap(), which is ugly.
BTW, all that would require some major cleanup of gdi code, which I guess nobody would like....
Max