home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / MM1 / GRAPHICS / ssaver.lzh / SRC / saver_black.c < prev    next >
C/C++ Source or Header  |  1995-11-02  |  1KB  |  70 lines

  1. /* saver_black.c                                  */
  2. /* A screen-saver program for use with SSaver,    */
  3. /* by Boisy G. Pitre                              */
  4. /* This program works on a 256-color screen       */
  5.  
  6. #include <stdio.h>
  7. #include <modes.h>
  8. #include <types.h>
  9.  
  10. #include "saver.h"
  11.  
  12. int orgwin, win, twin;
  13.  
  14. int sigcode = 0;    /* storage to keep received signal(s) */
  15. int sighandler();    /* this will use a signal handler function */
  16.  
  17. extern int errno;
  18.  
  19. main()
  20. {
  21.     int evID;                    /* event ID */
  22.  
  23.     sigmask(1);                    /* mask signals */
  24.  
  25.     intercept(sighandler);        /* install signal handler */
  26.  
  27.     if ((evID = _ev_link(EV_NAME)) == -1)
  28.         exit(1);
  29.  
  30.     DWSet(STDOUT, 3, 0, 0, 40, 26, 0, 0, 0);
  31.  
  32.     /* get the original window device number */
  33.     if (_gs_currscr(STDOUT,&orgwin) == -1)
  34.         exit(0);
  35.  
  36.     CurOff(STDOUT);
  37.     BColor(STDOUT, 0);
  38.  
  39.     _gs_wdev(STDOUT, &win);        /* get our window device number */
  40.     _ss_select(STDOUT, win);    /* now select it! */
  41.  
  42.     sigmask(0);                    /* unmask signals */
  43.     _ev_set(evID, 0, 0x8000);    /* wake up everybody */
  44.  
  45.     /* we unlink from the event since we are through with it */
  46.     _ev_unlink(evID);
  47.  
  48.     while(!sigcode)
  49.         sleep(0);
  50. }
  51.  
  52. sighandler(signal)
  53. int signal;
  54. {
  55.     switch (signal) {
  56.     case SLEEP_SIG:
  57.     case WAKE_SIG:
  58.         break;
  59.     case QUIT_SIG:
  60.     default:
  61.         sigcode = signal;
  62.         if (_gs_currscr(STDOUT,&twin) == -1)
  63.             exit(0);
  64.         if (twin == win) {
  65.             _ss_select(STDOUT, orgwin);
  66.         }
  67.     }
  68. }
  69.  
  70.