/* events.c */ /* handle about every event */ /* * $Author: Espie $ * $Date: 91/05/12 19:56:25 $ * $Revision: 1.7 $ * $Log: events.c,v $ * Revision 1.7 91/05/12 19:56:25 Espie * Minor changes. * * Revision 1.6 91/05/12 16:00:19 Espie * Some new events, and tidying up. * * Revision 1.5 91/05/09 17:35:06 Espie * Support for appwindow. * * Revision 1.4 91/05/06 23:36:42 Espie * New parameters xoffset/yoffset for window setup. * * Revision 1.3 91/05/05 19:07:46 Espie * *** empty log message *** * * Revision 1.2 91/05/02 23:27:36 Espie * Interface and requester are in better terms, * uses the arp requester till further notice. * * Revision 1.1 91/05/02 01:33:08 Espie * Initial revision * * */ #include #include #include #include #include "proto.h" #include "public_play.h" LOCAL ULONG windowmask, audiomask, playmask, appmask; LOCAL BOOL not_yet = TRUE; struct pub_play *init_events(int pri, int xoffset, int yoffset) { struct pub_play *play; struct Window *window; audiomask = obtain_audio(pri); play = obtain_player(); window = init_interface(xoffset, yoffset); windowmask = 1L << window->UserPort->mp_SigBit; appmask = init_appwindow(window); playmask = play->signal; not_yet = FALSE; return play; } LOCAL void handle_events() { handle_interface(); handle_app(); handle_audio(); handle_player(); } LOCAL void wait_events() { ULONG r; r = Wait(windowmask | audiomask | playmask | appmask); if (r & windowmask) handle_interface(); if (r & appmask) handle_app(); if (r & audiomask) handle_audio(); if (r & playmask) handle_player(); } LOCAL void may_exit() { if (safe_unload_song()) clear_abort(); else _exit(0); } void check_abort(void) { if (not_yet) return; handle_events(); if (did_abort()) may_exit(); } void wait_abort(void) { wait_events(); if (did_abort()) may_exit(); }