2008/7/28 Aric Stewart aric@codeweavers.com:
if (Src != This)
{
xdst.top = 0;
xdst.bottom = DestRect->bottom - DestRect->top;
xdst.left = 0;
xdst.right = DestRect->right - DestRect->left;
}
This will still break the rectangle bounds check further down (around line 940), and anything else that depends on the position of the rectangle within the surface. Come to think of it, the rectangle bounds check should probably be done before trying to lock the surface. Something else I just thought of is that LockRect() probably won't handle mirrored or flipped destination rectangles very well.