interpose a new function in front of the object’s client-destroy event handler using the fol-
lowing routine:
Notify_error
notify_interpose_destroy_func(client, destroy_func)
Notify_client client;
Notify_func destroy_func;
For an XView object, destruction may originate from several sources:
• The application may be terminated by a software interrupt from the calling process.
• The connection to the server has been lost and the Notifier is informing the application
that it is dying.
• xv_destroy(
object)
was called from within the application.
• The user may select the “Quit” menu item from the window manager’s pulldown menu.
Each of these scenarios results in a different destruction method. When the object is going to
be destroyed, the process happens in two phases. First, the object’s destroy-interposer is
called, informing it of the impending destruction. At this point, the interposer can veto the
destruction or it can allow it to take place—at which time the Notifier proceeds to phase two,
the actual object destruction.
Destroy event handlers use a status parameter to determine which phase of destruction the
Notifier is in—whether the Notifier is requesting if it is feasible for the client to be ter-
minated at present (phase one, DESTROY_CHECKING) or if it is making a request to terminate
(phase two, DESTROY_CLEANUP or DESTROY_PROCESS_DEATH).
The destroy-interpose function takes the following form:
Notify_value
destroy_func(client, status)
Notify_client client;
Destroy_status status;
typedef enum des