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; }
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); }