home *** CD-ROM | disk | FTP | other *** search
- /* 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 <exec/types.h>
- #include <dos/dos.h>
- #include <intuition/intuition.h>
- #include <custom/cleanup.h>
- #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();
- }
-