Impement DxEngSetDCState, DxEngIsHdevLockedByCurrentThread and DxEngUn & ReferenceHdev.

svn path=/trunk/; revision=33284
This commit is contained in:
James Tabor 2008-05-04 23:17:10 +00:00
parent 4c802c0a86
commit 9b3cb4f2aa
4 changed files with 50 additions and 19 deletions

View file

@ -81,7 +81,7 @@ BOOLEAN STDCALL DxEngSetHdevData(HDEV, DXEGSHDEVDATA, DWORD_PTR);
BOOLEAN STDCALL DxEngLockHdev(HDEV hdev); BOOLEAN STDCALL DxEngLockHdev(HDEV hdev);
BOOLEAN STDCALL DxEngUnlockHdev(HDEV hdev); BOOLEAN STDCALL DxEngUnlockHdev(HDEV hdev);
DWORD_PTR STDCALL DxEngGetDCState(HDC hDC, DWORD type); DWORD_PTR STDCALL DxEngGetDCState(HDC hDC, DWORD type);
DWORD STDCALL DxEngReferenceHdev(HDEV hdev); BOOLEAN STDCALL DxEngReferenceHdev(HDEV hdev);
BOOLEAN STDCALL DxEngLockShareSem(); BOOLEAN STDCALL DxEngLockShareSem();
BOOLEAN STDCALL DxEngUnlockShareSem(); BOOLEAN STDCALL DxEngUnlockShareSem();
DWORD STDCALL DxEngScreenAccessCheck(); DWORD STDCALL DxEngScreenAccessCheck();
@ -99,14 +99,14 @@ BOOLEAN STDCALL DxEngIncDispUniq();
HDC STDCALL DxEngCreateMemoryDC(HDEV hDev); HDC STDCALL DxEngCreateMemoryDC(HDEV hDev);
DWORD STDCALL DxEngIsHdevLockedByCurrentThread(DWORD x1); BOOLEAN STDCALL DxEngIsHdevLockedByCurrentThread(HDEV hDev);
DWORD STDCALL DxEngUnreferenceHdev(DWORD x1); BOOLEAN STDCALL DxEngUnreferenceHdev(HDEV hDev);
DWORD STDCALL DxEngSpTearDownSprites(DWORD x1, DWORD x2, DWORD x3); DWORD STDCALL DxEngSpTearDownSprites(DWORD x1, DWORD x2, DWORD x3);
DWORD STDCALL DxEngSpUnTearDownSprites(DWORD x1, DWORD x2, DWORD x3); DWORD STDCALL DxEngSpUnTearDownSprites(DWORD x1, DWORD x2, DWORD x3);
DWORD STDCALL DxEngSpSpritesVisible(DWORD x1); DWORD STDCALL DxEngSpSpritesVisible(DWORD x1);
HDC STDCALL DxEngGetDesktopDC(ULONG DcType, BOOL EmptyDC, BOOL ValidatehWnd); HDC STDCALL DxEngGetDesktopDC(ULONG DcType, BOOL EmptyDC, BOOL ValidatehWnd);
BOOLEAN STDCALL DxEngDeleteDC(HDC hdc, BOOL Force); BOOLEAN STDCALL DxEngDeleteDC(HDC hdc, BOOL Force);
DWORD STDCALL DxEngSetDCState(DWORD x1, DWORD x2, DWORD x3); BOOLEAN STDCALL DxEngSetDCState(HDC hDC, DWORD SetType, DWORD Set);
DWORD STDCALL DxEngSelectBitmap(DWORD x1, DWORD x2); DWORD STDCALL DxEngSelectBitmap(DWORD x1, DWORD x2);
DWORD STDCALL DxEngSetBitmapOwner(DWORD x1, DWORD x2); DWORD STDCALL DxEngSetBitmapOwner(DWORD x1, DWORD x2);
DWORD STDCALL DxEngDeleteSurface(DWORD x1); DWORD STDCALL DxEngDeleteSurface(DWORD x1);

View file

@ -261,5 +261,7 @@ UINT FASTCALL IntGdiSetTextAlign(HDC hDC, UINT Mode);
UINT STDCALL IntGdiGetTextAlign(HDC hDC); UINT STDCALL IntGdiGetTextAlign(HDC hDC);
COLORREF STDCALL IntGdiGetTextColor(HDC hDC); 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 IntGdiUnreferencePdev(PGDIDEVICE pPDev, DWORD CleanUpType);
#endif /* not __WIN32K_DC_H */ #endif /* not __WIN32K_DC_H */

View file

@ -592,12 +592,11 @@ DxEngUnlockHdev(HDEV hDev)
/************************************************************************/ /************************************************************************/
/* DxEngReferenceHdev */ /* DxEngReferenceHdev */
/************************************************************************/ /************************************************************************/
DWORD BOOLEAN
STDCALL STDCALL
DxEngReferenceHdev(HDEV hDev) DxEngReferenceHdev(HDEV hDev)
{ {
UNIMPLEMENTED; IntGdiReferencePdev((PGDIDEVICE) hDev);;
/* ALWAYS return true */ /* ALWAYS return true */
return TRUE; return TRUE;
} }
@ -680,24 +679,24 @@ DWORD STDCALL DxEngScreenAccessCheck()
/************************************************************************/ /************************************************************************/
/* DxEngIsHdevLockedByCurrentThread */ /* DxEngIsHdevLockedByCurrentThread */
/************************************************************************/ /************************************************************************/
DWORD BOOLEAN
STDCALL STDCALL
DxEngIsHdevLockedByCurrentThread(DWORD x1) DxEngIsHdevLockedByCurrentThread(HDEV hDev)
{ { // base on EngIsSemaphoreOwnedByCurrentThread w/o the Ex call.
UNIMPLEMENTED; PERESOURCE pSem = ((PGDIDEVICE)hDev)->hsemDevLock;
return FALSE; return pSem->OwnerEntry.OwnerThread == (ERESOURCE_THREAD)PsGetCurrentThread();
} }
/************************************************************************/ /************************************************************************/
/* DxEngUnreferenceHdev */ /* DxEngUnreferenceHdev */
/************************************************************************/ /************************************************************************/
DWORD BOOLEAN
STDCALL STDCALL
DxEngUnreferenceHdev(DWORD x1) DxEngUnreferenceHdev(HDEV hDev)
{ {
UNIMPLEMENTED; IntGdiUnreferencePdev((PGDIDEVICE) hDev, 0);
return FALSE; return TRUE; // Always true.
} }
/************************************************************************/ /************************************************************************/
@ -757,10 +756,27 @@ BOOL STDCALL DxEngSetDCOwner(HGDIOBJ hObject, DWORD OwnerMask)
/************************************************************************/ /************************************************************************/
/* DxEngSetDCState */ /* DxEngSetDCState */
/************************************************************************/ /************************************************************************/
DWORD STDCALL DxEngSetDCState(DWORD x1, DWORD x2, DWORD x3) BOOLEAN
STDCALL
DxEngSetDCState(HDC hDC, DWORD SetType, DWORD Set)
{ {
UNIMPLEMENTED; BOOLEAN Ret = FALSE;
return FALSE; PDC pDC = DC_LockDc(hDC);
if (pDC)
{
if (SetType == 1)
{
if ( Set )
pDC->DC_Flags |= DC_FLAG_FULLSCREEN;
else
pDC->DC_Flags &= ~DC_FLAG_FULLSCREEN;
Ret = TRUE;
}
DC_UnlockDc(pDC);
return Ret; // Everything else returns FALSE.
}
return Ret;
} }
/************************************************************************/ /************************************************************************/

View file

@ -2699,6 +2699,19 @@ IntEnumHDev(VOID)
return &PrimarySurface; return &PrimarySurface;
} }
VOID FASTCALL
IntGdiReferencePdev(PGDIDEVICE pPDev)
{
pPDev->cPdevRefs++;
}
VOID FASTCALL
IntGdiUnreferencePdev(PGDIDEVICE pPDev, DWORD CleanUpType)
{
pPDev->cPdevRefs--;
}
#define SIZEOF_DEVMODEW_300 188 #define SIZEOF_DEVMODEW_300 188
#define SIZEOF_DEVMODEW_400 212 #define SIZEOF_DEVMODEW_400 212
#define SIZEOF_DEVMODEW_500 220 #define SIZEOF_DEVMODEW_500 220