I've implemented SetClipList and GetClipList in the DirectDraw Clipper, and I'm wondering how I should go about implementing clipping in DirectDraw's Blt() (if it isn't already done somewhere).
Usually, games use the Clipper to do 'non-full screen' DirectX applications. There is no way to do a work-around to have it running in full-screen :-) ?
Anyway, all this clipping is not really implemented properly as most of the effort was spent on full screen apps. As far as I can see in the code, the only case supported with clipping is the case where only one rectangle is given in the clip list via the SetHWnd method (see, for example, User_copy_to_screen in dlls/ddraw/dsurface/user.c) which is the 'standard' case for windowed DirectX applications (like Media player) : a menu bar + a DirectX display zone.
After, if the list is only one rectangle, it should be easy to re-use the existing code. Otherwise (ie multiple rectangles), you should check if you can support with the 'BitBlt' API something like the 'XSetClipRectangles' X11 API (which can't be called directly from DirectX anymore) which would prevent us rewriting in the DirectX code some generic 'multi-rectangle' clipping code.
Lionel