XtAppMainLoop() XtAppMainLoop()
Name
XtAppMainLoop - continuously process events.
Synopsis
void XtAppMainLoop(app_context)
XtAppContext app_context;
Inputs
app_context
Specifies the application context that identifies the application.
Returns
XtAppMainLoop() enters an infinite loop and never returns.
Description
XtAppMainLoop() enters an infinite loop which calls XtAppNextEvent() to wait for an events on all displays in app_context and XtDis-
patchEvent() to dispatch that event to the appropriate code.
Usage
Most applications will call XtAppNextEvent() as the last line of their main() procedure. Some applications may provide their own versions
of this loop, however. A custom event loop might test an application-dependent global flag or other termination condition before looping
back and calling XtAppNextEvent(). If the number of top-level widgets drops to zero, the application may be able to exit safely, for exam-
ple.
Applications that use multiple application contexts or that use internal event loops will have to build their own event loop.
Background
XtAppNextEvent() looks for X events in the input queue, and also handles timer events (see XtAppAddTimeOut()) and events from alternate
input sources (see XtAppAddInput()). If none of these events are pending and a work procedure (see XtAppAddWorkProc()) is registered,
XtAppNextEvent() invokes that work procedure to do background processing, otherwise it blocks waiting for an event. Note that XtAppNex-
tEvent() dispatches timer and input events directly, but returns any X events that occur. Within XtAppMainLoop(), these X events are
always passed to XtDispatchEvent().
XtDispatchEvent() dispatches an event to the appropriate event handlers (see XtAddEventHandler()). Note that the translation manager reg-
isters an event handler, and that events that are dispatched to the translation manager will be further dispatched through the transla-
tions-to-actions mechanism.
Example
XtAppMainLoop() is implemented as follows:
void XtAppMainLoop(app)
XtAppContext app;
{
XEvent event;
for (;;) {
XtAppNextEvent(app, &event);
XtDispatchEvent(&event);
}
}
See Also
XtAddEventHandler(1), XtAppAddInput(1), XtAppAddTimeOut(1), XtAppAddWorkProc(1), XtAppNextEvent(1), XtAppProcessEvent(1), XtDis-
patchEvent(1).
Xt - Event Handling XtAppMainLoop()