gdi32: Use NtGdiResetDC for ResetDCW.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2021-08-23 13:50:47 +02:00 committed by Alexandre Julliard
parent c0e7df8b42
commit e33cdf89c5
6 changed files with 26 additions and 15 deletions

View File

@ -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; DC *dc;
HDC ret = 0; BOOL ret = FALSE;
if ((dc = get_dc_ptr( hdc ))) if ((dc = get_dc_ptr( hdc )))
{ {
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pResetDC ); 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 */ if (ret) /* reset the visible region */
{ {
dc->dirty = 0; 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.top = 0;
dc->attr->vis_rect.right = GetDeviceCaps( hdc, DESKTOPHORZRES ); dc->attr->vis_rect.right = GetDeviceCaps( hdc, DESKTOPHORZRES );
dc->attr->vis_rect.bottom = GetDeviceCaps( hdc, DESKTOPVERTRES ); dc->attr->vis_rect.bottom = GetDeviceCaps( hdc, DESKTOPVERTRES );
if (dc->hVisRgn) DeleteObject( dc->hVisRgn ); if (dc->hVisRgn) NtGdiDeleteObjectApp( dc->hVisRgn );
dc->hVisRgn = 0; dc->hVisRgn = 0;
update_dc_clipping( dc ); 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. * 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. * 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. * Note: this doesn't exist in Win32, we add it here because user32 needs it.
*/ */

View File

@ -720,9 +720,9 @@ static BOOL CDECL nulldrv_Rectangle( PHYSDEV dev, INT left, INT top, INT right,
return TRUE; 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, static BOOL CDECL nulldrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom,

View File

@ -112,6 +112,14 @@ HDC WINAPI ResetDCA( HDC hdc, const DEVMODEA *devmode )
return ret; return ret;
} }
/***********************************************************************
* ResetDCW (GDI32.@)
*/
HDC WINAPI ResetDCW( HDC hdc, const DEVMODEW *devmode )
{
return NtGdiResetDC( hdc, devmode, NULL, NULL, NULL ) ? hdc : 0;
}
/*********************************************************************** /***********************************************************************
* SaveDC (GDI32.@) * SaveDC (GDI32.@)
*/ */

View File

@ -448,7 +448,7 @@ static BOOL CDECL PSDRV_DeleteDC( PHYSDEV dev )
/********************************************************************** /**********************************************************************
* ResetDC (WINEPS.@) * 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 ); 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_MergeDevmodes(physDev->Devmode, (const PSDRV_DEVMODE *)lpInitData, physDev->pi);
PSDRV_UpdateDevCaps(physDev); PSDRV_UpdateDevCaps(physDev);
} }
return dev->hdc; return TRUE;
} }
/*********************************************************************** /***********************************************************************

View File

@ -20,6 +20,7 @@
#define _NTGDI_ #define _NTGDI_
#include <wingdi.h> #include <wingdi.h>
#include <winspool.h>
typedef struct _GDI_HANDLE_ENTRY 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 NtGdiRectInRegion( HRGN hrgn, const RECT *rect );
BOOL WINAPI NtGdiRectVisible( HDC hdc, const RECT *rect ); BOOL WINAPI NtGdiRectVisible( HDC hdc, const RECT *rect );
BOOL WINAPI NtGdiRectangle( HDC hdc, INT left, INT top, INT right, INT bottom ); 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 NtGdiResizePalette( HPALETTE palette, UINT count );
BOOL WINAPI NtGdiRestoreDC( HDC hdc, INT level ); BOOL WINAPI NtGdiRestoreDC( HDC hdc, INT level );
BOOL WINAPI NtGdiRoundRect( HDC hdc, INT left, INT top, INT right, BOOL WINAPI NtGdiRoundRect( HDC hdc, INT left, INT top, INT right,

View File

@ -137,7 +137,7 @@ struct gdi_dc_funcs
UINT (CDECL *pRealizeDefaultPalette)(PHYSDEV); UINT (CDECL *pRealizeDefaultPalette)(PHYSDEV);
UINT (CDECL *pRealizePalette)(PHYSDEV,HPALETTE,BOOL); UINT (CDECL *pRealizePalette)(PHYSDEV,HPALETTE,BOOL);
BOOL (CDECL *pRectangle)(PHYSDEV,INT,INT,INT,INT); 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); BOOL (CDECL *pRoundRect)(PHYSDEV,INT,INT,INT,INT,INT,INT);
HBITMAP (CDECL *pSelectBitmap)(PHYSDEV,HBITMAP); HBITMAP (CDECL *pSelectBitmap)(PHYSDEV,HBITMAP);
HBRUSH (CDECL *pSelectBrush)(PHYSDEV,HBRUSH,const struct brush_pattern*); 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 */ /* 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_NULL_DRV 0 /* null driver */
#define GDI_PRIORITY_FONT_DRV 100 /* any font driver */ #define GDI_PRIORITY_FONT_DRV 100 /* any font driver */