Stefan Dösinger : wined3d: Use the proper drawable size when setting the scissor rect.
Alexandre Julliard
julliard at winehq.org
Tue Dec 4 13:25:19 CST 2007
Module: wine
Branch: master
Commit: 8689fe32c6602c55a5cc275834ac26b51eba616c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8689fe32c6602c55a5cc275834ac26b51eba616c
Author: Stefan Dösinger <stefan at codeweavers.com>
Date: Fri Nov 30 20:28:13 2007 +0100
wined3d: Use the proper drawable size when setting the scissor rect.
---
dlls/wined3d/state.c | 16 ++++++----------
1 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index 787f3ea..cd801d7 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");
}
More information about the wine-cvs
mailing list