/* IDCMPBlocker.c
 * Compiler-Optionen für SAS-C: 
 * LC -b1 -cfistq -v -y -j100 -L IDCMPBlocker.c
 */
#include <exec/types.h>
#include <intuition/intuition.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>

extern struct IntuitionBase *IntuitionBase;

/* Grafikdaten für den Mauszeiger */
UWORD __chip WaitPointer[] = {
 0x0000, 0x0000, 0x0400, 0x07C0, 0x0000, 0x07C0,
 0x0100, 0x0380, 0x0000, 0x07E0, 0x07C0, 0x1FF8,
 0x1FF0, 0x3FEC, 0x3FF8, 0x7FDE, 0x3FF8, 0x7FBE,
 0x7FFC, 0xFF7F, 0x7EFC, 0xFFFF, 0x7FFC, 0xFFFF,
 0x3FF8, 0x7FFE, 0x3FF8, 0x7FFE, 0x1FF0, 0x3FFC,
 0x07C0, 0x1FF8, 0x0000, 0x07E0, 0x0000, 0x0000,
};

struct NewWindow BusyWindow = {
  10,10,300,100, 0,1, CLOSEWINDOW, 
  WINDOWCLOSE|ACTIVATE, NULL, NULL, NULL, NULL,
  NULL,5,5, -1,-1, WBENCHSCREEN
};

main()
{
  struct Window *MyWindow;
  struct Requester busyreq;

  /* Library und Fenster öffnen */
  if(IntuitionBase = 
       OpenLibrary("intuition.library",33L)) {
    if( MyWindow = OpenWindow( &BusyWindow ) ) {
      /* Requester initialisieren */
      InitRequester(&busyreq);
      
      if(Request(&busyreq, MyWindow)) {
        /* Requester aktiv. Mauszeiger modifizieren
         * und den Window-Titel ändern */
        SetPointer(MyWindow, WaitPointer,16,16,-8,0);
        SetWindowTitles(MyWindow,
                    "Eingabe blockiert",(UBYTE *)~0);

        /* Kurze Zeit warten */
        (void)Delay( 5*50 );
        
        /* Mauszeiger wieder in Originalzustand und
         * Request beenden */
        ClearPointer(MyWindow);
        EndRequest(&busyreq, MyWindow);
      }

      SetWindowTitles(MyWindow,
            "Eingabe wieder möglich",(UBYTE *)~0);
      
      /* Auf CLOSEWINDOW-Message warten und Message
       * beantworten */
      WaitPort( MyWindow->UserPort );
      ReplyMsg(GetMsg(MyWindow->UserPort));
      
      CloseWindow(MyWindow);
    }
    CloseLibrary(IntuitionBase);
  }
}

