Module: wine Branch: master Commit: 99a258311c725e3b931f123259a0732738be9125 URL: http://source.winehq.org/git/wine.git/?a=commit;h=99a258311c725e3b931f123259...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Sep 17 16:49:37 2007 +0200
gdi32: Replace remaining instance of DC_GetDCUpdate by get_dc_ptr+update_dc.
---
dlls/gdi32/dc.c | 68 +++++++++++++++----------------------------------- dlls/gdi32/font.c | 9 +++--- dlls/gdi32/opengl.c | 11 ++++--- 3 files changed, 32 insertions(+), 56 deletions(-)
diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c index adf88cc..fe51253 100644 --- a/dlls/gdi32/dc.c +++ b/dlls/gdi32/dc.c @@ -177,32 +177,6 @@ DC *DC_GetDCPtr( HDC hdc ) return dc; }
-/*********************************************************************** - * DC_GetDCUpdate - * - * Retrieve a DC ptr while making sure the visRgn is updated. - * This function may call up to USER so the GDI lock should _not_ - * be held when calling it. - */ -DC *DC_GetDCUpdate( HDC hdc ) -{ - DC *dc = DC_GetDCPtr( hdc ); - if (!dc) return NULL; - while (InterlockedExchange( &dc->dirty, 0 )) - { - DCHOOKPROC proc = dc->hookThunk; - if (proc) - { - DWORD_PTR data = dc->dwHookData; - DC_ReleaseDCPtr( dc ); - proc( hdc, DCHC_INVALIDVISRGN, data, 0 ); - if (!(dc = DC_GetDCPtr( hdc ))) break; - /* otherwise restart the loop in case it became dirty again in the meantime */ - } - } - return dc; -} -
/*********************************************************************** * DC_ReleaseDCPtr @@ -488,20 +462,21 @@ void WINAPI SetDCState( HDC hdc, HDC hdcs ) { DC *dc, *dcs;
- if (!(dc = DC_GetDCUpdate( hdc ))) return; - if (!(dcs = DC_GetDCPtr( hdcs ))) + if (!(dc = get_dc_ptr( hdc ))) return; + if (!(dcs = get_dc_ptr( hdcs ))) { - DC_ReleaseDCPtr( dc ); - return; + release_dc_ptr( dc ); + return; } if (!dcs->flags & DC_SAVED) { - DC_ReleaseDCPtr( dc ); - DC_ReleaseDCPtr( dcs ); - return; + release_dc_ptr( dc ); + release_dc_ptr( dcs ); + return; } TRACE("%p %p\n", hdc, hdcs );
+ update_dc( dc ); dc->flags = dcs->flags & ~DC_SAVED; dc->layout = dcs->layout; dc->hDevice = dcs->hDevice; @@ -569,8 +544,8 @@ void WINAPI SetDCState( HDC hdc, HDC hdcs ) SetBkColor( hdc, dcs->backgroundColor); SetTextColor( hdc, dcs->textColor); GDISelectPalette( hdc, dcs->hPalette, FALSE ); - DC_ReleaseDCPtr( dcs ); - DC_ReleaseDCPtr( dc ); + release_dc_ptr( dc ); + release_dc_ptr( dcs ); }
@@ -653,22 +628,23 @@ BOOL WINAPI RestoreDC( HDC hdc, INT level ) BOOL success;
TRACE("%p %d\n", hdc, level ); - dc = DC_GetDCUpdate( hdc ); - if(!dc) return FALSE; + if (!(dc = get_dc_ptr( hdc ))) return FALSE;
if(abs(level) > dc->saveLevel || level == 0) { - DC_ReleaseDCPtr( dc ); + release_dc_ptr( dc ); return FALSE; } - + + update_dc( dc ); + if(dc->funcs->pRestoreDC) { success = dc->funcs->pRestoreDC( dc->physDev, level ); if(level < 0) level = dc->saveLevel + level + 1; if(success) dc->saveLevel = level - 1; - DC_ReleaseDCPtr( dc ); + release_dc_ptr( dc ); return success; }
@@ -677,10 +653,10 @@ BOOL WINAPI RestoreDC( HDC hdc, INT level ) while (dc->saveLevel >= level) { HDC hdcs = dc->saved_dc; - if (!(dcs = DC_GetDCPtr( hdcs ))) + if (!(dcs = get_dc_ptr( hdcs ))) { - DC_ReleaseDCPtr( dc ); - return FALSE; + success = FALSE; + break; } dc->saved_dc = dcs->saved_dc; dcs->saved_dc = 0; @@ -692,12 +668,10 @@ BOOL WINAPI RestoreDC( HDC hdc, INT level ) * returning FALSE but still destroying the saved DC state */ success=FALSE; } - DC_ReleaseDCPtr( dcs ); - DC_ReleaseDCPtr( dc ); + release_dc_ptr( dcs ); DeleteDC( hdcs ); - if (!(dc = DC_GetDCPtr( hdc ))) return FALSE; } - DC_ReleaseDCPtr( dc ); + release_dc_ptr( dc ); return success; }
diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c index 0cc7339..b5ec980 100644 --- a/dlls/gdi32/font.c +++ b/dlls/gdi32/font.c @@ -1879,7 +1879,7 @@ BOOL WINAPI ExtTextOutW( HDC hdc, INT x, INT y, UINT flags, BOOL done_extents = FALSE; INT width = 0, xwidth = 0, ywidth = 0; DWORD type; - DC * dc = DC_GetDCUpdate( hdc ); + DC * dc = get_dc_ptr( hdc ); INT breakRem;
if (!dc) return FALSE; @@ -1891,15 +1891,16 @@ BOOL WINAPI ExtTextOutW( HDC hdc, INT x, INT y, UINT flags,
if (!dc->funcs->pExtTextOut && !PATH_IsPathOpen(dc->path)) { - DC_ReleaseDCPtr( dc ); + release_dc_ptr( dc ); return ret; }
+ update_dc( dc ); type = GetObjectType(hdc); if(type == OBJ_METADC || type == OBJ_ENHMETADC) { ret = dc->funcs->pExtTextOut(dc->physDev, x, y, flags, lprect, str, count, lpDx); - DC_ReleaseDCPtr( dc ); + release_dc_ptr( dc ); return ret; }
@@ -2198,7 +2199,7 @@ done: if(reordered_str != str) HeapFree(GetProcessHeap(), 0, reordered_str);
- DC_ReleaseDCPtr( dc ); + release_dc_ptr( dc );
if (ret && (lf.lfUnderline || lf.lfStrikeOut)) { diff --git a/dlls/gdi32/opengl.c b/dlls/gdi32/opengl.c index 97ecaf6..137349d 100644 --- a/dlls/gdi32/opengl.c +++ b/dlls/gdi32/opengl.c @@ -55,8 +55,8 @@ static DC* OPENGL_GetDefaultDC(void) { if(!default_hdc) default_hdc = CreateDCA("DISPLAY", NULL, NULL, NULL); - - return DC_GetDCPtr(default_hdc); + + return get_dc_ptr(default_hdc); }
/*********************************************************************** @@ -169,16 +169,17 @@ BOOL WINAPI wglMakeCurrent(HDC hdc, HGLRC hglrc) if(hglrc == NULL) dc = OPENGL_GetDefaultDC(); else - dc = DC_GetDCUpdate( hdc ); + dc = get_dc_ptr( hdc );
TRACE("hdc: (%p), hglrc: (%p)\n", hdc, hglrc);
if (!dc) return FALSE;
+ update_dc( dc ); if (!dc->funcs->pwglMakeCurrent) FIXME(" :stub\n"); else ret = dc->funcs->pwglMakeCurrent(dc->physDev,hglrc);
- DC_ReleaseDCPtr( dc ); + release_dc_ptr( dc ); return ret; }
@@ -294,7 +295,7 @@ PROC WINAPI wglGetProcAddress(LPCSTR func) if (!dc->funcs->pwglGetProcAddress) FIXME(" :stub\n"); else ret = dc->funcs->pwglGetProcAddress(func);
- DC_ReleaseDCPtr( dc ); + release_dc_ptr( dc );
/* At the moment we implement one WGL extension which requires a HDC. When we * are looking up this call and when the Extension is available (that is the case