update for HEAD-2003091401
[reactos.git] / subsys / win32k / ntuser / guicheck.c
1 /*
2  *  ReactOS W32 Subsystem
3  *  Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 ReactOS Team
4  *
5  *  This program is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation; either version 2 of the License, or
8  *  (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program; if not, write to the Free Software
17  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */
19 /* $Id$
20  *
21  * COPYRIGHT:        See COPYING in the top level directory
22  * PROJECT:          ReactOS kernel
23  * PURPOSE:          GUI state check
24  * FILE:             subsys/win32k/ntuser/guicheck.c
25  * PROGRAMER:        Casper S. Hornstrup (chorns@users.sourceforge.net)
26  * NOTES:            The GuiCheck() function performs a few delayed operations:
27  *                   1) A GUI process is assigned a window station
28  *                   2) A message queue is created for a GUI thread before use
29  *                   3) The system window classes are registered for a process
30  * REVISION HISTORY:
31  *       06-06-2001  CSH  Created
32  */
33
34 /* INCLUDES ******************************************************************/
35
36 #include <ddk/ntddk.h>
37 #include <napi/teb.h>
38 #include <win32k/win32k.h>
39 #include <include/guicheck.h>
40 #include <include/msgqueue.h>
41 #include <include/object.h>
42 #include <napi/win32.h>
43 #include <include/winsta.h>
44
45 #define NDEBUG
46 #include <debug.h>
47
48 /* GLOBALS *******************************************************************/
49
50 static ULONG NrGuiApplicationsRunning = 0;
51
52 /* FUNCTIONS *****************************************************************/
53
54 VOID FASTCALL
55 IntGraphicsCheck(BOOL Create)
56 {
57   if (Create)
58     {
59       if (0 == NrGuiApplicationsRunning)
60         {
61           IntInitializeDesktopGraphics();
62         }
63       NrGuiApplicationsRunning++;
64     }
65   else
66     {
67       if (0 < NrGuiApplicationsRunning)
68         {
69           NrGuiApplicationsRunning--;
70         }
71       if (0 == NrGuiApplicationsRunning)
72         {
73           IntEndDesktopGraphics();
74         }
75     }
76     
77 }
78
79 /* EOF */