int pollForClipboardMessage(bits messageAction, wimp_block* wblock) {
/* poll for a message relating to the clipboard protocols (either datasave or
 * dataload usually) and return true if one is found or false if we either get
 * a null or go round more than a few times (avoid loop-of-death)
 */
wimp_event_no reason;
int pollword, i;
extern void WindowOpen(wimp_open* wblock);
extern void WindowClose(wimp_close* wblock);
extern void PointerLeaveWindow(wimp_block* wblock);
extern void PointerEnterWindow(wimp_block* wblock);
	for(i=0;i<100;i++) {
		xwimp_poll((wimp_MASK_POLLWORD| wimp_MASK_GAIN | wimp_MASK_LOSE
| wimp_SAVE_FP | wimp_QUEUE_REDRAW | wimp_QUEUE_MOUSE | wimp_QUEUE_KEY), wblock, &pollword, &reason);
		switch(reason) {
			case wimp_NULL_REASON_CODE:
				return false; break;
			case wimp_OPEN_WINDOW_REQUEST	:
				WindowOpen(&wblock->open); break;
			case wimp_CLOSE_WINDOW_REQUEST	:
				WindowClose(&wblock->close); break;
			case wimp_POINTER_LEAVING_WINDOW :
				PointerLeaveWindow(wblock); break;
			case wimp_POINTER_ENTERING_WINDOW:
				PointerEnterWindow(wblock); break;
			case wimp_USER_MESSAGE			:
			case wimp_USER_MESSAGE_RECORDED		:
				if( wblock->message.action == messageAction)
					return true; break;
		}
	}
	return false;
}
Beispiel #2
0
void dummyWimpPoll(void) {
/* quick wimp_poll to allow icon to appear and for interactivity
   during loading */
wimp_event_no wimpPollEvent;
wimp_block wimpPollBlock;
int wimpPollWord;
	do xwimp_poll((wimp_MASK_POLLWORD| wimp_MASK_GAIN | wimp_MASK_LOSE | wimp_MASK_MESSAGE | wimp_MASK_RECORDED | wimp_SAVE_FP) , &wimpPollBlock,  &wimpPollWord, (wimp_event_no*)&wimpPollEvent);
	while (wimpPollEvent != wimp_NULL_REASON_CODE);
}