Get rid of a W->A crosscall (ResetDCA->ResetDCW).
diff --git a/dlls/wineps/init.c b/dlls/wineps/init.c
index 763559e..aed8dd8 100644
--- a/dlls/wineps/init.c
+++ b/dlls/wineps/init.c
@@ -384,11 +384,13 @@
/**********************************************************************
* ResetDC (WINEPS.@)
*/
-HDC PSDRV_ResetDC( PSDRV_PDEVICE *physDev, const DEVMODEA *lpInitData )
+HDC PSDRV_ResetDC( PSDRV_PDEVICE *physDev, const DEVMODEW *lpInitData )
{
if(lpInitData) {
HRGN hrgn;
- PSDRV_MergeDevmodes(physDev->Devmode, (PSDRV_DEVMODEA *)lpInitData, physDev->pi);
+ DEVMODEA *devmodeA = DEVMODEdupWtoA(PSDRV_Heap, lpInitData);
+ PSDRV_MergeDevmodes(physDev->Devmode, (PSDRV_DEVMODEA *)devmodeA, physDev->pi);
+ HeapFree(PSDRV_Heap, 0, devmodeA);
PSDRV_UpdateDevCaps(physDev);
hrgn = CreateRectRgn(0, 0, physDev->horzRes, physDev->vertRes);
SelectVisRgn16(HDC_16(physDev->hdc), HRGN_16(hrgn));
diff --git a/include/gdi.h b/include/gdi.h
index 76b90d8..2a8f9a7 100644
--- a/include/gdi.h
+++ b/include/gdi.h
@@ -250,7 +250,7 @@
UINT (*pRealizeDefaultPalette)(PHYSDEV);
UINT (*pRealizePalette)(PHYSDEV,HPALETTE,BOOL);
BOOL (*pRectangle)(PHYSDEV,INT,INT,INT,INT);
- HDC (*pResetDC)(PHYSDEV,const DEVMODEA*);
+ HDC (*pResetDC)(PHYSDEV,const DEVMODEW*);
BOOL (*pRestoreDC)(PHYSDEV,INT);
BOOL (*pRoundRect)(PHYSDEV,INT,INT,INT,INT,INT,INT);
INT (*pSaveDC)(PHYSDEV);
diff --git a/objects/dc.c b/objects/dc.c
index 04a5f04..99a576e 100644
--- a/objects/dc.c
+++ b/objects/dc.c
@@ -812,9 +812,9 @@
/***********************************************************************
- * ResetDCA (GDI32.@)
+ * ResetDCW (GDI32.@)
*/
-HDC WINAPI ResetDCA( HDC hdc, const DEVMODEA *devmode )
+HDC WINAPI ResetDCW( HDC hdc, const DEVMODEW *devmode )
{
DC *dc;
HDC ret = hdc;
@@ -829,11 +829,20 @@
/***********************************************************************
- * ResetDCW (GDI32.@)
+ * ResetDCA (GDI32.@)
*/
-HDC WINAPI ResetDCW( HDC hdc, const DEVMODEW *devmode )
+HDC WINAPI ResetDCA( HDC hdc, const DEVMODEA *devmode )
{
- return ResetDCA(hdc, (const DEVMODEA*)devmode); /* FIXME */
+ DEVMODEW *devmodeW;
+ HDC ret;
+
+ if (devmode) devmodeW = GdiConvertToDevmodeW(devmode);
+ else devmodeW = NULL;
+
+ ret = ResetDCW(hdc, devmodeW);
+
+ if (devmodeW) HeapFree(GetProcessHeap(), 0, devmodeW);
+ return ret;
}