TODO
[tpg/acess2.git] / Usermode / Libraries / libaxwin2.so_src / messages.c
1 /*
2  * AxWin Window Manager Interface Library
3  * By John Hodge (thePowersGang)
4  * This file is published under the terms of the Acess Licence. See the
5  * file COPYING for details.
6  * 
7  * messages.c - Message Handling
8  */
9 #include "common.h"
10
11 // === PROTOTYPES ===
12  int    AxWin_MessageLoop();
13 tAxWin_Message  *AxWin_WaitForMessage();
14  int    AxWin_HandleMessage(tAxWin_Message *Message);
15
16 // ===  ===
17
18 // === CODE ===
19 int AxWin_SendMessage(tAxWin_Message *Message)
20 {
21         switch(giAxWin_Mode)
22         {
23         case AXWIN_MODE_IPC:
24                 SysSendMessage(giAxWin_PID, Message->Size*4, Message);
25                 break;
26         default:
27                 break;
28         }
29         return 0;
30 }
31
32 /**
33  * \brief Loop forever, checking and waiting for messages
34  */
35 int AxWin_MessageLoop()
36 {
37         tAxWin_Message  *msg;
38          int    ret;
39         for(;;)
40         {
41                 msg = AxWin_WaitForMessage();
42                 ret = AxWin_HandleMessage(msg);
43                 
44                 if(ret < 0)     return 0;
45         }
46         return 0;
47 }
48
49 /**
50  * \brief Wait for a message
51  */
52 tAxWin_Message *AxWin_WaitForMessage()
53 {
54          int    length;
55         pid_t   src;
56         tAxWin_Message  *ret = NULL;
57         
58         switch( giAxWin_Mode )
59         {
60         case AXWIN_MODE_IPC:
61                 while( (length = SysGetMessage(&src, NULL)) == 0 )      sleep();
62                 ret = malloc(length);
63                 SysGetMessage(NULL, ret);
64                 break;
65         default:
66                 break;
67         }
68         return ret;
69 }
70
71 /**
72  * \brief Handles a recieved message
73  */
74 int AxWin_HandleMessage(tAxWin_Message *Message)
75 {
76         switch(Message->ID)
77         {
78         default:        return 0;
79         }
80 }

UCC git Repository :: git.ucc.asn.au