Jacek Caban : gdi32: Store save level in DC_ATTR.
Alexandre Julliard
julliard at winehq.org
Tue Aug 17 16:26:51 CDT 2021
Module: wine
Branch: master
Commit: 8eab13f397db05cae95fc7a44e9183c37dd14ee5
URL: https://source.winehq.org/git/wine.git/?a=commit;h=8eab13f397db05cae95fc7a44e9183c37dd14ee5
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Aug 17 11:37:21 2021 +0200
gdi32: Store save level in 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 | 12 ++++++------
dlls/gdi32/enhmfdrv/dc.c | 2 +-
dlls/gdi32/enhmfdrv/init.c | 4 ++--
dlls/gdi32/ntgdi_private.h | 1 -
include/ntgdi.h | 1 +
5 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c
index 5a62320ed79..c8e1e63e274 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -404,10 +404,10 @@ BOOL CDECL nulldrv_RestoreDC( PHYSDEV dev, INT level )
/* find the state level to restore */
- if (abs(level) > dc->saveLevel || level == 0) return FALSE;
- if (level < 0) level = dc->saveLevel + level + 1;
+ if (abs(level) > dc->attr->save_level || level == 0) return FALSE;
+ if (level < 0) level = dc->attr->save_level + level + 1;
first_dcs = dc->saved_dc;
- for (dcs = first_dcs, save_level = dc->saveLevel; save_level > level; save_level--)
+ for (dcs = first_dcs, save_level = dc->attr->save_level; save_level > level; save_level--)
dcs = dcs->saved_dc;
/* restore the state */
@@ -478,7 +478,7 @@ BOOL CDECL nulldrv_RestoreDC( PHYSDEV dev, INT level )
dc->saved_dc = dcs->saved_dc;
dcs->saved_dc = 0;
- dc->saveLevel = save_level - 1;
+ dc->attr->save_level = save_level - 1;
/* now destroy all the saved DCs */
@@ -524,7 +524,7 @@ static BOOL reset_dc_state( HDC hdc )
free_dc_state( dcs );
}
dc->saved_dc = NULL;
- dc->saveLevel = 0;
+ dc->attr->save_level = 0;
release_dc_ptr( dc );
return TRUE;
}
@@ -587,7 +587,7 @@ INT WINAPI NtGdiSaveDC( HDC hdc )
newdc->saved_dc = dc->saved_dc;
dc->saved_dc = newdc;
- ret = ++dc->saveLevel;
+ ret = ++dc->attr->save_level;
release_dc_ptr( dc );
return ret;
}
diff --git a/dlls/gdi32/enhmfdrv/dc.c b/dlls/gdi32/enhmfdrv/dc.c
index bc5c25145ef..867fb3e1380 100644
--- a/dlls/gdi32/enhmfdrv/dc.c
+++ b/dlls/gdi32/enhmfdrv/dc.c
@@ -44,7 +44,7 @@ BOOL CDECL EMFDRV_RestoreDC( PHYSDEV dev, INT level )
if (level < 0)
emr.iRelative = level;
else
- emr.iRelative = level - dc->saveLevel - 1;
+ emr.iRelative = level - dc->attr->save_level - 1;
physDev->restoring++;
ret = next->funcs->pRestoreDC( next, level );
diff --git a/dlls/gdi32/enhmfdrv/init.c b/dlls/gdi32/enhmfdrv/init.c
index 2623d9b4445..5db96df4f16 100644
--- a/dlls/gdi32/enhmfdrv/init.c
+++ b/dlls/gdi32/enhmfdrv/init.c
@@ -439,8 +439,8 @@ HENHMETAFILE WINAPI CloseEnhMetaFile(HDC hdc) /* [in] metafile DC */
}
physDev = get_emf_physdev( find_dc_driver( dc, &emfdrv_driver ));
- if(dc->saveLevel)
- RestoreDC(hdc, 1);
+ if (dc->attr->save_level)
+ RestoreDC( hdc, 1 );
if (physDev->dc_brush) DeleteObject( physDev->dc_brush );
if (physDev->dc_pen) DeleteObject( physDev->dc_pen );
diff --git a/dlls/gdi32/ntgdi_private.h b/dlls/gdi32/ntgdi_private.h
index 6b3efea3ddb..978a9a42cd3 100644
--- a/dlls/gdi32/ntgdi_private.h
+++ b/dlls/gdi32/ntgdi_private.h
@@ -72,7 +72,6 @@ typedef struct tagDC
DWORD thread; /* thread owning the DC */
LONG refcount; /* thread refcount */
LONG dirty; /* dirty flag */
- INT saveLevel;
DC_ATTR *attr; /* DC attributes accessible by client */
struct tagDC *saved_dc;
DWORD_PTR dwHookData;
diff --git a/include/ntgdi.h b/include/ntgdi.h
index 16df2d39957..5fb3ac76c04 100644
--- a/include/ntgdi.h
+++ b/include/ntgdi.h
@@ -127,6 +127,7 @@ typedef struct DC_ATTR
{
HDC hdc; /* handle to self */
LONG disabled; /* disabled flag, controled by DCHF_(DISABLE|ENABLE)DC */
+ int save_level;
COLORREF background_color;
COLORREF brush_color;
COLORREF pen_color;
More information about the wine-cvs
mailing list