Release 950727
[wine] / misc / user.c
1 /*
2 static char RCSId[] = "$Id: user.c,v 1.2 1993/07/04 04:04:21 root Exp root $";
3 static char Copyright[] = "Copyright  Robert J. Amstadt, 1993";
4 */
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include "atom.h"
8 #include "comm.h"
9 #include "gdi.h"
10 #include "desktop.h"
11 #include "dlls.h"
12 #include "dos_fs.h"
13 #include "sysmetrics.h"
14 #include "menu.h"
15 #include "dce.h"
16 #include "dialog.h"
17 #include "syscolor.h"
18 #include "win.h"
19 #include "windows.h"
20 #include "user.h"
21 #include "message.h"
22 #include "toolhelp.h"
23
24 #define USER_HEAP_SIZE          0x10000
25
26 #ifndef WINELIB
27 LPSTR USER_Heap = NULL;
28 WORD USER_HeapSel = 0;
29
30
31 /***********************************************************************
32  *           GetFreeSystemResources   (USER.284)
33  */
34 WORD GetFreeSystemResources( WORD resType )
35 {
36     DWORD user, gdi;
37
38     switch(resType)
39     {
40     case GFSR_USERRESOURCES:
41         user = GetHeapSpaces( USER_HeapSel );
42         gdi  = 0xffffffff;
43         break;
44
45     case GFSR_GDIRESOURCES:
46         gdi  = GetHeapSpaces( GDI_HeapSel );
47         user = 0xffffffff;
48         break;
49
50     case GFSR_SYSTEMRESOURCES:
51         user = GetHeapSpaces( USER_HeapSel );
52         gdi  = GetHeapSpaces( GDI_HeapSel );
53         break;
54
55     default:
56         return 0;
57     }
58     if (user > gdi) return LOWORD(gdi) * 100 / HIWORD(gdi);
59     else return LOWORD(user) * 100 / HIWORD(user);
60 }
61
62
63 /***********************************************************************
64  *           SystemHeapInfo   (TOOLHELP.71)
65  */
66 BOOL SystemHeapInfo( SYSHEAPINFO *pHeapInfo )
67 {
68     pHeapInfo->wUserFreePercent = GetFreeSystemResources( GFSR_USERRESOURCES );
69     pHeapInfo->wGDIFreePercent  = GetFreeSystemResources( GFSR_GDIRESOURCES );
70     pHeapInfo->hUserSegment = USER_HeapSel;
71     pHeapInfo->hGDISegment  = GDI_HeapSel;
72     return TRUE;
73 }
74
75
76 /***********************************************************************
77  *           USER_HeapInit
78  */
79 BOOL USER_HeapInit(void)
80 {
81     if (!(USER_HeapSel = GlobalAlloc(GMEM_FIXED,USER_HEAP_SIZE))) return FALSE;
82     USER_Heap = GlobalLock( USER_HeapSel );
83     LocalInit( USER_HeapSel, 0, USER_HEAP_SIZE-1 );
84     return TRUE;
85 }
86 #endif
87
88
89 /**********************************************************************
90  *                                      USER_InitApp
91  */
92 int USER_InitApp(int hInstance)
93 {
94     int queueSize;
95
96       /* Create task message queue */
97     queueSize = GetProfileInt( "windows", "DefaultQueueSize", 8 );
98     if (!SetMessageQueue( queueSize )) return 0;
99
100     return 1;
101 }