Jacek Caban : gdi32: Use NtGdiResetDC for ResetDCW.
Alexandre Julliard
julliard at winehq.org
Mon Aug 23 16:24:14 CDT 2021
Module: wine
Branch: master
Commit: e33cdf89c5a071c652584c24a46ab9ecf4d5a750
URL: https://source.winehq.org/git/wine.git/?a=commit;h=e33cdf89c5a071c652584c24a46ab9ecf4d5a750
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Aug 23 13:50:47 2021 +0200
gdi32: Use NtGdiResetDC for ResetDCW.
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 | 17 +++++++++--------
dlls/gdi32/driver.c | 4 ++--
dlls/gdi32/gdidc.c | 8 ++++++++
dlls/wineps.drv/init.c | 4 ++--
include/ntgdi.h | 4 +++-
include/wine/gdi_driver.h | 4 ++--
6 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c
index e4f643389d5..fa15b43fc8b 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -770,17 +770,18 @@ BOOL WINAPI DeleteDC( HDC hdc )
/***********************************************************************
- * ResetDCW (GDI32.@)
+ * NtGdiResetDC (win32u.@)
*/
-HDC WINAPI ResetDCW( HDC hdc, const DEVMODEW *devmode )
+BOOL WINAPI NtGdiResetDC( HDC hdc, const DEVMODEW *devmode, BOOL *banding,
+ DRIVER_INFO_2W *driver_info, void *dev )
{
DC *dc;
- HDC ret = 0;
+ BOOL ret = FALSE;
if ((dc = get_dc_ptr( hdc )))
{
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pResetDC );
- ret = physdev->funcs->pResetDC( physdev, devmode );
+ ret = physdev->funcs->pResetDC( physdev, devmode ) != 0;
if (ret) /* reset the visible region */
{
dc->dirty = 0;
@@ -788,7 +789,7 @@ HDC WINAPI ResetDCW( HDC hdc, const DEVMODEW *devmode )
dc->attr->vis_rect.top = 0;
dc->attr->vis_rect.right = GetDeviceCaps( hdc, DESKTOPHORZRES );
dc->attr->vis_rect.bottom = GetDeviceCaps( hdc, DESKTOPVERTRES );
- if (dc->hVisRgn) DeleteObject( dc->hVisRgn );
+ if (dc->hVisRgn) NtGdiDeleteObjectApp( dc->hVisRgn );
dc->hVisRgn = 0;
update_dc_clipping( dc );
}
@@ -996,7 +997,7 @@ BOOL WINAPI CombineTransform( LPXFORM xformResult, const XFORM *xform1,
/***********************************************************************
- * SetDCHook (GDI32.@)
+ * SetDCHook (win32u.@)
*
* Note: this doesn't exist in Win32, we add it here because user32 needs it.
*/
@@ -1014,7 +1015,7 @@ BOOL WINAPI SetDCHook( HDC hdc, DCHOOKPROC hookProc, DWORD_PTR dwHookData )
/***********************************************************************
- * GetDCHook (GDI32.@)
+ * GetDCHook (win32u.@)
*
* Note: this doesn't exist in Win32, we add it here because user32 needs it.
*/
@@ -1032,7 +1033,7 @@ DWORD_PTR WINAPI GetDCHook( HDC hdc, DCHOOKPROC *proc )
/***********************************************************************
- * SetHookFlags (GDI32.@)
+ * SetHookFlags (win32u.@)
*
* Note: this doesn't exist in Win32, we add it here because user32 needs it.
*/
diff --git a/dlls/gdi32/driver.c b/dlls/gdi32/driver.c
index 23bfc87a761..1df4660211e 100644
--- a/dlls/gdi32/driver.c
+++ b/dlls/gdi32/driver.c
@@ -720,9 +720,9 @@ static BOOL CDECL nulldrv_Rectangle( PHYSDEV dev, INT left, INT top, INT right,
return TRUE;
}
-static HDC CDECL nulldrv_ResetDC( PHYSDEV dev, const DEVMODEW *devmode )
+static BOOL CDECL nulldrv_ResetDC( PHYSDEV dev, const DEVMODEW *devmode )
{
- return 0;
+ return FALSE;
}
static BOOL CDECL nulldrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
diff --git a/dlls/gdi32/gdidc.c b/dlls/gdi32/gdidc.c
index 68bffdfbac3..0b005944f93 100644
--- a/dlls/gdi32/gdidc.c
+++ b/dlls/gdi32/gdidc.c
@@ -112,6 +112,14 @@ HDC WINAPI ResetDCA( HDC hdc, const DEVMODEA *devmode )
return ret;
}
+/***********************************************************************
+ * ResetDCW (GDI32.@)
+ */
+HDC WINAPI ResetDCW( HDC hdc, const DEVMODEW *devmode )
+{
+ return NtGdiResetDC( hdc, devmode, NULL, NULL, NULL ) ? hdc : 0;
+}
+
/***********************************************************************
* SaveDC (GDI32.@)
*/
diff --git a/dlls/wineps.drv/init.c b/dlls/wineps.drv/init.c
index 7b6a8f3d67b..58542c19811 100644
--- a/dlls/wineps.drv/init.c
+++ b/dlls/wineps.drv/init.c
@@ -448,7 +448,7 @@ static BOOL CDECL PSDRV_DeleteDC( PHYSDEV dev )
/**********************************************************************
* ResetDC (WINEPS.@)
*/
-static HDC CDECL PSDRV_ResetDC( PHYSDEV dev, const DEVMODEW *lpInitData )
+static BOOL CDECL PSDRV_ResetDC( PHYSDEV dev, const DEVMODEW *lpInitData )
{
PSDRV_PDEVICE *physDev = get_psdrv_dev( dev );
@@ -457,7 +457,7 @@ static HDC CDECL PSDRV_ResetDC( PHYSDEV dev, const DEVMODEW *lpInitData )
PSDRV_MergeDevmodes(physDev->Devmode, (const PSDRV_DEVMODE *)lpInitData, physDev->pi);
PSDRV_UpdateDevCaps(physDev);
}
- return dev->hdc;
+ return TRUE;
}
/***********************************************************************
diff --git a/include/ntgdi.h b/include/ntgdi.h
index cec0d3d10f1..03b476e349c 100644
--- a/include/ntgdi.h
+++ b/include/ntgdi.h
@@ -20,6 +20,7 @@
#define _NTGDI_
#include <wingdi.h>
+#include <winspool.h>
typedef struct _GDI_HANDLE_ENTRY
{
@@ -268,7 +269,8 @@ BOOL WINAPI NtGdiPtVisible( HDC hdc, INT x, INT y );
BOOL WINAPI NtGdiRectInRegion( HRGN hrgn, const RECT *rect );
BOOL WINAPI NtGdiRectVisible( HDC hdc, const RECT *rect );
BOOL WINAPI NtGdiRectangle( HDC hdc, INT left, INT top, INT right, INT bottom );
-HDC WINAPI NtGdiResetDC( HDC hdc, const DEVMODEW *devmode );
+BOOL WINAPI NtGdiResetDC( HDC hdc, const DEVMODEW *devmode, BOOL *banding,
+ DRIVER_INFO_2W *driver_info, void *dev );
BOOL WINAPI NtGdiResizePalette( HPALETTE palette, UINT count );
BOOL WINAPI NtGdiRestoreDC( HDC hdc, INT level );
BOOL WINAPI NtGdiRoundRect( HDC hdc, INT left, INT top, INT right,
diff --git a/include/wine/gdi_driver.h b/include/wine/gdi_driver.h
index 641d74ea82e..5ca84ccf56c 100644
--- a/include/wine/gdi_driver.h
+++ b/include/wine/gdi_driver.h
@@ -137,7 +137,7 @@ struct gdi_dc_funcs
UINT (CDECL *pRealizeDefaultPalette)(PHYSDEV);
UINT (CDECL *pRealizePalette)(PHYSDEV,HPALETTE,BOOL);
BOOL (CDECL *pRectangle)(PHYSDEV,INT,INT,INT,INT);
- HDC (CDECL *pResetDC)(PHYSDEV,const DEVMODEW*);
+ BOOL (CDECL *pResetDC)(PHYSDEV,const DEVMODEW*);
BOOL (CDECL *pRoundRect)(PHYSDEV,INT,INT,INT,INT,INT,INT);
HBITMAP (CDECL *pSelectBitmap)(PHYSDEV,HBITMAP);
HBRUSH (CDECL *pSelectBrush)(PHYSDEV,HBRUSH,const struct brush_pattern*);
@@ -169,7 +169,7 @@ struct gdi_dc_funcs
};
/* increment this when you change the DC function table */
-#define WINE_GDI_DRIVER_VERSION 63
+#define WINE_GDI_DRIVER_VERSION 64
#define GDI_PRIORITY_NULL_DRV 0 /* null driver */
#define GDI_PRIORITY_FONT_DRV 100 /* any font driver */
More information about the wine-cvs
mailing list