2 Copyright 1995-2007, The AROS Development Team. All rights reserved.
3 Copyright 2001-2003, The MorphOS Development Team. All Rights Reserved.
6 Add a Intuition Notification.
9 #include <intuition/intuition.h>
11 #include "intuition_intern.h"
13 /*****************************************************************************
17 #include <proto/exec.h>
18 #include <proto/intuition.h>
19 #include <proto/utility.h>
21 AROS_LH1(IPTR
, StartScreenNotifyTagList
,
24 AROS_LHA(struct TagItem
*, tags
, A0
),
27 struct IntuitionBase
*, IntuitionBase
, 161, Intuition
)
30 Add Notifications to Intuition. You will be notified when
37 SNA_PubName (STRPTR) - Name of the public screen. NULL means
38 you'll get notifications for all screens.
39 SNA_MsgPort (struct MsgPort*) - Notifications will be sent to this port.
40 SNA_SigBit (BYTE) - The signal bit to use
41 SNA_SigTask (struct Task*) - The task to signal
42 SNA_UserData (IPTR) - For your personal use. Will be copied
43 into snm_UserData of the messages you receive
44 SNA_Hook (struct Hook*)
45 SNA_Priority (Byte) - Priority in the notification queue.
46 SNA_Notify (ULONG) - SNOTIFY_ flags, see intuition/intuition.h
49 The value is private, only a test against ZERO is allowed and means Failure
64 *****************************************************************************/
67 struct IntScreenNotify
*notify
;
69 notify
= (struct IntScreenNotify
*) AllocVec(sizeof(struct IntScreenNotify
), MEMF_CLEAR
);
73 notify
->port
= (struct MsgPort
*) GetTagData(SNA_MsgPort
, 0, tags
);
74 notify
->sigbit
= (BYTE
) GetTagData(SNA_SigBit
, 0, tags
);
75 notify
->sigtask
= (struct Task
*) GetTagData(SNA_SigTask
, 0, tags
);
76 notify
->flags
= (ULONG
) GetTagData(SNA_Notify
, 0, tags
);
77 notify
->userdata
= (IPTR
) GetTagData(SNA_UserData
, 0, tags
);
78 notify
->hook
= (struct Hook
*) GetTagData(SNA_Hook
, 0, tags
);
79 notify
->node
.ln_Pri
= (BYTE
) GetTagData(SNA_Priority
, 0, tags
);
80 notify
->pubname
= NULL
;
82 char *pubname
= (char *) GetTagData(SNA_PubName
, 0, tags
);
85 notify
->pubname
= AllocVec(strlen(pubname
) + 1, MEMF_CLEAR
);
88 strcpy(notify
->pubname
, pubname
);
98 ObtainSemaphore(&GetPrivIBase(IntuitionBase
)->ScreenNotificationListLock
);
99 Enqueue(&GetPrivIBase(IntuitionBase
)->ScreenNotificationList
, (struct Node
*) notify
);
100 ReleaseSemaphore(&GetPrivIBase(IntuitionBase
)->ScreenNotificationListLock
);
104 ReturnPtr ("StartScreenNotifyTagList", IPTR
, notify
);
107 } /* StartScreenNotifyTagList */