2008/7/25 Aric Stewart <aric(a)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.