Author: jimtabor
Date: Fri Aug 17 04:08:48 2007
New Revision: 28375
URL:
http://svn.reactos.org/svn/reactos?rev=28375&view=rev
Log:
Fix memory DC so CreateCompatibleDC with null will create it. Based on msdn2 info, we need
to setup display surface, etc.
Modified:
trunk/reactos/dll/win32/gdi32/objects/dc.c
trunk/reactos/subsystems/win32/win32k/objects/dc.c
trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c
Modified: trunk/reactos/dll/win32/gdi32/objects/dc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/gdi32/objects/dc…
==============================================================================
--- trunk/reactos/dll/win32/gdi32/objects/dc.c (original)
+++ trunk/reactos/dll/win32/gdi32/objects/dc.c Fri Aug 17 04:08:48 2007
@@ -789,14 +789,11 @@
case GDI_OBJECT_TYPE_ENHMETAFILE:
Ret = OBJ_ENHMETAFILE;
break;
- case GDI_OBJECT_TYPE_ENHMETADC:
- Ret = OBJ_ENHMETADC;
- break;
+ case GDI_OBJECT_TYPE_METADC:
+ Ret = OBJ_METADC;
+ break;
case GDI_OBJECT_TYPE_EXTPEN:
Ret = OBJ_EXTPEN;
- break;
- case GDI_OBJECT_TYPE_MEMDC:
- Ret = OBJ_MEMDC;
break;
default:
Modified: trunk/reactos/subsystems/win32/win32k/objects/dc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/dc.c (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/dc.c Fri Aug 17 04:08:48 2007
@@ -166,7 +166,8 @@
HDC hNewDC, DisplayDC;
HRGN hVisRgn;
UNICODE_STRING DriverName;
-
+ INT DC_Type = DC_TYPE_DIRECT;
+
DisplayDC = NULL;
if (hDC == NULL)
{
@@ -177,6 +178,7 @@
return NULL;
}
hDC = DisplayDC;
+ DC_Type = DC_TYPE_MEMORY; // Null hDC == Memory DC.
}
/* Allocate a new DC based on the original DC's device */
@@ -205,7 +207,8 @@
/* Copy information from original DC to new DC */
NewDC->hSelf = hNewDC;
NewDC->IsIC = FALSE;
-
+ NewDC->DC_Type = DC_Type;
+
NewDC->PDev = OrigDC->PDev;
memcpy(NewDC->FillPatternSurfaces,
OrigDC->FillPatternSurfaces,
@@ -891,6 +894,7 @@
return NULL;
}
+ NewDC->DC_Type = DC_TYPE_DIRECT;
NewDC->IsIC = CreateAsIC;
NewDC->DevInfo = &PrimarySurface.DevInfo;
NewDC->GDIInfo = &PrimarySurface.GDIInfo;
@@ -2174,12 +2178,7 @@
case GdiGetFontLanguageInfo:
break;
case GdiGetIsMemDc:
- {
- if (dc->w.flags & DC_MEMORY)
- SafeResult = DC_TYPE_MEMORY; // = dc->DC_Type;
- else
- SafeResult = DC_TYPE_DIRECT;
- }
+ SafeResult = dc->DC_Type;
break;
case GdiGetMapMode:
SafeResult = dc->Dc_Attr.iMapMode;
Modified: trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c Fri Aug 17 04:08:48 2007
@@ -84,8 +84,6 @@
{GDI_OBJECT_TYPE_METADC, sizeof(DC), GDI_CleanupDummy},
{GDI_OBJECT_TYPE_METAFILE, sizeof(DC), GDI_CleanupDummy},
{GDI_OBJECT_TYPE_ENHMETAFILE, 0, GDI_CleanupDummy},
- {GDI_OBJECT_TYPE_ENHMETADC, 0, GDI_CleanupDummy},
- {GDI_OBJECT_TYPE_MEMDC, 0, GDI_CleanupDummy},
{GDI_OBJECT_TYPE_EMF, 0, GDI_CleanupDummy}
};