From 8689fe32c6602c55a5cc275834ac26b51eba616c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Fri, 30 Nov 2007 20:28:13 +0100 Subject: [PATCH] wined3d: Use the proper drawable size when setting the scissor rect. --- dlls/wined3d/state.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index 787f3ead71b..cd801d7e2a9 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -3668,25 +3668,21 @@ static void light(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContex static void scissorrect(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3DContext *context) { RECT *pRect = &stateblock->scissorRect; - RECT windowRect; - UINT winHeight; - - windowRect.left = 0; - windowRect.top = 0; - windowRect.right = ((IWineD3DSurfaceImpl *) stateblock->wineD3DDevice->render_targets[0])->currentDesc.Width; - windowRect.bottom = ((IWineD3DSurfaceImpl *) stateblock->wineD3DDevice->render_targets[0])->currentDesc.Height; + UINT height; + UINT width; + IWineD3DSurfaceImpl *target = (IWineD3DSurfaceImpl *) stateblock->wineD3DDevice->render_targets[0]; + target->get_drawable_size(target, &width, &height); /* Warning: glScissor uses window coordinates, not viewport coordinates, so our viewport correction does not apply * Warning2: Even in windowed mode the coords are relative to the window, not the screen */ - winHeight = windowRect.bottom - windowRect.top; - TRACE("(%p) Setting new Scissor Rect to %d:%d-%d:%d\n", stateblock->wineD3DDevice, pRect->left, pRect->bottom - winHeight, + TRACE("(%p) Setting new Scissor Rect to %d:%d-%d:%d\n", stateblock->wineD3DDevice, pRect->left, pRect->bottom - height, pRect->right - pRect->left, pRect->bottom - pRect->top); if (stateblock->wineD3DDevice->render_offscreen) { glScissor(pRect->left, pRect->top, pRect->right - pRect->left, pRect->bottom - pRect->top); } else { - glScissor(pRect->left, winHeight - pRect->bottom, pRect->right - pRect->left, pRect->bottom - pRect->top); + glScissor(pRect->left, height - pRect->bottom, pRect->right - pRect->left, pRect->bottom - pRect->top); } checkGLcall("glScissor"); }