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)