mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 09:25:10 +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);
|
INT STDCALL IntGdiSetStretchBltMode(HDC hDC, INT stretchBltMode);
|
||||||
VOID FASTCALL IntGdiReferencePdev(PGDIDEVICE pPDev);
|
VOID FASTCALL IntGdiReferencePdev(PGDIDEVICE pPDev);
|
||||||
VOID FASTCALL IntGdiUnreferencePdev(PGDIDEVICE pPDev, DWORD CleanUpType);
|
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 */
|
#endif /* not __WIN32K_DC_H */
|
||||||
|
|
|
@ -654,8 +654,7 @@ HDC
|
||||||
STDCALL
|
STDCALL
|
||||||
DxEngCreateMemoryDC(HDEV hDev)
|
DxEngCreateMemoryDC(HDEV hDev)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
return IntGdiCreateDisplayDC(hDev, DC_TYPE_MEMORY, FALSE);
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
@ -732,8 +731,7 @@ BOOLEAN
|
||||||
STDCALL
|
STDCALL
|
||||||
DxEngCleanDC(HDC hdc)
|
DxEngCleanDC(HDC hdc)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
return IntGdiCleanDC(hdc);
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
static GDIDEVICE PrimarySurface;
|
static GDIDEVICE PrimarySurface;
|
||||||
static KEVENT VideoDriverNeedsPreparation;
|
static KEVENT VideoDriverNeedsPreparation;
|
||||||
static KEVENT VideoDriverPrepared;
|
static KEVENT VideoDriverPrepared;
|
||||||
|
static PDC defaultDCstate = NULL;
|
||||||
EDD_DIRECTDRAW_GLOBAL edd_DdirectDraw_Global;
|
EDD_DIRECTDRAW_GLOBAL edd_DdirectDraw_Global;
|
||||||
|
|
||||||
NTSTATUS FASTCALL
|
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