rom/exec: Use flavour 'BINCOMPAT' instead of 'NATIVE' for Amigaisms
[AROS.git] / test / pubscreen.c
blobd669260aebd3a9236690d300138d63577ccf27c7
1 #include <proto/intuition.h>
2 #include <proto/dos.h>
3 #include <proto/exec.h>
5 #include <stdlib.h>
6 #include <stdio.h>
8 struct Screen *myscreen;
9 struct Window *mywindow;
10 BYTE signalnum;
12 void clean_exit(STRPTR txt)
14 if (mywindow) CloseWindow(mywindow);
15 if (myscreen) CloseScreen(myscreen);
16 FreeSignal(signalnum);
18 if (txt)
20 PutStr(txt);
21 exit(RETURN_FAIL);
23 exit(RETURN_OK);
26 int main(void)
28 BOOL done = FALSE;
29 BOOL closewindow = FALSE;
30 ULONG signals, winsig, pubsig;
31 struct IntuiMessage *message;
33 if ((signalnum = AllocSignal(-1)) == -1)
35 clean_exit("Can't allocate signal\n");
41 myscreen = OpenScreenTags
43 NULL,
44 SA_PubName, "MYPUBSCREEN",
45 SA_PubSig, signalnum,
46 SA_LikeWorkbench, TRUE,
47 SA_Title, "Pubscreenname: MYPUBSCREEN",
48 TAG_DONE
50 ) == NULL
53 clean_exit("Can't open screen\n");
59 mywindow = OpenWindowTags
61 NULL,
62 WA_Left, 30,
63 WA_Top, 30,
64 WA_Width, 250,
65 WA_Height, 100,
66 WA_DragBar, TRUE,
67 WA_DepthGadget, TRUE,
68 WA_CloseGadget, TRUE,
69 WA_Activate, TRUE,
70 WA_Title, "Close me to close the screen",
71 WA_IDCMP, IDCMP_CLOSEWINDOW,
72 WA_PubScreen, myscreen,
73 TAG_DONE
75 ) == NULL
78 clean_exit("Can't open window\n");
81 if ((PubScreenStatus(myscreen, 0) & 1) == 0)
83 clean_exit("Can't make screen public");
86 winsig = 1L << mywindow->UserPort->mp_SigBit;
87 pubsig = 1L << signalnum;
89 while (!done)
91 signals = Wait(winsig | pubsig);
93 if (mywindow && (signals & winsig))
95 while (NULL != (message = (struct IntuiMessage *)GetMsg(mywindow->UserPort)))
97 if (message->Class == IDCMP_CLOSEWINDOW)
99 closewindow = TRUE;
101 ReplyMsg((struct Message *)message);
104 if (signals & pubsig)
106 if (PubScreenStatus(myscreen, PSNF_PRIVATE) & 1)
108 done = TRUE;
110 else
112 PutStr("Failed to make screen private\n");
116 if (closewindow)
118 if (mywindow) CloseWindow(mywindow);
119 winsig = 0;
120 mywindow = NULL;
121 closewindow = FALSE;
125 clean_exit(NULL);
126 return 0;