From: John Hodge Date: Thu, 3 Nov 2011 14:13:54 +0000 (+0800) Subject: Usermode/AxWin3 - Debugging IPC X-Git-Tag: rel0.14~158 X-Git-Url: https://git.ucc.asn.au/?a=commitdiff_plain;h=c90f683ef8d3dde9db5b78feebe5508ca3f84ff3;p=tpg%2Facess2.git Usermode/AxWin3 - Debugging IPC --- diff --git a/Usermode/Applications/axwin3_src/Makefile b/Usermode/Applications/axwin3_src/Makefile index daf0685b..3523ded8 100644 --- a/Usermode/Applications/axwin3_src/Makefile +++ b/Usermode/Applications/axwin3_src/Makefile @@ -1,6 +1,6 @@ NAME = AxWin3 -DIRS = WM +DIRS = WM Interface SUBMAKE = $(MAKE) --no-print-directory diff --git a/Usermode/Applications/axwin3_src/WM/Makefile b/Usermode/Applications/axwin3_src/WM/Makefile index 86fbbae1..9bd94a0c 100644 --- a/Usermode/Applications/axwin3_src/WM/Makefile +++ b/Usermode/Applications/axwin3_src/WM/Makefile @@ -2,6 +2,7 @@ -include ../../Makefile.cfg +# Some evil lazy evaulation, hopefully it works CPPFLAGS += -I include/ DIR := Apps/AxWin/3.0 diff --git a/Usermode/Applications/axwin3_src/WM/main.c b/Usermode/Applications/axwin3_src/WM/main.c index 51c8c586..c6a45463 100644 --- a/Usermode/Applications/axwin3_src/WM/main.c +++ b/Usermode/Applications/axwin3_src/WM/main.c @@ -7,6 +7,8 @@ */ #include #include +#include +#include // === IMPORTS === extern void WM_Update(void); @@ -24,7 +26,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 +37,8 @@ const char *gsMouseDevice = NULL; */ int main(int argc, char *argv[]) { + int server_tid = gettid(); + ParseCommandline(argc, argv); if( gsTerminalDevice == NULL ) { @@ -48,6 +55,17 @@ int main(int argc, char *argv[]) // WM_Update(); + // 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}; + sprintf(server_info, "AXWIN3_SERVER=%i", server_tid); + execve(csInterfaceApp, argv, envp); + } + // Main Loop for(;;) { @@ -59,7 +77,10 @@ int main(int argc, char *argv[]) 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); diff --git a/Usermode/Applications/axwin3_src/WM/renderer_widget.c b/Usermode/Applications/axwin3_src/WM/renderer_widget.c index 43d39c10..32d1a97f 100644 --- a/Usermode/Applications/axwin3_src/WM/renderer_widget.c +++ b/Usermode/Applications/axwin3_src/WM/renderer_widget.c @@ -278,7 +278,7 @@ void Widget_NewWidget(tWidgetWin *Info, size_t Len, tWidgetMsg_Create *Msg) return ; // Create - parent = _GetElementById(Info, Msg->Parent); + parent = Widget_GetElementById(Info, Msg->Parent); } @@ -293,7 +293,7 @@ int Renderer_Widget_HandleMessage(tWindow *Target, int Msg, int Len, void *Data) return 0; // default: - return 1; // Unhandled + return 1; // Unhandled, pass to user } } diff --git a/Usermode/Libraries/libaxwin3.so_src/include/internal.h b/Usermode/Libraries/libaxwin3.so_src/include/internal.h index ae47408c..f8040506 100644 --- a/Usermode/Libraries/libaxwin3.so_src/include/internal.h +++ b/Usermode/Libraries/libaxwin3.so_src/include/internal.h @@ -16,5 +16,7 @@ struct sAxWin3_Window char Data[]; }; +extern const char *gsAxWin3_int_ServerDesc; + #endif diff --git a/Usermode/Libraries/libaxwin3.so_src/main.c b/Usermode/Libraries/libaxwin3.so_src/main.c index 47e3f333..3fba042f 100644 --- a/Usermode/Libraries/libaxwin3.so_src/main.c +++ b/Usermode/Libraries/libaxwin3.so_src/main.c @@ -7,11 +7,13 @@ */ #include #include "include/ipc.h" +#include "include/internal.h" // === CODE === int SoMain(void *Base, int argc, const char *argv[], const char **envp) { - // TODO: Parse the environment for the AXWIN3_PID variable + // TODO: Parse the environment for the AXWIN3_SERVER variable + gsAxWin3_int_ServerDesc = getenv("AXWIN3_SERVER"); return 0; } diff --git a/Usermode/Libraries/libaxwin3.so_src/msg.c b/Usermode/Libraries/libaxwin3.so_src/msg.c index cce977ba..49bc77e8 100644 --- a/Usermode/Libraries/libaxwin3.so_src/msg.c +++ b/Usermode/Libraries/libaxwin3.so_src/msg.c @@ -31,10 +31,12 @@ tAxWin3_MessageCallback gAxWin3_MessageCallback; // === CODE === void AxWin3_Connect(const char *ServerDesc) { + _SysDebug("ServerDesc = %s", ServerDesc); if( !ServerDesc ) { ServerDesc = gsAxWin3_int_ServerDesc; } + _SysDebug("ServerDesc = %s", ServerDesc); if( !ServerDesc ) { // TODO: Error out @@ -113,6 +115,8 @@ tAxWin_IPCMessage *AxWin3_int_GetIPCMessage(void) switch(giConnectionType) { case CONNTYPE_SENDMESSAGE: + if(SysGetMessage(NULL, NULL) == 0) + sleep(); while(SysGetMessage(NULL, NULL)) { pid_t tid;