Remove X_DC_INFO from DC and make it behave like any other PDEVICE.
diff --git a/graphics/x11drv/init.c b/graphics/x11drv/init.c
index 1147c9d..4091c4f 100644
--- a/graphics/x11drv/init.c
+++ b/graphics/x11drv/init.c
@@ -8,7 +8,8 @@
#include "x11drv.h"
#include "color.h"
#include "bitmap.h"
-
+#include "winnt.h"
+#include "debug.h"
static BOOL32 X11DRV_CreateDC( DC *dc, LPCSTR driver, LPCSTR device,
LPCSTR output, const DEVMODE16* initData );
@@ -170,10 +171,13 @@
{
X11DRV_PDEVICE *physDev;
- physDev = &dc->u.x; /* for now */
+ dc->physDev = physDev = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY,
+ sizeof(*physDev) );
+ if(!physDev) {
+ ERR(x11drv, "Can't allocate physDev\n");
+ return FALSE;
+ }
- memset( physDev, 0, sizeof(*physDev) );
- dc->physDev = physDev;
dc->w.devCaps = &X11DRV_DevCaps;
if (dc->w.flags & DC_MEMORY)
{
@@ -227,6 +231,8 @@
{
X11DRV_PDEVICE *physDev = (X11DRV_PDEVICE *)dc->physDev;
TSXFreeGC( display, physDev->gc );
+ HeapFree( GetProcessHeap(), 0, physDev );
+ dc->physDev = NULL;
return TRUE;
}