2008/7/25 Aric Stewart aric@codeweavers.com:
IWineD3DSurface_LockRect(iface, &dlock, NULL, 0);
IWineD3DSurface_LockRect(iface, &dlock, DestRect, 0); dfmt = This->resource.format; slock = dlock;
I don't think you can simply insert DestRect there, unless it's the same as SrcRect (because of the slock = dlock line a few lines down).
if (DestRect) {
xdst = *DestRect;
xdst.top = 0;
xdst.bottom = DestRect->bottom - DestRect->top;
xdst.left = 0;
}xdst.right = DestRect->right - DestRect->left;
This will break things like checking for out of surface rectangles, clipping and overlapping blits.
Stefan knows this part of the code better than me, but I don't think there's anything wrong with the concept of the patch.