X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin3_src%2FWM%2Fmain.c;h=9db1c15c6b9711ed4eb89db070ba0f83ed6fa734;hb=6a99a6d70179161964d47de9a825fd61e8445b86;hp=0d1504673424ff13a71299b05bfb592efbfe1444;hpb=3ae2c079ea44ea7a8fb1a65e7b9ff5d76f3f4c24;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin3_src/WM/main.c b/Usermode/Applications/axwin3_src/WM/main.c index 0d150467..9db1c15c 100644 --- a/Usermode/Applications/axwin3_src/WM/main.c +++ b/Usermode/Applications/axwin3_src/WM/main.c @@ -9,6 +9,7 @@ #include #include #include +#include // === IMPORTS === extern void Video_Setup(void); @@ -16,7 +17,10 @@ extern void WM_Initialise(void); extern int Renderer_Menu_Init(void); extern int Renderer_Widget_Init(void); extern int Renderer_Background_Init(void); +extern int Renderer_Framebuffer_Init(void); +extern int Renderer_RichText_Init(void); extern void WM_Update(void); +extern void WM_Hotkey_Register(int nKeys, uint32_t *Keys, const char *ActionName); // === PROTOTYPES === void ParseCommandline(int argc, char **argv); @@ -29,6 +33,7 @@ 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" @@ -41,8 +46,6 @@ const char *gsInstallRoot = __INSTALL_ROOT; */ int main(int argc, char *argv[]) { - int server_tid = gettid(); - ParseCommandline(argc, argv); if( gsTerminalDevice == NULL ) { @@ -59,19 +62,32 @@ int main(int argc, char *argv[]) Renderer_Menu_Init(); Renderer_Widget_Init(); Renderer_Background_Init(); + Renderer_Framebuffer_Init(); + Renderer_RichText_Init(); WM_Initialise(); + + // TODO: Move these to config + uint32_t keys[4]; + keys[0] = KEYSYM_LEFTGUI; keys[1] = KEYSYM_r; + WM_Hotkey_Register(2, keys, "Interface>Run"); + keys[0] = KEYSYM_LEFTGUI; keys[1] = KEYSYM_t; + WM_Hotkey_Register(2, keys, "Interface>Terminal"); // Spawn interface root - if( clone(CLONE_VM, 0) == 0 ) { + int server_tid = gettid(); + _SysDebug("server_tid = %i", server_tid); static char csInterfaceApp[] = __INSTALL_ROOT"/AxWinUI"; char server_info[] = "AXWIN3_SERVER=00000"; - char *envp[] = {server_info, NULL}; - char *argv[] = {csInterfaceApp, NULL}; + const char *envp[] = {server_info, NULL}; + const 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); + // TODO: Does the client need FDs? + int rv = _SysSpawn(csInterfaceApp, argv, envp, 0, NULL, NULL); + if( rv < 0 ) { + _SysDebug("_SysSpawn chucked a sad, rv=%i, errno=%i", rv, _errno); + } } // Main Loop