
Notify_error
notify_post_destroy(client, status, when)
Notify_client client;
Destroy_status status;
Notify_event_type when;
NOTIFY_INVAL
is returned if status or when is not defined. After notifying a client to
destroy itself, all references to client are purged from the Notifier.
20.7.5 Delivery Time of Destroy Events
Unlike a client event notification, the Notifier does not try to detect when it is safe to post a
destroy notification. Thus, a destroy notification can come at any time. It is up to the good
judgement of a caller of notify_post_destroy() or notify_die() (described in
Section 20.10, “Notifier Control”) to make the call when a client is not likely to be in the
middle of accessing its data structures.
If status is DESTROY_CHECKING and the argument when is NOTIFY_IMMEDIATE, then
notify_post_destroy() may return NOTIFY_DESTROY_VETOED, if the client does not
want to go away. See Section 20.9.5, “Modifying an Objects’ Destruction,” for details on
these values.
Often you want to tell a client to go away at a safe time. This implies that delivery of the
destroy event will be delayed, in which case the return value of notify_post_des-
troy() cannot be NOTIFY_DESTROY_VETOED because the client has not been asked yet. To
get around this problem, the Notifier will flush the destroy event of a checking/destroy pair of
events if the checking phase is vetoed. Thus, a common idiom is:
(void) notify_post_dest