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

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