Module: wine Branch: master Commit: c864ae6348aab90da305cfc143575dce77f82682 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c864ae6348aab90da305cfc143...
Author: Roderick Colenbrander thunderbird2k@gmail.com Date: Mon Mar 29 13:39:30 2010 +0200
wined3d: Disable flipping through the source rectangle in BltOverride.
---
dlls/wined3d/surface.c | 23 ++++++++--------------- 1 files changed, 8 insertions(+), 15 deletions(-)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index 4803964..c1ae2d2 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -3936,7 +3936,7 @@ static HRESULT IWineD3DSurfaceImpl_BltOverride(IWineD3DSurfaceImpl *This, const if((srcSwapchain || SrcSurface == myDevice->render_targets[0]) && !dstSwapchain) { /* Blit from render target to texture */ WINED3DRECT srect; - BOOL upsideDown, stretchx; + BOOL upsideDown = FALSE, stretchx; BOOL paletteOverride = FALSE;
if(Flags & (WINEDDBLT_KEYSRC | WINEDDBLT_KEYSRCOVERRIDE)) { @@ -3945,19 +3945,9 @@ static HRESULT IWineD3DSurfaceImpl_BltOverride(IWineD3DSurfaceImpl *This, const /* Destination color key is checked above */ }
- /* Make sure that the top pixel is always above the bottom pixel, and keep a separate upside down flag - * glCopyTexSubImage is a bit picky about the parameters we pass to it - */ if(SrcRect) { - if(SrcRect->top < SrcRect->bottom) { - srect.y1 = SrcRect->top; - srect.y2 = SrcRect->bottom; - upsideDown = FALSE; - } else { - srect.y1 = SrcRect->bottom; - srect.y2 = SrcRect->top; - upsideDown = TRUE; - } + srect.y1 = SrcRect->top; + srect.y2 = SrcRect->bottom; srect.x1 = SrcRect->left; srect.x2 = SrcRect->right; } else { @@ -3965,13 +3955,16 @@ static HRESULT IWineD3DSurfaceImpl_BltOverride(IWineD3DSurfaceImpl *This, const srect.y1 = 0; srect.x2 = Src->currentDesc.Width; srect.y2 = Src->currentDesc.Height; - upsideDown = FALSE; } + + /* Make sure that the top pixel is always above the bottom pixel, and keep a separate upside down flag + * glCopyTexSubImage is a bit picky about the parameters we pass to it + */ if(rect.y1 > rect.y2) { UINT tmp = rect.y2; rect.y2 = rect.y1; rect.y1 = tmp; - upsideDown = !upsideDown; + upsideDown = TRUE; }
if(rect.x2 - rect.x1 != srect.x2 - srect.x1) {