Use a different magic for memory DCs and get rid of the DC_MEMORY
flag.

diff --git a/graphics/x11drv/bitblt.c b/graphics/x11drv/bitblt.c
index 06700aa..e81d184 100644
--- a/graphics/x11drv/bitblt.c
+++ b/graphics/x11drv/bitblt.c
@@ -953,7 +953,7 @@
         }
         else  /* color -> color */
         {
-            if (dcSrc->flags & DC_MEMORY)
+            if (GetObjectType(physDevSrc->hdc) == OBJ_MEMDC)
                 imageSrc = XGetImage( gdi_display, physDevSrc->drawable,
                                       physDevSrc->org.x + visRectSrc->left,
                                       physDevSrc->org.y + visRectSrc->top,
@@ -1047,7 +1047,7 @@
         register INT x, y;
         XImage *image;
 
-        if (physDev->dc->flags & DC_MEMORY)
+        if (GetObjectType( physDev->hdc ) == OBJ_MEMDC)
             image = XGetImage( gdi_display, physDev->drawable,
                                physDev->org.x + visRectDst->left,
                                physDev->org.y + visRectDst->top,
diff --git a/graphics/x11drv/dib.c b/graphics/x11drv/dib.c
index 84d4cb7..4a3db48 100644
--- a/graphics/x11drv/dib.c
+++ b/graphics/x11drv/dib.c
@@ -5209,7 +5209,7 @@
     xSrc, ySrc, xDest, yDest, width, height);
   /* this function is meant as an optimization for BitBlt,
    * not to be called otherwise */
-  if (!(dcSrc->flags & DC_MEMORY)) {
+  if (GetObjectType( physDevSrc->hdc ) != OBJ_MEMDC) {
     ERR("called for non-memory source DC!?\n");
     return;
   }
@@ -5621,7 +5621,7 @@
 INT X11DRV_LockDIBSection(X11DRV_PDEVICE *physDev, INT req, BOOL lossy)
 {
   if (!physDev) return DIB_Status_None;
-  if (!(physDev->dc->flags & DC_MEMORY)) return DIB_Status_None;
+  if (GetObjectType( physDev->hdc ) != OBJ_MEMDC) return DIB_Status_None;
 
   return X11DRV_LockDIBSection2( physDev->dc->hBitmap, req, lossy );
 }
@@ -5632,7 +5632,7 @@
 void X11DRV_UnlockDIBSection(X11DRV_PDEVICE *physDev, BOOL commit)
 {
   if (!physDev) return;
-  if (!(physDev->dc->flags & DC_MEMORY)) return;
+  if (GetObjectType( physDev->hdc ) != OBJ_MEMDC) return;
 
   X11DRV_UnlockDIBSection2( physDev->dc->hBitmap, commit );
 }
diff --git a/graphics/x11drv/graphics.c b/graphics/x11drv/graphics.c
index b3273a6..7b7729c 100644
--- a/graphics/x11drv/graphics.c
+++ b/graphics/x11drv/graphics.c
@@ -898,6 +898,7 @@
     XImage * image;
     int pixel;
     POINT pt;
+    BOOL memdc = (GetObjectType(physDev->hdc) == OBJ_MEMDC);
     DC *dc = physDev->dc;
 
     pt.x = x;
@@ -908,7 +909,7 @@
     X11DRV_LockDIBSection(physDev, DIB_Status_GdiMod, FALSE);
 
     wine_tsx11_lock();
-    if (dc->flags & DC_MEMORY)
+    if (memdc)
     {
         image = XGetImage( gdi_display, physDev->drawable,
                            physDev->org.x + pt.x, physDev->org.y + pt.y,
diff --git a/graphics/x11drv/init.c b/graphics/x11drv/init.c
index 7577582..944ec4c 100644
--- a/graphics/x11drv/init.c
+++ b/graphics/x11drv/init.c
@@ -103,7 +103,7 @@
     physDev->hdc = dc->hSelf;
     physDev->dc  = dc;  /* FIXME */
 
-    if (dc->flags & DC_MEMORY)
+    if (GetObjectType( dc->hSelf ) == OBJ_MEMDC)
     {
         physDev->drawable  = BITMAP_stock_pixmap;
     }
diff --git a/graphics/x11drv/palette.c b/graphics/x11drv/palette.c
index 22b4b19..212dd8d 100644
--- a/graphics/x11drv/palette.c
+++ b/graphics/x11drv/palette.c
@@ -1233,10 +1233,9 @@
  */
 UINT X11DRV_RealizeDefaultPalette( X11DRV_PDEVICE *physDev )
 {
-    DC *dc = physDev->dc;
     UINT ret = 0;
 
-    if (palette_size && !(dc->flags & DC_MEMORY))
+    if (palette_size && GetObjectType(physDev->hdc) != OBJ_MEMDC)
     {
         PALETTEOBJ*  palPtr = GDI_GetObjPtr( GetStockObject(DEFAULT_PALETTE), PALETTE_MAGIC );
         if (palPtr)