X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin3_src%2FWM%2Fmain.c;h=5a2c35495f8d159f498c95f2feea4baf38f61b9e;hb=e7a76b0d8a0cc6aa77966509780973a6f8216ef7;hp=b6fcf497a48817c1a7539ed55d113dbd76347bf1;hpb=7c00f2f9205aeb803f0499c9e88c98048830bea6;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin3_src/WM/main.c b/Usermode/Applications/axwin3_src/WM/main.c index b6fcf497..5a2c3549 100644 --- a/Usermode/Applications/axwin3_src/WM/main.c +++ b/Usermode/Applications/axwin3_src/WM/main.c @@ -9,13 +9,12 @@ #include #include #include +#include +#include "include/lowlevel.h" // === IMPORTS === 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 === @@ -29,11 +28,14 @@ const char *gsMouseDevice = NULL; int giScreenHeight = 480; int giTerminalFD = -1; + int giTerminalFD_Input = 0; int giMouseFD = -1; #define __INSTALL_ROOT "/Acess/Apps/AxWin/3.0" const char *gsInstallRoot = __INSTALL_ROOT; +const char *gsInterfaceApp = __INSTALL_ROOT"/AxWinUI"; + int gbNoSpawnUI = 0; // === CODE === /** @@ -41,37 +43,36 @@ const char *gsInstallRoot = __INSTALL_ROOT; */ int main(int argc, char *argv[]) { - int server_tid = gettid(); - ParseCommandline(argc, argv); if( gsTerminalDevice == NULL ) { gsTerminalDevice = "/Devices/VTerm/6"; } if( gsMouseDevice == NULL ) { - gsMouseDevice = "/Devices/PS2Mouse"; + gsMouseDevice = "/Devices/Mouse/system"; } Video_Setup(); IPC_Init(); Input_Init(); - Renderer_Menu_Init(); - Renderer_Widget_Init(); - Renderer_Background_Init(); WM_Initialise(); // Spawn interface root - if( clone(CLONE_VM, 0) == 0 ) + if( !gbNoSpawnUI ) { - static char csInterfaceApp[] = __INSTALL_ROOT"/AxWinUI"; + int server_tid = gettid(); + _SysDebug("server_tid = %i", server_tid); char server_info[] = "AXWIN3_SERVER=00000"; - char *envp[] = {server_info, NULL}; - char *argv[] = {csInterfaceApp, NULL}; + const char *envp[] = {server_info, NULL}; + const char *argv[] = {gsInterfaceApp, 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); + // TODO: Does the client need FDs? + int rv = _SysSpawn(gsInterfaceApp, argv, envp, 0, NULL, NULL); + if( rv < 0 ) { + _SysDebug("_SysSpawn chucked a sad, rv=%i, errno=%i", rv, _errno); + } } // Main Loop @@ -98,8 +99,37 @@ int main(int argc, char *argv[]) return 0; } +void PrintUsage(void) +{ + fprintf(stderr, "Arguments:\n"); + fprintf(stderr, " --no-ui : Don't spawn the UI process\n"); +} + void ParseCommandline(int argc, char **argv) { - + for( int i = 1; i < argc; i ++ ) + { + if( argv[i][0] != '-' ) { + // Error? + PrintUsage(); + exit(-1); + } + else if( argv[i][1] != '-' ) { + // Short + PrintUsage(); + exit(-1); + } + else { + // Long + if( strcmp(argv[i], "--no-ui") == 0 ) { + gbNoSpawnUI = 1; + } + else { + // Error. + PrintUsage(); + exit(-1); + } + } + } }