X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin3_src%2FWM%2Fmain.c;h=a9c34b748db17d45f02e38f6b1282f0d6771dd88;hb=ae3a0bf446529bfb50eb91a0fb90b72140d9f2ed;hp=51c8c5863a5704bfe207577c6b8fb2c1be644d33;hpb=e2eba65d40020e9f0ee28ad512ce56d74f656689;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin3_src/WM/main.c b/Usermode/Applications/axwin3_src/WM/main.c index 51c8c586..a9c34b74 100644 --- a/Usermode/Applications/axwin3_src/WM/main.c +++ b/Usermode/Applications/axwin3_src/WM/main.c @@ -7,10 +7,16 @@ */ #include #include +#include +#include // === IMPORTS === -extern void WM_Update(void); extern void Video_Setup(void); +extern void WM_Initialise(void); +extern int Renderer_Menu_Init(void); +extern int Renderer_Widget_Init(void); +extern int Renderer_Background_Init(void); +extern void WM_Update(void); // === PROTOTYPES === void ParseCommandline(int argc, char **argv); @@ -24,7 +30,10 @@ const char *gsMouseDevice = NULL; int giTerminalFD = -1; int giMouseFD = -1; - + +#define __INSTALL_ROOT "/Acess/Apps/AxWin/3.0" + +const char *gsInstallRoot = __INSTALL_ROOT; // === CODE === /** @@ -32,6 +41,8 @@ const char *gsMouseDevice = NULL; */ int main(int argc, char *argv[]) { + int server_tid = gettid(); + ParseCommandline(argc, argv); if( gsTerminalDevice == NULL ) { @@ -46,8 +57,24 @@ int main(int argc, char *argv[]) IPC_Init(); Input_Init(); -// WM_Update(); + Renderer_Menu_Init(); + Renderer_Widget_Init(); + Renderer_Background_Init(); + WM_Initialise(); + // Spawn interface root + if( clone(CLONE_VM, 0) == 0 ) + { + static char csInterfaceApp[] = __INSTALL_ROOT"/AxWinUI"; + char server_info[] = "AXWIN3_SERVER=00000"; + char *envp[] = {server_info, NULL}; + char *argv[] = {csInterfaceApp, NULL}; + _SysDebug("server_tid = %i, &server_tid = %p", server_tid, &server_tid); + sprintf(server_info, "AXWIN3_SERVER=%i", server_tid); + execve(csInterfaceApp, argv, envp); + exit(1); + } + // Main Loop for(;;) { @@ -55,11 +82,16 @@ int main(int argc, char *argv[]) int nfds = 0; FD_ZERO(&fds); + WM_Update(); + Input_FillSelect(&nfds, &fds); IPC_FillSelect(&nfds, &fds); nfds ++; - select(nfds, &fds, NULL, NULL, NULL); + if( select(nfds, &fds, NULL, NULL, NULL) == -1 ) { + _SysDebug("ERROR: select() returned -1"); + return -1; + } Input_HandleSelect(&fds); IPC_HandleSelect(&fds);