Moved DC origin into device-specific structure.
Fixed handling of DC origin in X11 driver.
diff --git a/dlls/wineps/init.c b/dlls/wineps/init.c
index a2d6083..e28be99 100644
--- a/dlls/wineps/init.c
+++ b/dlls/wineps/init.c
@@ -229,7 +229,7 @@
/**********************************************************************
* PSDRV_CreateDC
*/
-BOOL PSDRV_CreateDC( DC *dc, LPCSTR driver, LPCSTR device,
+BOOL PSDRV_CreateDC( DC *dc, PSDRV_PDEVICE **pdev, LPCSTR driver, LPCSTR device,
LPCSTR output, const DEVMODEA* initData )
{
PSDRV_PDEVICE *physDev;
@@ -238,9 +238,9 @@
/* If no device name was specified, retrieve the device name
* from the DEVMODE structure from the DC's physDev.
* (See CreateCompatibleDC) */
- if ( !device && dc->physDev )
+ if ( !device && *pdev )
{
- physDev = (PSDRV_PDEVICE *)dc->physDev;
+ physDev = *pdev;
device = physDev->Devmode->dmPublic.dmDeviceName;
}
pi = PSDRV_FindPrinterInfo(device);
@@ -257,7 +257,7 @@
physDev = (PSDRV_PDEVICE *)HeapAlloc( PSDRV_Heap, HEAP_ZERO_MEMORY,
sizeof(*physDev) );
if (!physDev) return FALSE;
- dc->physDev = (PHYSDEV)physDev;
+ *pdev = physDev;
physDev->hdc = dc->hSelf;
physDev->dc = dc;
@@ -300,7 +300,6 @@
HeapFree( PSDRV_Heap, 0, physDev->Devmode );
HeapFree( PSDRV_Heap, 0, physDev->job.output );
- physDev->dc->physDev = NULL;
HeapFree( PSDRV_Heap, 0, physDev );
return TRUE;