home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 2
/
goldfish_vol2_cd1.bin
/
files
/
util
/
wb
/
stickit2
/
source
/
events.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-03-25
|
2KB
|
92 lines
/**********************************************
************** events.c ******************
**********************************************/
#define INTUI_V36_NAMES_ONLY
#include <exec/exec.h>
#include <intuition/intuition.h>
#include <clib/exec_protos.h>
#include <clib/gadtools_protos.h>
#include "stickit2.h"
#include <stdio.h> /* For printf */
#include "consts.h"
#include "structs.h"
#include "proto.h"
extern prj_p prj;
/*
Function : void events_mainloop(void)
Purpose : Handles the incoming events from all the ports and dispatches the
calls to the appropriate handler.
*/
void events_mainloop(void)
{
ULONG signals;
BOOL done = FALSE;
while (!done) {
signals = Wait((1L << prj->broker_msg_port->mp_SigBit) |
(1L << prj->main_msg_port->mp_SigBit));
if (signals & (1L << prj->broker_msg_port->mp_SigBit))
done = commod_event();
else if (signals & (1L << prj->main_msg_port->mp_SigBit))
done = main_event();
}
}
/*
Function : BOOL main_event()
Purpose : A message has arrived in the main message port. It may be from the
commodities window (hence the GT_GetIMsg) or from a note.
*/
BOOL main_event()
{
struct IntuiMessage *msg;
struct IntuiMessage curr_msg;
BOOL done = FALSE;
while (msg = (struct IntuiMessage *)GT_GetIMsg(prj->main_msg_port)) {
curr_msg.Code = msg->Code;
curr_msg.Class = msg->Class;
curr_msg.Qualifier = msg->Qualifier;
curr_msg.IAddress = msg->IAddress;
curr_msg.MouseX = msg->MouseX;
curr_msg.MouseY = msg->MouseY;
curr_msg.Seconds = msg->Seconds;
curr_msg.Micros = msg->Micros;
curr_msg.IDCMPWindow = msg->IDCMPWindow;
GT_ReplyIMsg ((struct IntuiMessage *)msg);
if ((commod) && (curr_msg.IDCMPWindow == commod))
done = commodwin_event(&curr_msg);
else
done = note_event(&curr_msg);
if (done)
break;
}
/* If the done was from the commod window, check to see whether it */
/* is a quit or hide */
if ((done) && (commod) && (curr_msg.IDCMPWindow == commod)) {
if (!prj->abouttoquit) {
closewindowcommod();
done = FALSE;
}
}
return(done);
}