Usermode/AxWin3 - Implementing window creation
[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     WM_Update(void);
15 extern void     Video_Setup(void);
16 extern int      Renderer_Widget_Init(void);
17
18 // === PROTOTYPES ===
19 void    ParseCommandline(int argc, char **argv);
20
21 // === GLOBALS ===
22 const char      *gsTerminalDevice = NULL;
23 const char      *gsMouseDevice = NULL;
24
25  int    giScreenWidth = 640;
26  int    giScreenHeight = 480;
27
28  int    giTerminalFD = -1;
29  int    giMouseFD = -1;
30
31 #define __INSTALL_ROOT  "/Acess/Apps/AxWin/3.0"
32
33 const char      *gsInstallRoot = __INSTALL_ROOT;
34
35 // === CODE ===
36 /**
37  * \brief Program Entrypoint
38  */
39 int main(int argc, char *argv[])
40 {
41          int    server_tid = gettid();
42         
43         ParseCommandline(argc, argv);
44         
45         if( gsTerminalDevice == NULL ) {
46                 gsTerminalDevice = "/Devices/VTerm/6";
47         }
48         if( gsMouseDevice == NULL ) {
49                 gsMouseDevice = "/Devices/PS2Mouse";
50         }
51         
52         Video_Setup();
53 //      Interface_Init();
54         IPC_Init();
55         Input_Init();
56         
57         Renderer_Widget_Init();
58         
59         // Spawn interface root
60         if( clone(CLONE_VM, 0) == 0 )
61         {
62                 static char csInterfaceApp[] = __INSTALL_ROOT"/AxWinUI";
63                 char    server_info[] = "AXWIN3_SERVER=00000";
64                 char    *envp[] = {server_info, NULL};
65                 char    *argv[] = {csInterfaceApp, NULL};
66                 sprintf(server_info, "AXWIN3_SERVER=%i", server_tid);
67                 execve(csInterfaceApp, argv, envp);
68                 exit(1);
69         }
70
71         // Main Loop
72         for(;;)
73         {
74                 fd_set  fds;
75                  int    nfds = 0;
76                 FD_ZERO(&fds);
77         
78                 WM_Update();
79
80                 Input_FillSelect(&nfds, &fds);
81                 IPC_FillSelect(&nfds, &fds);
82                 
83                 nfds ++;
84                 if( select(nfds, &fds, NULL, NULL, NULL) == -1 ) {
85                         _SysDebug("ERROR: select() returned -1");
86                         return -1;
87                 }
88
89                 Input_HandleSelect(&fds);
90                 IPC_HandleSelect(&fds);
91         }
92         return 0;
93 }
94
95 void ParseCommandline(int argc, char **argv)
96 {
97         
98 }
99

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