From 4d8135e0c87022518b9f24fdc572181dc2f47b24 Mon Sep 17 00:00:00 2001 From: Ulrich Czekalla Date: Thu, 14 Dec 2006 15:42:30 -0500 Subject: [PATCH] winex11.drv: Avoid grabbing syslevel locks in the wrong order. --- dlls/gdi32/opengl.c | 2 +- dlls/winex11.drv/opengl.c | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/dlls/gdi32/opengl.c b/dlls/gdi32/opengl.c index fdf39f34e1b..67939186c69 100644 --- a/dlls/gdi32/opengl.c +++ b/dlls/gdi32/opengl.c @@ -169,7 +169,7 @@ BOOL WINAPI wglMakeCurrent(HDC hdc, HGLRC hglrc) if(hglrc == NULL) dc = OPENGL_GetDefaultDC(); else - dc = DC_GetDCPtr( hdc ); + dc = DC_GetDCUpdate( hdc ); TRACE("hdc: (%p), hglrc: (%p)\n", hdc, hglrc); diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c index 95ca1355dbf..07e076d1d20 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c @@ -1443,7 +1443,7 @@ PROC X11DRV_wglGetProcAddress(LPCSTR lpszProc) * Adjust the current viewport and scissor in order to position * and size the current drawable correctly on the parent window. */ -static void sync_current_drawable(void) +static void sync_current_drawable(BOOL updatedc) { int dy; int width; @@ -1455,7 +1455,8 @@ static void sync_current_drawable(void) if (ctx && ctx->physDev) { - GetClipBox(ctx->physDev->hdc, &rc); /* Make sure physDev is up to date */ + if (updatedc) + GetClipBox(ctx->physDev->hdc, &rc); /* Make sure physDev is up to date */ dy = ctx->physDev->drawable_rect.bottom - ctx->physDev->drawable_rect.top - ctx->physDev->dc_rect.bottom; @@ -1535,7 +1536,7 @@ BOOL X11DRV_wglMakeCurrent(X11DRV_PDEVICE *physDev, HGLRC hglrc) { } else { - sync_current_drawable(); + sync_current_drawable(FALSE); } } } @@ -1885,7 +1886,7 @@ static void WINAPI X11DRV_wglScissor(GLint x, GLint y, GLsizei width, GLsizei he ctx->scissor.right = x + width; ctx->scissor.bottom = y + height; - sync_current_drawable(); + sync_current_drawable(TRUE); } static void WINAPI X11DRV_wglViewport(GLint x, GLint y, GLsizei width, GLsizei height) @@ -1897,7 +1898,7 @@ static void WINAPI X11DRV_wglViewport(GLint x, GLint y, GLsizei width, GLsizei h ctx->viewport.right = x + width; ctx->viewport.bottom = y + height; - sync_current_drawable(); + sync_current_drawable(TRUE); } /**