X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin3_src%2Flibaxwin3.so_src%2Fmain.c;h=da2ffe77e78b7c291668c4c4479701d02fa1c4ff;hb=edb8fa42cff3758a25e985f4fdd7119b6206ce0a;hp=0c641cd47708c159d53c95a9ade3e0ee773a683e;hpb=e860a4f0bfc5843258f6ad89a5e8cebbf8816458;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin3_src/libaxwin3.so_src/main.c b/Usermode/Applications/axwin3_src/libaxwin3.so_src/main.c index 0c641cd4..da2ffe77 100644 --- a/Usermode/Applications/axwin3_src/libaxwin3.so_src/main.c +++ b/Usermode/Applications/axwin3_src/libaxwin3.so_src/main.c @@ -10,6 +10,9 @@ #include "include/ipc.h" #include +// === GLOBALS === +int giAxWin3_MainLoopExit; + // === CODE === int SoMain(void *Base, int argc, const char *argv[], const char **envp) { @@ -18,22 +21,35 @@ int SoMain(void *Base, int argc, const char *argv[], const char **envp) return 0; } -void AxWin3_MainLoop(void) +int AxWin3_MainLoop(void) { tAxWin_IPCMessage *msg; - int bExit = 0; - while(!bExit) + giAxWin3_MainLoopExit = 0; + + while(!giAxWin3_MainLoopExit) { - msg = AxWin3_int_GetIPCMessage(); + msg = AxWin3_int_GetIPCMessage(0, NULL); if(!msg) continue; _SysDebug("AxWin3_MainLoop - Message (Type=%i, Window=%i, Len=%i)", msg->ID, msg->Window, msg->Size); AxWin3_int_HandleMessage( msg ); - - free(msg); } + return giAxWin3_MainLoopExit; +} + +void AxWin3_StopMainLoop(int Reason) +{ + giAxWin3_MainLoopExit = Reason; +} + +void AxWin3_MessageSelect(int nFD, fd_set *FDs) +{ + tAxWin_IPCMessage *msg; + msg = AxWin3_int_GetIPCMessage(nFD, FDs); + if( msg ) + AxWin3_int_HandleMessage( msg ); }