dooneevent(3Tk)
Tk_DoOneEvent, Tk_MainLoop, Tk_HandleEvent - wait for events and invoke event handlers
As shipped in IRIX 6.5.5. Unchanged since IRIX 6.5.
NAME Tk_DoOneEvent, Tk_MainLoop, Tk_HandleEvent - wait for events and invoke event handlers SYNOPSIS #include <tk.h> int Tk_DoOneEvent(flags) Tk_MainLoop() Tk_HandleEvent(eventPtr) ARGUMENTS int flags (in) This parameter is normally zero. It may be an OR-ed combination of any of the following flag bits: TK_X_EVENTS, TK_FILE_EVENTS, TK_TIMER_EVENTS, TK_IDLE_EVENTS, TK_ALL_EVENTS, or TK_DONT_WAIT. XEvent *eventPtr (in) Pointer to X event to dispatch to relevant handler(s). DESCRIPTION These three procedures are responsible for waiting for events and dispatching to event handlers created with the procedures Tk_CreateEventHandler, Tk_CreateFileHandler, Tk_CreateTimerHandler, and Tk_DoWhenIdle. Tk_DoOneEvent is the key procedure. It waits for a single event of any sort to occur, invokes the handler(s) for that event, and then returns. Tk_DoOneEvent first checks for X events and file- related events; if one is found then it calls the handler(s) for the event and returns. If there are no X or file events pending, then Tk_DoOneEvent checks to see if timer callbacks are ready; if so, it makes a single callback and returns. If no timer callbacks are ready, Tk_DoOneEvent checks for Tk_DoWhenIdle callbacks; if any are found, it invokes all of them and returns. Finally, if no events or work have been found, Tk_DoOneEvent sleeps until a timer, file, or X event occurs; then it processes the first event found (in the order given above) and returns. The normal return value is 1 to signify that some event or callback was processed. If no event or callback is processed (under various conditions described below), then 0 is returned. If the flags argument to Tk_DoOneEvent is non-zero then it restricts the kinds of events that will be processed by Tk_DoOneEvent. Flags may be an OR-ed combination of any of the following bits: TK_X_EVENTS - Process X events. TK_FILE_EVENTS - Process file events. TK_TIMER_EVENTS - Process timer events. TK_IDLE_EVENTS - Process Tk_DoWhenIdle callbacks. TK_ALL_EVENTS - Process all kinds of events: equivalent to OR- ing together all of the above flags or specifying none of them. TK_DONT_WAIT - Don't sleep: process only events that are ready at the time of the call. If any of the flags TK_X_EVENTS, TK_FILE_EVENTS, TK_TIMER_EVENTS, or TK_IDLE_EVENTS is set, then the only events that will be considered are those for which flags are set. Setting none of these flags is equivalent to the value TK_ALL_EVENTS, which causes all event types to be processed. The TK_DONT_WAIT flag causes Tk_DoWhenIdle not to put the process to sleep: it will check for events but if none are found then it returns immediately with a return value of 0 to indicate that no work was done. Tk_DoOneEvent will also return 0 without doing anything if flags is TK_IDLE_EVENTS and there are no Tk_DoWhenIdle callbacks pending. Lastly,| Tk_DoOneEvent will return 0 without doing anything if there are no events| or work found and if there are no files, displays, or timer handlers to | wait for. Tk_MainLoop is a procedure that loops repeatedly calling Tk_DoOneEvent. It returns only when there are no applications left in this process (i.e. no main windows exist anymore). Most X applications will call Tk_MainLoop after initialization; the main execution of the application will consist entirely of callbacks invoked by Tk_DoOneEvent. Tk_HandleEvent is a lower-level procedure invoked by Tk_DoOneEvent. It makes callbacks to any event handlers (created by calls to Tk_CreateEventHandler) that match eventPtr and then returns. In some cases it may be useful for an application to read events directly from X and dispatch them by calling Tk_HandleEvent, without going through the additional mechanism provided by Tk_DoOneEvent. These procedures may be invoked recursively. For example, it is possible to invoke Tk_DoOneEvent recursively from a handler called by Tk_DoOneEvent. This sort of operation is useful in some modal situations, such as when a notifier has been popped up and an application wishes to wait for the user to click a button in the notifier before doing anything else. KEYWORDS callback, event, handler, idle, timer