And that it does :/ It seems not to update the screen properly, but then again, it could be something not completely implemented in Wine, or the game engine.
Well, if it asks for multiple clipping rectangles, and from what I found out in the MSDN, they should not overlap.
So you should just have to loop over all the rectangles and do the 'copy_on_screen' as many times as there are rectangles.
Of course, if they overlap, this method will still work except that we would 're-Blit' some parts multiple times (we would just need to do the optimisations later on).
See these pages :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/regions... http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/regions...
According to M$ DX7 Documentation, DirectDrawSurface::Blt() should only bit to areas that are in the clip list. And apparently 98% of the time that it's trying to blit to a rect that it's not putting in the clip list, it's almost identical to the RGNDATA.rcBound value, so i'm guessing it's for some type of back-buffer used by the engine :P
You mean that it's trying to blit to a zone that is not at all in the clip list (ie all of the intersections of the destination rectangles with the rectangles in the clip list are empty) ? It may well be that it's not a bug (why use clip lists if you still need to check in the engine code if you are completely in or not from the lists).
Yeah, that is unless the current DD code was rewritten to use GL and also assuming that the person running it had Direct Rendering, but then again, that would take a lot of time to do, and could possibly be horridly slow if the person happened not to have direct rendering :P
Well, it's in my plans to do the GL 'port'... It could even be done pretty easily (as almost all of the code already exists in the D3D part of the code). It would be mightily hacky, but well, it may even work :-)
What's blocking me is that my 'target' applications is COMI and it uses 8 bit graphics (so I need a GFX card supported paletted textures to really see if I can get a nice speed-up).
I'm also looking at some of the wave driver stuff. WineX's wave driver (at least the OSS driver) does the sound for the game perfectly whereas Wine's wave output sounds rather odd, crackling, and it seems not to flush the buffer properly. :P
For that, Robert and Eric are the experts...
Lionel