5b0e5ff3e39cb764aa44ab9683d986c51e02c34e
[tpg/acess2.git] / Usermode / Applications / axwin3_src / WM / main.c
1 /*
2  * Acess2 GUI (AxWin) Version 3
3  * - By John Hodge (thePowersGang)
4  *
5  * main.c
6  * - Entrypoint
7  */
8 #include <common.h>
9 #include <acess/sys.h>
10 #include <stdlib.h>
11 #include <stdio.h>
12
13 // === IMPORTS ===
14 extern void     Video_Setup(void);
15 extern void     WM_Initialise(void);
16 extern int      Renderer_Widget_Init(void);
17 extern int      Renderer_Background_Init(void);
18 extern void     WM_Update(void);
19
20 // === PROTOTYPES ===
21 void    ParseCommandline(int argc, char **argv);
22
23 // === GLOBALS ===
24 const char      *gsTerminalDevice = NULL;
25 const char      *gsMouseDevice = NULL;
26
27  int    giScreenWidth = 640;
28  int    giScreenHeight = 480;
29
30  int    giTerminalFD = -1;
31  int    giMouseFD = -1;
32
33 #define __INSTALL_ROOT  "/Acess/Apps/AxWin/3.0"
34
35 const char      *gsInstallRoot = __INSTALL_ROOT;
36
37 // === CODE ===
38 /**
39  * \brief Program Entrypoint
40  */
41 int main(int argc, char *argv[])
42 {
43          int    server_tid = gettid();
44         
45         ParseCommandline(argc, argv);
46         
47         if( gsTerminalDevice == NULL ) {
48                 gsTerminalDevice = "/Devices/VTerm/6";
49         }
50         if( gsMouseDevice == NULL ) {
51                 gsMouseDevice = "/Devices/PS2Mouse";
52         }
53         
54         Video_Setup();
55 //      Interface_Init();
56         IPC_Init();
57         Input_Init();
58         
59         Renderer_Widget_Init();
60         Renderer_Background_Init();
61         WM_Initialise();
62         
63         // Spawn interface root
64         if( clone(CLONE_VM, 0) == 0 )
65         {
66                 static char csInterfaceApp[] = __INSTALL_ROOT"/AxWinUI";
67                 char    server_info[] = "AXWIN3_SERVER=00000";
68                 char    *envp[] = {server_info, NULL};
69                 char    *argv[] = {csInterfaceApp, NULL};
70                 sprintf(server_info, "AXWIN3_SERVER=%i", server_tid);
71                 execve(csInterfaceApp, argv, envp);
72                 exit(1);
73         }
74
75         // Main Loop
76         for(;;)
77         {
78                 fd_set  fds;
79                  int    nfds = 0;
80                 FD_ZERO(&fds);
81         
82                 WM_Update();
83
84                 Input_FillSelect(&nfds, &fds);
85                 IPC_FillSelect(&nfds, &fds);
86                 
87                 nfds ++;
88                 if( select(nfds, &fds, NULL, NULL, NULL) == -1 ) {
89                         _SysDebug("ERROR: select() returned -1");
90                         return -1;
91                 }
92
93                 Input_HandleSelect(&fds);
94                 IPC_HandleSelect(&fds);
95         }
96         return 0;
97 }
98
99 void ParseCommandline(int argc, char **argv)
100 {
101         
102 }
103

UCC git Repository :: git.ucc.asn.au