annotate src/event-tty.c @ 4781:8a653fbe5c27

Add copyright and GPL v2 or later notices to Andy Piper's contributions, with his permission. See: http://calypso.tux.org/pipermail/xemacs-beta/2009-December/018041.html
author Jerry James <james@xemacs.org>
date Fri, 18 Dec 2009 09:19:33 -0700
parents 0c544f2f566c
children 308d34e9f07d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 /* The event_stream interface for tty's.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 Copyright (C) 1994, 1995 Board of Trustees, University of Illinois.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 Copyright (C) 1995 Sun Microsystems, Inc.
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
4 Copyright (C) 1995, 2002, 2003 Ben Wing.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 XEmacs is free software; you can redistribute it and/or modify it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 Free Software Foundation; either version 2, or (at your option) any
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 later version.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 XEmacs is distributed in the hope that it will be useful, but WITHOUT
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 along with XEmacs; see the file COPYING. If not, write to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 Boston, MA 02111-1307, USA. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 /* Synched up with: Not in FSF. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 #include <config.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 #include "lisp.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 #include "device.h"
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 853
diff changeset
29 #include "console-tty-impl.h"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 #include "events.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 #include "frame.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 #include "process.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 #include "sysproc.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 #include "syswait.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 #include "systime.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 /* Mask of bits indicating the descriptors that we wait for input on */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 extern SELECT_TYPE input_wait_mask, non_fake_input_wait_mask;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 extern SELECT_TYPE process_only_mask, tty_only_mask;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 static struct event_stream *tty_event_stream;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
44 #ifdef WIN32_ANY
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
45 extern int mswindows_is_blocking;
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
46 #endif
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
47
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
48 static int last_quit_check_signal_tick_count;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
49
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 /* timeout events */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 /* The pending timers are stored in an ordered list, where the first timer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 on the list is the first one to fire. Times recorded here are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 absolute. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 static struct low_level_timeout *tty_timer_queue;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 static int
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 emacs_tty_add_timeout (EMACS_TIME thyme)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 return add_low_level_timeout (&tty_timer_queue, thyme);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 static void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 emacs_tty_remove_timeout (int id)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 remove_low_level_timeout (&tty_timer_queue, id);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 static void
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
73 tty_timeout_to_emacs_event (Lisp_Event *emacs_event)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 {
934
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
75 /* timeout events have nil as channel */
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
76 SET_EVENT_TYPE (emacs_event, timeout_event);
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
77 SET_EVENT_TIMESTAMP_ZERO (emacs_event); /* #### */
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
78 SET_EVENT_TIMEOUT_INTERVAL_ID (emacs_event,
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
79 pop_low_level_timeout (&tty_timer_queue, 0));
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
80 SET_EVENT_TIMEOUT_FUNCTION (emacs_event, Qnil);
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
81 SET_EVENT_TIMEOUT_OBJECT (emacs_event, Qnil);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 static int
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
87 emacs_tty_event_pending_p (int how_many)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 {
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
89 Lisp_Object event;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
90 int tick_count_val;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
91
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
92 /* Cf. the comments on emacs_Xt_event_pending_p in event-xlike-inc.c . */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
93
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
94 if (!how_many)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 EMACS_TIME sometime;
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
97
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
98 /* (1) Any pending events in the dispatch queue? */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
99 if (!NILP(dispatch_event_queue))
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
100 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
101 return 1;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
102 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
103
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
104 /* (2) Any TTY or process input available? */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
105 if (poll_fds_for_input (non_fake_input_wait_mask))
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
106 return 1;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
107
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
108 /* (3) Any timeout input available? */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 EMACS_GET_TIME (sometime);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 if (tty_timer_queue &&
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111 EMACS_TIME_EQUAL_OR_GREATER (sometime, tty_timer_queue->time))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112 return 1;
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
113 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
114 else
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
115 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
116 /* HOW_MANY > 0 */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
117 EVENT_CHAIN_LOOP (event, dispatch_event_queue)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
118 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
119 if (command_event_p (event))
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
120 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
121 how_many--;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
122 if (how_many <= 0)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
123 return 1;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
124 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
125 }
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
126
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
129 tick_count_val = quit_check_signal_tick_count;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
130
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
131 /* Checking in_modal_loop here is a bit cargo-cultish, since its use is
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
132 specific to builds with a window system. */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
133 if (!in_modal_loop &&
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
134 (last_quit_check_signal_tick_count != tick_count_val))
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
135 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
136 last_quit_check_signal_tick_count = tick_count_val;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
137
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
138 /* We need to drain the entire queue now -- if we only drain part of
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
139 it, we may later on end up with events actually pending but
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
140 detect_input_pending() returning false because there wasn't
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
141 another SIGIO. */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
142 event_stream_drain_queue ();
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
143
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
144 if (!how_many)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
145 return !NILP (dispatch_event_queue);
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
146
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
147 EVENT_CHAIN_LOOP (event, dispatch_event_queue)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
148 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
149 if (command_event_p (event))
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
150 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
151 how_many--;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
152 if (how_many <= 0)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
153 return 1;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
154 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
155 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
156 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
157
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
158 return 0;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 static void
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
162 emacs_tty_next_event (Lisp_Event *emacs_event)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 while (1)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 int ndesc;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 int i;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 SELECT_TYPE temp_mask = input_wait_mask;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 EMACS_TIME time_to_block;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 EMACS_SELECT_TIME select_time_to_block, *pointer_to_this;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171
3541
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
172 if (!NILP (dispatch_event_queue))
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
173 {
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
174 Lisp_Object event, event2;
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
175 event2 = wrap_event (emacs_event);
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
176 event = dequeue_dispatch_event ();
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
177 Fcopy_event (event, event2);
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
178 Fdeallocate_event (event);
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
179 return;
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
180 }
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
181
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 if (!get_low_level_timeout_interval (tty_timer_queue, &time_to_block))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 /* no timer events; block indefinitely */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 pointer_to_this = 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187 EMACS_TIME_TO_SELECT_TIME (time_to_block, select_time_to_block);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 pointer_to_this = &select_time_to_block;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
191 #ifdef WIN32_ANY
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
192 mswindows_is_blocking = 1;
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
193 #endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194 ndesc = select (MAXDESC, &temp_mask, 0, 0, pointer_to_this);
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
195 #ifdef WIN32_ANY
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
196 mswindows_is_blocking = 0;
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
197 #endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198 if (ndesc > 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 /* Look for a TTY event */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 for (i = 0; i < MAXDESC; i++)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 /* To avoid race conditions (among other things, an infinite
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 loop when called from Fdiscard_input()), we must return
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 user events ahead of process events. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 if (FD_ISSET (i, &temp_mask) && FD_ISSET (i, &tty_only_mask))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207 {
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
208 struct console *c = find_tty_or_stream_console_from_fd (i);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 assert (c);
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 442
diff changeset
211 if (read_event_from_tty_or_stream_desc (emacs_event, c))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 /* Look for a process event */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217 for (i = 0; i < MAXDESC; i++)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 if (FD_ISSET (i, &temp_mask) && FD_ISSET (i, &process_only_mask))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221 Lisp_Object process;
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
222 Lisp_Process *p = get_process_from_usid (FD_TO_USID(i));
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 assert (p);
793
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
225 process = wrap_process (p);
934
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
226 set_event_type (emacs_event, process_event);
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
227 /* process events have nil as channel */
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
228 SET_EVENT_TIMESTAMP_ZERO (emacs_event); /* #### */
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
229 SET_EVENT_PROCESS_PROCESS (emacs_event, process);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 /* We might get here when a fake event came through a signal. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 /* Return a dummy event, so that a cycle of the command loop will
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 occur. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 drain_signal_event_pipe ();
934
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
238 set_event_type (emacs_event, eval_event);
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
239 /* eval events have nil as channel */
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
240 SET_EVENT_EVAL_FUNCTION (emacs_event, Qidentity);
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
241 SET_EVENT_EVAL_OBJECT (emacs_event, Qnil);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244 else if (ndesc == 0) /* timeout fired */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 tty_timeout_to_emacs_event (emacs_event);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 static void
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
253 emacs_tty_format_magic_event (Lisp_Event *UNUSED (emacs_event),
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
254 Lisp_Object UNUSED (pstream))
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
255 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
256 /* Nothing to do currently */
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
257 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
258
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
259 static int
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
260 emacs_tty_compare_magic_event (Lisp_Event *UNUSED (e1),
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
261 Lisp_Event *UNUSED (e2))
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
262 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
263 return 1;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
264 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
265
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
266 static Hashcode
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
267 emacs_tty_hash_magic_event (Lisp_Event *UNUSED (e))
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
268 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
269 return 0;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
270 }
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
271
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
272 static void
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
273 emacs_tty_handle_magic_event (Lisp_Event *UNUSED (emacs_event))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275 /* Nothing to do currently */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 static void
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
280 emacs_tty_select_process (Lisp_Process *process, int doin, int doerr)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281 {
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
282 int infd, errfd;
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
283
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
284 event_stream_unixoid_select_process (process, doin, doerr, &infd, &errfd);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 static void
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
288 emacs_tty_unselect_process (Lisp_Process *process, int doin, int doerr)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
289 {
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
290 int infd, errfd;
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
291
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
292 event_stream_unixoid_unselect_process (process, doin, doerr, &infd, &errfd);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 static void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296 emacs_tty_select_console (struct console *con)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
298 event_stream_unixoid_select_console (con);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 static void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 emacs_tty_unselect_console (struct console *con)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304 event_stream_unixoid_unselect_console (con);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307 static void
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
308 emacs_tty_drain_queue (void)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309 {
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
310 drain_tty_devices ();
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
313 static void
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
314 emacs_tty_create_io_streams (void* inhandle, void* outhandle,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
315 void *errhandle, Lisp_Object* instream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
316 Lisp_Object* outstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
317 Lisp_Object* errstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
318 USID* in_usid,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
319 USID* err_usid,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
320 int flags)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
321 {
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
322 event_stream_unixoid_create_io_streams
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
323 (inhandle, outhandle, errhandle, instream, outstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
324 errstream, in_usid, err_usid, flags);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
327 static void
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
328 emacs_tty_delete_io_streams (Lisp_Object instream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
329 Lisp_Object outstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
330 Lisp_Object errstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
331 USID* in_usid,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
332 USID* err_usid)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333 {
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
334 event_stream_unixoid_delete_io_streams
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
335 (instream, outstream, errstream, in_usid, err_usid);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 /* initialization */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344 reinit_vars_of_event_tty (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345 {
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
346 tty_event_stream = xnew_and_zero (struct event_stream);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348 tty_event_stream->event_pending_p = emacs_tty_event_pending_p;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
349 tty_event_stream->next_event_cb = emacs_tty_next_event;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350 tty_event_stream->handle_magic_event_cb = emacs_tty_handle_magic_event;
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
351 tty_event_stream->format_magic_event_cb = emacs_tty_format_magic_event;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
352 tty_event_stream->compare_magic_event_cb= emacs_tty_compare_magic_event;
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
353 tty_event_stream->hash_magic_event_cb = emacs_tty_hash_magic_event;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354 tty_event_stream->add_timeout_cb = emacs_tty_add_timeout;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 tty_event_stream->remove_timeout_cb = emacs_tty_remove_timeout;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356 tty_event_stream->select_console_cb = emacs_tty_select_console;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357 tty_event_stream->unselect_console_cb = emacs_tty_unselect_console;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
358 tty_event_stream->select_process_cb = emacs_tty_select_process;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
359 tty_event_stream->unselect_process_cb = emacs_tty_unselect_process;
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
360 tty_event_stream->drain_queue_cb = emacs_tty_drain_queue;
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
361 tty_event_stream->create_io_streams_cb = emacs_tty_create_io_streams;
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
362 tty_event_stream->delete_io_streams_cb = emacs_tty_delete_io_streams;
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
363
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
364 last_quit_check_signal_tick_count = 0;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 vars_of_event_tty (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 init_event_tty_late (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
375 event_stream = tty_event_stream;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376 }