Jacek Caban : gdi32: Move disabled flag to DC_ATTR.

Alexandre Julliard julliard at winehq.org
Wed Jul 28 15:37:41 CDT 2021


Module: wine
Branch: master
Commit: ed1fbcf75bb35de9d9836bed6b8615bae3b1eb84
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=ed1fbcf75bb35de9d9836bed6b8615bae3b1eb84

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Jul 28 11:38:58 2021 +0200

gdi32: Move disabled flag to DC_ATTR.

And honour it in get_dc_attr.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/gdi32/dc.c            | 6 +++---
 dlls/gdi32/gdidc.c         | 2 +-
 dlls/gdi32/ntgdi_private.h | 1 -
 include/ntgdi.h            | 1 +
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c
index cba97c1231a..5f86bb524ba 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -206,7 +206,7 @@ DC *get_dc_ptr( HDC hdc )
 {
     DC *dc = get_dc_obj( hdc );
     if (!dc) return NULL;
-    if (dc->disabled)
+    if (dc->attr->disabled)
     {
         GDI_ReleaseObj( hdc );
         return NULL;
@@ -1258,9 +1258,9 @@ WORD WINAPI SetHookFlags( HDC hdc, WORD flags )
         ret = InterlockedExchange( &dc->dirty, 0 );
 
     if (flags & DCHF_DISABLEDC)
-        ret = InterlockedExchange( &dc->disabled, 1 );
+        ret = InterlockedExchange( &dc->attr->disabled, 1 );
     else if (flags & DCHF_ENABLEDC)
-        ret = InterlockedExchange( &dc->disabled, 0 );
+        ret = InterlockedExchange( &dc->attr->disabled, 0 );
 
     GDI_ReleaseObj( hdc );
 
diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c
index 3b477f920f9..1318533d100 100644
--- a/dlls/gdi32/gdidc.c
+++ b/dlls/gdi32/gdidc.c
@@ -34,7 +34,7 @@ static DC_ATTR *get_dc_attr( HDC hdc )
         SetLastError( ERROR_INVALID_HANDLE );
         return NULL;
     }
-    return dc_attr;
+    return dc_attr->disabled ? NULL : dc_attr;
 }
 
 /***********************************************************************
diff --git a/dlls/gdi32/ntgdi_private.h b/dlls/gdi32/ntgdi_private.h
index 674c5085a7f..6efc3f2e7d1 100644
--- a/dlls/gdi32/ntgdi_private.h
+++ b/dlls/gdi32/ntgdi_private.h
@@ -79,7 +79,6 @@ typedef struct tagDC
     DWORD        thread;           /* thread owning the DC */
     LONG         refcount;         /* thread refcount */
     LONG         dirty;            /* dirty flag */
-    LONG         disabled;         /* get_dc_ptr() will return NULL.  Controlled by DCHF_(DISABLE|ENABLE)DC */
     INT          saveLevel;
     DC_ATTR     *attr;             /* DC attributes accessible by client */
     struct tagDC *saved_dc;
diff --git a/include/ntgdi.h b/include/ntgdi.h
index f71c993e67c..f1a3436437f 100644
--- a/include/ntgdi.h
+++ b/include/ntgdi.h
@@ -98,6 +98,7 @@ enum
 
 typedef struct DC_ATTR
 {
+    LONG      disabled;            /* disabled flag, controled by DCHF_(DISABLE|ENABLE)DC */
     POINT     cur_pos;
     INT       graphics_mode;
     WORD      text_align;




More information about the wine-cvs mailing list