mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 08:55:19 +00:00
Quick implementation of DxEngCreateMemoryDC and DxEngCleanDC. It compiles. 8^D
svn path=/trunk/; revision=33310
This commit is contained in:
parent
19381c9fed
commit
d6273ed28e
3 changed files with 46 additions and 4 deletions
|
@ -263,5 +263,7 @@ COLORREF STDCALL IntGdiGetTextColor(HDC hDC);
|
|||
INT STDCALL IntGdiSetStretchBltMode(HDC hDC, INT stretchBltMode);
|
||||
VOID FASTCALL IntGdiReferencePdev(PGDIDEVICE pPDev);
|
||||
VOID FASTCALL IntGdiUnreferencePdev(PGDIDEVICE pPDev, DWORD CleanUpType);
|
||||
HDC FASTCALL IntGdiCreateDisplayDC(HDEV hDev, ULONG DcType, BOOL EmptyDC);
|
||||
BOOL FASTCALL IntGdiCleanDC(HDC hDC);
|
||||
|
||||
#endif /* not __WIN32K_DC_H */
|
||||
|
|
|
@ -654,8 +654,7 @@ HDC
|
|||
STDCALL
|
||||
DxEngCreateMemoryDC(HDEV hDev)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return NULL;
|
||||
return IntGdiCreateDisplayDC(hDev, DC_TYPE_MEMORY, FALSE);
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
|
@ -732,8 +731,7 @@ BOOLEAN
|
|||
STDCALL
|
||||
DxEngCleanDC(HDC hdc)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
return IntGdiCleanDC(hdc);
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
static GDIDEVICE PrimarySurface;
|
||||
static KEVENT VideoDriverNeedsPreparation;
|
||||
static KEVENT VideoDriverPrepared;
|
||||
static PDC defaultDCstate = NULL;
|
||||
EDD_DIRECTDRAW_GLOBAL edd_DdirectDraw_Global;
|
||||
|
||||
NTSTATUS FASTCALL
|
||||
|
@ -928,6 +929,47 @@ NtGdiOpenDCW( PUNICODE_STRING Device,
|
|||
|
||||
}
|
||||
|
||||
|
||||
HDC FASTCALL
|
||||
IntGdiCreateDisplayDC(HDEV hDev, ULONG DcType, BOOL EmptyDC)
|
||||
{
|
||||
HDC hDC;
|
||||
UNICODE_STRING DriverName;
|
||||
RtlInitUnicodeString(&DriverName, L"DISPLAY");
|
||||
|
||||
if (DcType != DC_TYPE_MEMORY)
|
||||
hDC = IntGdiCreateDC(&DriverName, NULL, NULL, NULL, (DcType == DC_TYPE_INFO));
|
||||
else
|
||||
hDC = NtGdiCreateCompatibleDC(NULL); // OH~ Yuck! I think I taste vomit in my mouth!
|
||||
//
|
||||
// There is room to grow here~
|
||||
//
|
||||
|
||||
//
|
||||
// If NULL, first time through! Build the default (was window) dc!
|
||||
//
|
||||
if (hDC && !defaultDCstate) // Ultra HAX! Dedicated to GvG!
|
||||
{ // This is a cheesy way to do this.
|
||||
PDC dc = DC_LockDc ( hDC );
|
||||
defaultDCstate = ExAllocatePoolWithTag(PagedPool, sizeof(DC), TAG_DC);
|
||||
RtlZeroMemory(defaultDCstate, sizeof(DC));
|
||||
IntGdiCopyToSaveState(dc, defaultDCstate);
|
||||
DC_UnlockDc( dc );
|
||||
}
|
||||
return hDC;
|
||||
}
|
||||
|
||||
BOOL FASTCALL
|
||||
IntGdiCleanDC(HDC hDC)
|
||||
{
|
||||
PDC dc;
|
||||
dc = DC_LockDc ( hDC );
|
||||
// Clean the DC
|
||||
if (defaultDCstate) IntGdiCopyFromSaveState(dc, defaultDCstate, hDC );
|
||||
DC_UnlockDc(dc);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue