mirror of
https://github.com/reactos/reactos.git
synced 2025-01-05 22:12:46 +00:00
[WIN32K]
- Put GDI initialization function(s) in a dedicated file. - Whitespace fixes... svn path=/trunk/; revision=65852
This commit is contained in:
parent
1db4f01f36
commit
a306e56c55
6 changed files with 98 additions and 81 deletions
|
@ -167,6 +167,7 @@ list(APPEND SOURCE
|
||||||
gdi/ntgdi/gdiobj.c
|
gdi/ntgdi/gdiobj.c
|
||||||
gdi/ntgdi/gdipool.c
|
gdi/ntgdi/gdipool.c
|
||||||
gdi/ntgdi/icm.c
|
gdi/ntgdi/icm.c
|
||||||
|
gdi/ntgdi/init.c
|
||||||
gdi/ntgdi/line.c
|
gdi/ntgdi/line.c
|
||||||
gdi/ntgdi/metafile.c
|
gdi/ntgdi/metafile.c
|
||||||
gdi/ntgdi/palette.c
|
gdi/ntgdi/palette.c
|
||||||
|
|
|
@ -1537,16 +1537,6 @@ NtGdiIcmBrushInfo(
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
BOOL
|
|
||||||
APIENTRY
|
|
||||||
NtGdiInit(VOID)
|
|
||||||
{
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
|
25
reactos/win32ss/gdi/ntgdi/init.c
Normal file
25
reactos/win32ss/gdi/ntgdi/init.c
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
/*
|
||||||
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS Win32k subsystem
|
||||||
|
* PURPOSE: Initialization of GDI
|
||||||
|
* FILE: win32ss/gdi/ntgdi/init.c
|
||||||
|
* PROGRAMER:
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <win32k.h>
|
||||||
|
|
||||||
|
#define NDEBUG
|
||||||
|
#include <debug.h>
|
||||||
|
#include <kdros.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
BOOL
|
||||||
|
APIENTRY
|
||||||
|
NtGdiInit(VOID)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
|
@ -974,6 +974,10 @@ typedef struct tagSERVERINFO
|
||||||
PERUSERSERVERINFO;
|
PERUSERSERVERINFO;
|
||||||
} SERVERINFO, *PSERVERINFO;
|
} SERVERINFO, *PSERVERINFO;
|
||||||
|
|
||||||
|
#ifdef _M_IX86
|
||||||
|
C_ASSERT(sizeof(SERVERINFO) <= PAGE_SIZE);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
// Server event activity bits.
|
// Server event activity bits.
|
||||||
#define SRV_EVENT_MENU 0x0001
|
#define SRV_EVENT_MENU 0x0001
|
||||||
|
|
|
@ -733,10 +733,6 @@ DriverUnload(IN PDRIVER_OBJECT DriverObject)
|
||||||
ResetCsrProcess();
|
ResetCsrProcess();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _M_IX86
|
|
||||||
C_ASSERT(sizeof(SERVERINFO) <= PAGE_SIZE);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Return on failure
|
// Return on failure
|
||||||
#define NT_ROF(x) \
|
#define NT_ROF(x) \
|
||||||
{ \
|
{ \
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
* PURPOSE: ntuser init. and main funcs.
|
* PURPOSE: ntuser init. and main funcs.
|
||||||
* FILE: subsystems/win32/win32k/ntuser/ntuser.c
|
* FILE: win32ss/user/ntuser/ntuser.c
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <win32k.h>
|
#include <win32k.h>
|
||||||
DBG_DEFAULT_CHANNEL(UserMisc);
|
DBG_DEFAULT_CHANNEL(UserMisc);
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
/* GLOBALS ********************************************************************/
|
||||||
|
|
||||||
PTHREADINFO gptiCurrent = NULL;
|
PTHREADINFO gptiCurrent = NULL;
|
||||||
PPROCESSINFO gppiInputProvider = NULL;
|
PPROCESSINFO gppiInputProvider = NULL;
|
||||||
|
@ -21,73 +21,72 @@ HINSTANCE hModClient = NULL;
|
||||||
BOOL ClientPfnInit = FALSE;
|
BOOL ClientPfnInit = FALSE;
|
||||||
ATOM gaGuiConsoleWndClass;
|
ATOM gaGuiConsoleWndClass;
|
||||||
|
|
||||||
/* PRIVATE FUNCTIONS *********************************************************/
|
/* PRIVATE FUNCTIONS **********************************************************/
|
||||||
|
|
||||||
static
|
static
|
||||||
NTSTATUS FASTCALL
|
NTSTATUS FASTCALL
|
||||||
InitUserAtoms(VOID)
|
InitUserAtoms(VOID)
|
||||||
{
|
{
|
||||||
|
gpsi->atomSysClass[ICLS_MENU] = 32768;
|
||||||
|
gpsi->atomSysClass[ICLS_DESKTOP] = 32769;
|
||||||
|
gpsi->atomSysClass[ICLS_DIALOG] = 32770;
|
||||||
|
gpsi->atomSysClass[ICLS_SWITCH] = 32771;
|
||||||
|
gpsi->atomSysClass[ICLS_ICONTITLE] = 32772;
|
||||||
|
gpsi->atomSysClass[ICLS_TOOLTIPS] = 32774;
|
||||||
|
|
||||||
gpsi->atomSysClass[ICLS_MENU] = 32768;
|
/* System Message Atom */
|
||||||
gpsi->atomSysClass[ICLS_DESKTOP] = 32769;
|
AtomMessage = IntAddGlobalAtom(L"Message", TRUE);
|
||||||
gpsi->atomSysClass[ICLS_DIALOG] = 32770;
|
gpsi->atomSysClass[ICLS_HWNDMESSAGE] = AtomMessage;
|
||||||
gpsi->atomSysClass[ICLS_SWITCH] = 32771;
|
|
||||||
gpsi->atomSysClass[ICLS_ICONTITLE] = 32772;
|
|
||||||
gpsi->atomSysClass[ICLS_TOOLTIPS] = 32774;
|
|
||||||
|
|
||||||
/* System Message Atom */
|
/* System Context Help Id Atom */
|
||||||
AtomMessage = IntAddGlobalAtom(L"Message", TRUE);
|
gpsi->atomContextHelpIdProp = IntAddGlobalAtom(L"SysCH", TRUE);
|
||||||
gpsi->atomSysClass[ICLS_HWNDMESSAGE] = AtomMessage;
|
|
||||||
|
|
||||||
/* System Context Help Id Atom */
|
gpsi->atomIconSmProp = IntAddGlobalAtom(L"SysICS", TRUE);
|
||||||
gpsi->atomContextHelpIdProp = IntAddGlobalAtom(L"SysCH", TRUE);
|
gpsi->atomIconProp = IntAddGlobalAtom(L"SysIC", TRUE);
|
||||||
|
|
||||||
gpsi->atomIconSmProp = IntAddGlobalAtom(L"SysICS", TRUE);
|
gpsi->atomFrostedWindowProp = IntAddGlobalAtom(L"SysFrostedWindow", TRUE);
|
||||||
gpsi->atomIconProp = IntAddGlobalAtom(L"SysIC", TRUE);
|
|
||||||
|
|
||||||
gpsi->atomFrostedWindowProp = IntAddGlobalAtom(L"SysFrostedWindow", TRUE);
|
/*
|
||||||
|
* FIXME: AddPropW uses the global kernel atom table, thus leading to conflicts if we use
|
||||||
|
* the win32k atom table for this ones. What is the right thing to do ?
|
||||||
|
*/
|
||||||
|
// AtomWndObj = IntAddGlobalAtom(L"SysWNDO", TRUE);
|
||||||
|
NtAddAtom(L"SysWNDO", 14, &AtomWndObj);
|
||||||
|
AtomLayer = IntAddGlobalAtom(L"SysLayer", TRUE);
|
||||||
|
AtomFlashWndState = IntAddGlobalAtom(L"FlashWState", TRUE);
|
||||||
|
|
||||||
/*
|
return STATUS_SUCCESS;
|
||||||
* FIXME: AddPropW uses the global kernel atom table, thus leading to conflicts if we use
|
|
||||||
* the win32k atom table for this ones. What is the right thing to do ?
|
|
||||||
*/
|
|
||||||
// AtomWndObj = IntAddGlobalAtom(L"SysWNDO", TRUE);
|
|
||||||
NtAddAtom(L"SysWNDO", 14, &AtomWndObj);
|
|
||||||
AtomLayer = IntAddGlobalAtom(L"SysLayer", TRUE);
|
|
||||||
AtomFlashWndState = IntAddGlobalAtom(L"FlashWState", TRUE);
|
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS ******************************************************************/
|
||||||
|
|
||||||
INIT_FUNCTION
|
INIT_FUNCTION
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
InitUserImpl(VOID)
|
InitUserImpl(VOID)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
ExInitializeResourceLite(&UserLock);
|
ExInitializeResourceLite(&UserLock);
|
||||||
|
|
||||||
if (!UserCreateHandleTable())
|
if (!UserCreateHandleTable())
|
||||||
{
|
{
|
||||||
ERR("Failed creating handle table\n");
|
ERR("Failed creating handle table\n");
|
||||||
return STATUS_INSUFFICIENT_RESOURCES;
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
Status = InitSessionImpl();
|
Status = InitSessionImpl();
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
ERR("Error init session impl.\n");
|
ERR("Error init session impl.\n");
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
InitUserAtoms();
|
InitUserAtoms();
|
||||||
|
|
||||||
InitSysParams();
|
InitSysParams();
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
|
@ -110,7 +109,7 @@ UserInitialize(VOID)
|
||||||
Status = UserCreateWinstaDirectory();
|
Status = UserCreateWinstaDirectory();
|
||||||
if (!NT_SUCCESS(Status)) return Status;
|
if (!NT_SUCCESS(Status)) return Status;
|
||||||
|
|
||||||
/* Initialize Video. */
|
/* Initialize Video */
|
||||||
Status = InitVideo();
|
Status = InitVideo();
|
||||||
if (!NT_SUCCESS(Status)) return Status;
|
if (!NT_SUCCESS(Status)) return Status;
|
||||||
|
|
||||||
|
@ -123,7 +122,7 @@ UserInitialize(VOID)
|
||||||
// Create ThreadInfo for this Thread!
|
// Create ThreadInfo for this Thread!
|
||||||
// {
|
// {
|
||||||
|
|
||||||
/* Initialize the current thread. */
|
/* Initialize the current thread */
|
||||||
Status = UserCreateThreadInfo(PsGetCurrentThread());
|
Status = UserCreateThreadInfo(PsGetCurrentThread());
|
||||||
if (!NT_SUCCESS(Status)) return Status;
|
if (!NT_SUCCESS(Status)) return Status;
|
||||||
|
|
||||||
|
@ -135,10 +134,10 @@ UserInitialize(VOID)
|
||||||
|
|
||||||
if (gpsi->hbrGray == NULL)
|
if (gpsi->hbrGray == NULL)
|
||||||
{
|
{
|
||||||
hPattern55AABitmap = GreCreateBitmap(8, 8, 1, 1, (LPBYTE)wPattern55AA);
|
hPattern55AABitmap = GreCreateBitmap(8, 8, 1, 1, (LPBYTE)wPattern55AA);
|
||||||
gpsi->hbrGray = IntGdiCreatePatternBrush(hPattern55AABitmap);
|
gpsi->hbrGray = IntGdiCreatePatternBrush(hPattern55AABitmap);
|
||||||
GreDeleteObject(hPattern55AABitmap);
|
GreDeleteObject(hPattern55AABitmap);
|
||||||
GreSetBrushOwner(gpsi->hbrGray, GDI_OBJ_HMGR_PUBLIC);
|
GreSetBrushOwner(gpsi->hbrGray, GDI_OBJ_HMGR_PUBLIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
@ -150,9 +149,9 @@ UserInitialize(VOID)
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
APIENTRY
|
APIENTRY
|
||||||
NtUserInitialize(
|
NtUserInitialize(
|
||||||
DWORD dwWinVersion,
|
DWORD dwWinVersion,
|
||||||
HANDLE hPowerRequestEvent,
|
HANDLE hPowerRequestEvent,
|
||||||
HANDLE hMediaRequestEvent)
|
HANDLE hMediaRequestEvent)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
@ -201,38 +200,40 @@ RETURN
|
||||||
*/
|
*/
|
||||||
BOOL FASTCALL UserIsEntered(VOID)
|
BOOL FASTCALL UserIsEntered(VOID)
|
||||||
{
|
{
|
||||||
return ExIsResourceAcquiredExclusiveLite(&UserLock)
|
return ExIsResourceAcquiredExclusiveLite(&UserLock) ||
|
||||||
|| ExIsResourceAcquiredSharedLite(&UserLock);
|
ExIsResourceAcquiredSharedLite(&UserLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL FASTCALL UserIsEnteredExclusive(VOID)
|
BOOL FASTCALL UserIsEnteredExclusive(VOID)
|
||||||
{
|
{
|
||||||
return ExIsResourceAcquiredExclusiveLite(&UserLock);
|
return ExIsResourceAcquiredExclusiveLite(&UserLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID FASTCALL CleanupUserImpl(VOID)
|
VOID FASTCALL CleanupUserImpl(VOID)
|
||||||
{
|
{
|
||||||
ExDeleteResourceLite(&UserLock);
|
ExDeleteResourceLite(&UserLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID FASTCALL UserEnterShared(VOID)
|
VOID FASTCALL UserEnterShared(VOID)
|
||||||
{
|
{
|
||||||
KeEnterCriticalRegion();
|
KeEnterCriticalRegion();
|
||||||
ExAcquireResourceSharedLite(&UserLock, TRUE);
|
ExAcquireResourceSharedLite(&UserLock, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID FASTCALL UserEnterExclusive(VOID)
|
VOID FASTCALL UserEnterExclusive(VOID)
|
||||||
{
|
{
|
||||||
ASSERT_NOGDILOCKS();
|
ASSERT_NOGDILOCKS();
|
||||||
KeEnterCriticalRegion();
|
KeEnterCriticalRegion();
|
||||||
ExAcquireResourceExclusiveLite(&UserLock, TRUE);
|
ExAcquireResourceExclusiveLite(&UserLock, TRUE);
|
||||||
gptiCurrent = PsGetCurrentThreadWin32Thread();
|
gptiCurrent = PsGetCurrentThreadWin32Thread();
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID FASTCALL UserLeave(VOID)
|
VOID FASTCALL UserLeave(VOID)
|
||||||
{
|
{
|
||||||
ASSERT_NOGDILOCKS();
|
ASSERT_NOGDILOCKS();
|
||||||
ASSERT(UserIsEntered());
|
ASSERT(UserIsEntered());
|
||||||
ExReleaseResourceLite(&UserLock);
|
ExReleaseResourceLite(&UserLock);
|
||||||
KeLeaveCriticalRegion();
|
KeLeaveCriticalRegion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
||||||
|
|
Loading…
Reference in a new issue