Alexandre Julliard : gdi32: Replace remaining instance of DC_GetDCUpdate by get_dc_ptr+update_dc.

Alexandre Julliard julliard at winehq.org
Tue Sep 18 05:30:58 CDT 2007


Module: wine
Branch: master
Commit: 99a258311c725e3b931f123259a0732738be9125
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=99a258311c725e3b931f123259a0732738be9125

Author: Alexandre Julliard <julliard at 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




More information about the wine-cvs mailing list