1 |
578 |
markom |
'\"
|
2 |
|
|
'\" Copyright (c) 1990-1992 The Regents of the University of California.
|
3 |
|
|
'\" Copyright (c) 1994-1996 Sun Microsystems, Inc.
|
4 |
|
|
'\"
|
5 |
|
|
'\" See the file "license.terms" for information on usage and redistribution
|
6 |
|
|
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
7 |
|
|
'\"
|
8 |
|
|
'\" RCS: @(#) $Id: DoOneEvent.3,v 1.1.1.1 2002-01-16 10:25:23 markom Exp $
|
9 |
|
|
'\"
|
10 |
|
|
.so man.macros
|
11 |
|
|
.TH Tcl_DoOneEvent 3 7.5 Tcl "Tcl Library Procedures"
|
12 |
|
|
.BS
|
13 |
|
|
.SH NAME
|
14 |
|
|
Tcl_DoOneEvent \- wait for events and invoke event handlers
|
15 |
|
|
.SH SYNOPSIS
|
16 |
|
|
.nf
|
17 |
|
|
\fB#include \fR
|
18 |
|
|
.sp
|
19 |
|
|
int
|
20 |
|
|
\fBTcl_DoOneEvent\fR(\fIflags\fR)
|
21 |
|
|
.SH ARGUMENTS
|
22 |
|
|
.AS int flags
|
23 |
|
|
.AP int flags in
|
24 |
|
|
This parameter is normally zero. It may be an OR-ed combination
|
25 |
|
|
of any of the following flag bits:
|
26 |
|
|
TCL_WINDOW_EVENTS,
|
27 |
|
|
TCL_FILE_EVENTS, TCL_TIMER_EVENTS, TCL_IDLE_EVENTS, TCL_ALL_EVENTS, or
|
28 |
|
|
TCL_DONT_WAIT.
|
29 |
|
|
.BE
|
30 |
|
|
|
31 |
|
|
.SH DESCRIPTION
|
32 |
|
|
.PP
|
33 |
|
|
This procedure is the entry point to Tcl's event loop; it is responsible for
|
34 |
|
|
waiting for events and dispatching event handlers created with
|
35 |
|
|
procedures such as \fBTk_CreateEventHandler\fR, \fBTcl_CreateFileHandler\fR,
|
36 |
|
|
\fBTcl_CreateTimerHandler\fR, and \fBTcl_DoWhenIdle\fR.
|
37 |
|
|
\fBTcl_DoOneEvent\fR checks to see if
|
38 |
|
|
events are already present on the Tcl event queue; if so,
|
39 |
|
|
it calls the handler(s) for the first (oldest) event, removes it from
|
40 |
|
|
the queue, and returns.
|
41 |
|
|
If there are no events ready to be handled, then \fBTcl_DoOneEvent\fR
|
42 |
|
|
checks for new events from all possible sources.
|
43 |
|
|
If any are found, it puts all of them on Tcl's event queue, calls
|
44 |
|
|
handlers for the first event on the queue, and returns.
|
45 |
|
|
If no events are found, \fBTcl_DoOneEvent\fR checks for \fBTcl_DoWhenIdle\fR
|
46 |
|
|
callbacks; if any are found, it invokes all of them and returns.
|
47 |
|
|
Finally, if no events or idle callbacks have been found, then
|
48 |
|
|
\fBTcl_DoOneEvent\fR sleeps until an event occurs; then it adds any
|
49 |
|
|
new events to the Tcl event queue, calls handlers for the first event,
|
50 |
|
|
and returns.
|
51 |
|
|
The normal return value is 1 to signify that some event
|
52 |
|
|
was processed (see below for other alternatives).
|
53 |
|
|
.PP
|
54 |
|
|
If the \fIflags\fR argument to \fBTcl_DoOneEvent\fR is non-zero,
|
55 |
|
|
it restricts the kinds of events that will be processed by
|
56 |
|
|
\fBTcl_DoOneEvent\fR.
|
57 |
|
|
\fIFlags\fR may be an OR-ed combination of any of the following bits:
|
58 |
|
|
.TP 27
|
59 |
|
|
\fBTCL_WINDOW_EVENTS\fR \-
|
60 |
|
|
Process window system events.
|
61 |
|
|
.TP 27
|
62 |
|
|
\fBTCL_FILE_EVENTS\fR \-
|
63 |
|
|
Process file events.
|
64 |
|
|
.TP 27
|
65 |
|
|
\fBTCL_TIMER_EVENTS\fR \-
|
66 |
|
|
Process timer events.
|
67 |
|
|
.TP 27
|
68 |
|
|
\fBTCL_IDLE_EVENTS\fR \-
|
69 |
|
|
Process idle callbacks.
|
70 |
|
|
.TP 27
|
71 |
|
|
\fBTCL_ALL_EVENTS\fR \-
|
72 |
|
|
Process all kinds of events: equivalent to OR-ing together all of the
|
73 |
|
|
above flags or specifying none of them.
|
74 |
|
|
.TP 27
|
75 |
|
|
\fBTCL_DONT_WAIT\fR \-
|
76 |
|
|
Don't sleep: process only events that are ready at the time of the
|
77 |
|
|
call.
|
78 |
|
|
.LP
|
79 |
|
|
If any of the flags \fBTCL_WINDOW_EVENTS\fR, \fBTCL_FILE_EVENTS\fR,
|
80 |
|
|
\fBTCL_TIMER_EVENTS\fR, or \fBTCL_IDLE_EVENTS\fR is set, then the only
|
81 |
|
|
events that will be considered are those for which flags are set.
|
82 |
|
|
Setting none of these flags is equivalent to the value
|
83 |
|
|
\fBTCL_ALL_EVENTS\fR, which causes all event types to be processed.
|
84 |
|
|
If an application has defined additional event sources with
|
85 |
|
|
\fBTcl_CreateEventSource\fR, then additional \fIflag\fR values
|
86 |
|
|
may also be valid, depending on those event sources.
|
87 |
|
|
.PP
|
88 |
|
|
The \fBTCL_DONT_WAIT\fR flag causes \fBTcl_DoOneEvent\fR not to put
|
89 |
|
|
the process to sleep: it will check for events but if none are found
|
90 |
|
|
then it returns immediately with a return value of 0 to indicate
|
91 |
|
|
that no work was done.
|
92 |
|
|
\fBTcl_DoOneEvent\fR will also return 0 without doing anything if
|
93 |
|
|
the only alternative is to block forever (this can happen, for example,
|
94 |
|
|
if \fIflags\fR is \fBTCL_IDLE_EVENTS\fR and there are no
|
95 |
|
|
\fBTcl_DoWhenIdle\fR callbacks pending, or if no event handlers or
|
96 |
|
|
timer handlers exist).
|
97 |
|
|
.PP
|
98 |
|
|
\fBTcl_DoOneEvent\fR may be invoked recursively. For example,
|
99 |
|
|
it is possible to invoke \fBTcl_DoOneEvent\fR recursively
|
100 |
|
|
from a handler called by \fBTcl_DoOneEvent\fR. This sort
|
101 |
|
|
of operation is useful in some modal situations, such
|
102 |
|
|
as when a
|
103 |
|
|
notification dialog has been popped up and an application wishes to
|
104 |
|
|
wait for the user to click a button in the dialog before
|
105 |
|
|
doing anything else.
|
106 |
|
|
|
107 |
|
|
.SH KEYWORDS
|
108 |
|
|
callback, event, handler, idle, timer
|