ReactOS 0.4.15-dev-5875-g7c755d9
init.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Win32k subsystem
4 * PURPOSE: Initialization of GDI
5 * FILE: win32ss/gdi/ntgdi/init.c
6 * PROGRAMER:
7 */
8
9#include <win32k.h>
10
11#define NDEBUG
12#include <debug.h>
13#include <kdros.h>
14
16
19{
21 ASSERT(ppiCurrent);
22
25 ppiCurrent->PrivateMemFontHandleCount = 0;
27
28 InitializeListHead(&ppiCurrent->GDIBrushAttrFreeList);
29 InitializeListHead(&ppiCurrent->GDIDcAttrFreeList);
30
31 /* Map the GDI handle table to user land */
32 Process->Peb->GdiSharedHandleTable = GDI_MapHandleTable(Process);
33 Process->Peb->GdiDCAttributeList = GDI_BATCH_LIMIT;
34
35 /* Create pools for GDI object attributes */
36 ppiCurrent->pPoolDcAttr = GdiPoolCreate(sizeof(DC_ATTR), 'acdG');
37 ppiCurrent->pPoolBrushAttr = GdiPoolCreate(sizeof(BRUSH_ATTR), 'arbG');
38 ppiCurrent->pPoolRgnAttr = GdiPoolCreate(sizeof(RGN_ATTR), 'agrG');
39 ASSERT(ppiCurrent->pPoolDcAttr);
40 ASSERT(ppiCurrent->pPoolBrushAttr);
41 ASSERT(ppiCurrent->pPoolRgnAttr);
42
43 return STATUS_SUCCESS;
44}
45
48{
50 ASSERT(ppiCurrent);
51 ASSERT(ppiCurrent->peProcess == Process);
52
54
55 /* And GDI ones too */
57
58 /* So we can now free the pools */
59 GdiPoolDestroy(ppiCurrent->pPoolDcAttr);
60 GdiPoolDestroy(ppiCurrent->pPoolBrushAttr);
61 GdiPoolDestroy(ppiCurrent->pPoolRgnAttr);
62
63 return STATUS_SUCCESS;
64}
65
66
69{
70 return STATUS_SUCCESS;
71}
72
75{
76 return STATUS_SUCCESS;
77}
78
79
80/*
81 * @implemented
82 */
83BOOL
86{
87 return TRUE;
88}
89
90/* EOF */
LONG NTSTATUS
Definition: precomp.h:26
#define TRUE
Definition: types.h:120
#define APIENTRY
Definition: api.h:79
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
unsigned int BOOL
Definition: ntddk_ex.h:94
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
Definition: fltkernel.h:2653
VOID FASTCALL IntGdiCleanupPrivateFontsForProcess(VOID)
Definition: freetype.c:1917
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
Definition: fsrtlfuncs.h:223
PGDI_POOL NTAPI GdiPoolCreate(ULONG cjAllocSize, ULONG ulTag)
Definition: gdipool.c:316
VOID NTAPI GdiPoolDestroy(PGDI_POOL pPool)
Definition: gdipool.c:343
#define ASSERT(a)
Definition: mode.c:44
#define GDI_BATCH_LIMIT
Definition: ntgdityp.h:201
PVOID NTAPI PsGetProcessWin32Process(PEPROCESS Process)
Definition: process.c:1193
#define STATUS_SUCCESS
Definition: shellext.h:65
LIST_ENTRY PrivateMemFontListHead
Definition: win32.h:285
FAST_MUTEX PrivateFontListLock
Definition: win32.h:283
struct _GDI_POOL * pPoolRgnAttr
Definition: win32.h:293
struct _GDI_POOL * pPoolBrushAttr
Definition: win32.h:292
UINT PrivateMemFontHandleCount
Definition: win32.h:286
LIST_ENTRY PrivateFontListHead
Definition: win32.h:284
struct _GDI_POOL * pPoolDcAttr
Definition: win32.h:291
#define NTAPI
Definition: typedefs.h:36
PVOID NTAPI GDI_MapHandleTable(PEPROCESS pProcess)
Definition: gdiobj.c:1552
NTSTATUS GdiThreadDestroy(PETHREAD Thread)
Definition: init.c:74
BOOL NTAPI GDI_CleanupForProcess(struct _EPROCESS *Process)
Definition: gdiobj.c:1582
NTSTATUS GdiProcessCreate(PEPROCESS Process)
Definition: init.c:18
NTSTATUS GdiThreadCreate(PETHREAD Thread)
Definition: init.c:68
NTSTATUS GdiProcessDestroy(PEPROCESS Process)
Definition: init.c:47
BOOL APIENTRY NtGdiInit(VOID)
Definition: init.c:85
FORCEINLINE VOID ExInitializeFastMutex(_Out_ PFAST_MUTEX FastMutex)
Definition: exfuncs.h:274