diff --git a/src/render.c b/src/render.c index eb5cf8c..f446c05 100644 --- a/src/render.c +++ b/src/render.c @@ -652,15 +652,26 @@ static void Render() if (ddraw->render.width != ddraw->width || ddraw->render.height != ddraw->height) { + static BOOL needsUpdate; + if (ChildWindowExists) { glClear(GL_COLOR_BUFFER_BIT); - glViewport(0, ddraw->render.height - ddraw->height, ddraw->width, ddraw->height); + + if (!needsUpdate) + { + glViewport(0, ddraw->render.height - ddraw->height, ddraw->width, ddraw->height); + needsUpdate = TRUE; + } } - else + else if (needsUpdate) + { glViewport( ddraw->render.viewport.x, ddraw->render.viewport.y, ddraw->render.viewport.width, ddraw->render.viewport.height); + + needsUpdate = FALSE; + } } } } diff --git a/src/render_d3d9.c b/src/render_d3d9.c index e47d6c8..9d0ce77 100644 --- a/src/render_d3d9.c +++ b/src/render_d3d9.c @@ -383,13 +383,20 @@ DWORD WINAPI render_d3d9_main(void) if (ddraw->render.width != ddraw->width || ddraw->render.height != ddraw->height) { + static BOOL needsUpdate; + if (ChildWindowExists) { IDirect3DDevice9_Clear(D3dDev, 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); - UpdateVertices(FALSE, FALSE); + + if (!needsUpdate && UpdateVertices(FALSE, FALSE)) + needsUpdate = TRUE; + } + else if (needsUpdate) + { + if (UpdateVertices(FALSE, TRUE)) + needsUpdate = FALSE; } - else - UpdateVertices(FALSE, TRUE); } } }