home *** CD-ROM | disk | FTP | other *** search
/ Audio Version 4.94 / audioversion4.94knowledgemediaresourcelibraryoctober1994.iso / amiga / utils / exp_iv / events.c < prev    next >
C/C++ Source or Header  |  1991-05-12  |  2KB  |  104 lines

  1. /* events.c */
  2.  
  3. /* handle about every event */
  4.  
  5. /*
  6.  * $Author: Espie $
  7.  * $Date: 91/05/12 19:56:25 $
  8.  * $Revision: 1.7 $
  9.  * $Log:    events.c,v $
  10.  * Revision 1.7  91/05/12  19:56:25  Espie
  11.  * Minor changes.
  12.  * 
  13.  * Revision 1.6  91/05/12  16:00:19  Espie
  14.  * Some new events, and tidying up.
  15.  * 
  16.  * Revision 1.5  91/05/09  17:35:06  Espie
  17.  * Support for appwindow.
  18.  * 
  19.  * Revision 1.4  91/05/06  23:36:42  Espie
  20.  * New parameters xoffset/yoffset for window setup.
  21.  * 
  22.  * Revision 1.3  91/05/05  19:07:46  Espie
  23.  * *** empty log message ***
  24.  * 
  25.  * Revision 1.2  91/05/02  23:27:36  Espie
  26.  * Interface and requester are in better terms,
  27.  * uses the arp requester till further notice.
  28.  * 
  29.  * Revision 1.1  91/05/02  01:33:08  Espie
  30.  * Initial revision
  31.  * 
  32.  *
  33.  */
  34.  
  35. #include <exec/types.h>
  36. #include <dos/dos.h>
  37. #include <intuition/intuition.h>
  38. #include <custom/cleanup.h>
  39. #include "proto.h"
  40. #include "public_play.h"
  41.  
  42. LOCAL ULONG windowmask, audiomask, playmask, appmask;
  43. LOCAL BOOL not_yet = TRUE;
  44.  
  45. struct pub_play *init_events(int pri, int xoffset, int yoffset)
  46.     {
  47.     struct pub_play *play;
  48.     struct Window *window;
  49.         audiomask = obtain_audio(pri);
  50.         play = obtain_player();
  51.         window = init_interface(xoffset, yoffset);
  52.         windowmask = 1L << window->UserPort->mp_SigBit;
  53.         appmask = init_appwindow(window);
  54.         playmask = play->signal;
  55.         not_yet = FALSE;
  56.         return play;
  57.     }
  58.     
  59. LOCAL void handle_events()
  60.     {    
  61.         handle_interface();
  62.         handle_app();
  63.         handle_audio();
  64.         handle_player();
  65.     }
  66.     
  67. LOCAL void wait_events()
  68.     {
  69.     ULONG r;
  70.         r = Wait(windowmask | audiomask | playmask | appmask);
  71.         if (r & windowmask)
  72.             handle_interface();
  73.         if (r & appmask)
  74.             handle_app();
  75.         if (r & audiomask)
  76.             handle_audio();
  77.         if (r & playmask)
  78.             handle_player();
  79.     }
  80.  
  81. LOCAL void may_exit()
  82.     {
  83.         if (safe_unload_song())
  84.             clear_abort();
  85.         else
  86.             _exit(0);
  87.     }
  88.  
  89. void check_abort(void)
  90.     {
  91.         if (not_yet)
  92.             return;
  93.         handle_events();
  94.         if (did_abort())
  95.             may_exit();
  96.     }
  97.         
  98. void wait_abort(void)
  99.     {    
  100.         wait_events();
  101.         if (did_abort())
  102.             may_exit();
  103.     }
  104.