annotate src/event-tty.c @ 5584:d469c668462e

#'load-terminal-library; load term files correctly for gnuclient consoles. lisp/ChangeLog addition: 2011-10-17 Aidan Kehoe <kehoea@parhasard.net> * startup.el (load-terminal-library): Don't (getenv "TERM") here, call #'console-tty-terminal-type instead, different gnuclient consoles can and should have different terminal type function maps effective.
author Aidan Kehoe <kehoea@parhasard.net>
date Tue, 18 Oct 2011 12:03:36 +0100
parents 308d34e9f07d
children
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
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3735
diff changeset
8 XEmacs is free software: you can redistribute it and/or modify it
428
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
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3735
diff changeset
10 Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3735
diff changeset
11 option) any later version.
428
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
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3735
diff changeset
19 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 /* Synched up with: Not in FSF. */
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 #include <config.h>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 #include "lisp.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 #include "device.h"
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 853
diff changeset
27 #include "console-tty-impl.h"
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 #include "events.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 #include "frame.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 #include "process.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 #include "sysproc.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 #include "syswait.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 #include "systime.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 /* Mask of bits indicating the descriptors that we wait for input on */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 extern SELECT_TYPE input_wait_mask, non_fake_input_wait_mask;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 extern SELECT_TYPE process_only_mask, tty_only_mask;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 static struct event_stream *tty_event_stream;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
42 #ifdef WIN32_ANY
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
43 extern int mswindows_is_blocking;
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
44 #endif
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
45
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
46 static int last_quit_check_signal_tick_count;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
47
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 /************************************************************************/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 /* timeout events */
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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 /* 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
54 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
55 absolute. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 static struct low_level_timeout *tty_timer_queue;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 static int
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 emacs_tty_add_timeout (EMACS_TIME thyme)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 return add_low_level_timeout (&tty_timer_queue, 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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 static void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 emacs_tty_remove_timeout (int id)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 remove_low_level_timeout (&tty_timer_queue, 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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 static void
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
71 tty_timeout_to_emacs_event (Lisp_Event *emacs_event)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 {
934
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
73 /* timeout events have nil as channel */
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
74 SET_EVENT_TYPE (emacs_event, timeout_event);
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
75 SET_EVENT_TIMESTAMP_ZERO (emacs_event); /* #### */
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
76 SET_EVENT_TIMEOUT_INTERVAL_ID (emacs_event,
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
77 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
78 SET_EVENT_TIMEOUT_FUNCTION (emacs_event, Qnil);
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
79 SET_EVENT_TIMEOUT_OBJECT (emacs_event, Qnil);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81
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 static int
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
85 emacs_tty_event_pending_p (int how_many)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 {
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
87 Lisp_Object event;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
88 int tick_count_val;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
89
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
90 /* 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
91
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
92 if (!how_many)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 EMACS_TIME sometime;
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
95
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
96 /* (1) Any pending events in the dispatch queue? */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
97 if (!NILP(dispatch_event_queue))
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
98 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
99 return 1;
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
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
102 /* (2) Any TTY or process input available? */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
103 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
104 return 1;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
105
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
106 /* (3) Any timeout input available? */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 EMACS_GET_TIME (sometime);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 if (tty_timer_queue &&
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 EMACS_TIME_EQUAL_OR_GREATER (sometime, tty_timer_queue->time))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 return 1;
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
111 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
112 else
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 /* HOW_MANY > 0 */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
115 EVENT_CHAIN_LOOP (event, dispatch_event_queue)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
116 {
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
117 if (command_event_p (event))
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 how_many--;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
120 if (how_many <= 0)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
121 return 1;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
122 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
123 }
1268
fffe735e63ee [xemacs-hg @ 2003-02-07 11:50:50 by ben]
ben
parents: 1204
diff changeset
124
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126
3735
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
127 tick_count_val = quit_check_signal_tick_count;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
128
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
129 /* 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
130 specific to builds with a window system. */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
131 if (!in_modal_loop &&
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
132 (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
133 {
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 /* 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
137 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
138 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
139 another SIGIO. */
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
140 event_stream_drain_queue ();
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
141
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
142 if (!how_many)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
143 return !NILP (dispatch_event_queue);
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
144
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
145 EVENT_CHAIN_LOOP (event, 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 if (command_event_p (event))
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 how_many--;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
150 if (how_many <= 0)
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
151 return 1;
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
152 }
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
153 }
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 return 0;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159 static void
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
160 emacs_tty_next_event (Lisp_Event *emacs_event)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 while (1)
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 int ndesc;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 int i;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166 SELECT_TYPE temp_mask = input_wait_mask;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 EMACS_TIME time_to_block;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 EMACS_SELECT_TIME select_time_to_block, *pointer_to_this;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169
3541
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
170 if (!NILP (dispatch_event_queue))
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
171 {
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
172 Lisp_Object event, event2;
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
173 event2 = wrap_event (emacs_event);
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
174 event = dequeue_dispatch_event ();
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
175 Fcopy_event (event, event2);
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
176 Fdeallocate_event (event);
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
177 return;
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
178 }
02f6568ceaab [xemacs-hg @ 2006-08-04 20:55:02 by aidan]
aidan
parents: 2367
diff changeset
179
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 if (!get_low_level_timeout_interval (tty_timer_queue, &time_to_block))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 /* no timer events; block indefinitely */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 pointer_to_this = 0;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 EMACS_TIME_TO_SELECT_TIME (time_to_block, select_time_to_block);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 pointer_to_this = &select_time_to_block;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188
1292
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
189 #ifdef WIN32_ANY
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
190 mswindows_is_blocking = 1;
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
191 #endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 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
193 #ifdef WIN32_ANY
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
194 mswindows_is_blocking = 0;
f3437b56874d [xemacs-hg @ 2003-02-13 09:57:04 by ben]
ben
parents: 1268
diff changeset
195 #endif
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 if (ndesc > 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198 /* Look for a TTY event */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 for (i = 0; i < MAXDESC; i++)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 /* To avoid race conditions (among other things, an infinite
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 loop when called from Fdiscard_input()), we must return
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 user events ahead of process events. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 if (FD_ISSET (i, &temp_mask) && FD_ISSET (i, &tty_only_mask))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205 {
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
206 struct console *c = find_tty_or_stream_console_from_fd (i);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 assert (c);
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 442
diff changeset
209 if (read_event_from_tty_or_stream_desc (emacs_event, c))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 }
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 /* Look for a process event */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 for (i = 0; i < MAXDESC; i++)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217 if (FD_ISSET (i, &temp_mask) && FD_ISSET (i, &process_only_mask))
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 Lisp_Object process;
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
220 Lisp_Process *p = get_process_from_usid (FD_TO_USID(i));
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 assert (p);
793
e38acbeb1cae [xemacs-hg @ 2002-03-29 04:46:17 by ben]
ben
parents: 788
diff changeset
223 process = wrap_process (p);
934
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
224 set_event_type (emacs_event, process_event);
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
225 /* process events have nil as channel */
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
226 SET_EVENT_TIMESTAMP_ZERO (emacs_event); /* #### */
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
227 SET_EVENT_PROCESS_PROCESS (emacs_event, process);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 }
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 /* We might get here when a fake event came through a signal. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 /* 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
234 occur. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 drain_signal_event_pipe ();
934
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
236 set_event_type (emacs_event, eval_event);
c925bacdda60 [xemacs-hg @ 2002-07-29 09:21:12 by michaels]
michaels
parents: 872
diff changeset
237 /* eval events have nil as channel */
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
238 SET_EVENT_EVAL_FUNCTION (emacs_event, Qidentity);
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
239 SET_EVENT_EVAL_OBJECT (emacs_event, Qnil);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 else if (ndesc == 0) /* timeout fired */
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 tty_timeout_to_emacs_event (emacs_event);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 return;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 }
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 static void
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
251 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
252 Lisp_Object UNUSED (pstream))
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
253 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
254 /* Nothing to do currently */
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
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
257 static int
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
258 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
259 Lisp_Event *UNUSED (e2))
788
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
260 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
261 return 1;
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
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
264 static Hashcode
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
265 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
266 {
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
267 return 0;
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
026c5bf9c134 [xemacs-hg @ 2002-03-21 07:29:57 by ben]
ben
parents: 771
diff changeset
270 static void
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1292
diff changeset
271 emacs_tty_handle_magic_event (Lisp_Event *UNUSED (emacs_event))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 /* Nothing to do currently */
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
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 static void
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
278 emacs_tty_select_process (Lisp_Process *process, int doin, int doerr)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 {
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
280 int infd, errfd;
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
281
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
282 event_stream_unixoid_select_process (process, doin, doerr, &infd, &errfd);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285 static void
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
286 emacs_tty_unselect_process (Lisp_Process *process, int doin, int doerr)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 {
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
288 int infd, errfd;
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
289
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
290 event_stream_unixoid_unselect_process (process, doin, doerr, &infd, &errfd);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293 static void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294 emacs_tty_select_console (struct console *con)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
296 event_stream_unixoid_select_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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299 static void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300 emacs_tty_unselect_console (struct console *con)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 event_stream_unixoid_unselect_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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 static void
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
306 emacs_tty_drain_queue (void)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307 {
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
308 drain_tty_devices ();
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
309 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
310
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
311 static void
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
312 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
313 void *errhandle, Lisp_Object* instream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
314 Lisp_Object* outstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
315 Lisp_Object* errstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
316 USID* in_usid,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
317 USID* err_usid,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
318 int flags)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 {
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
320 event_stream_unixoid_create_io_streams
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
321 (inhandle, outhandle, errhandle, instream, outstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
322 errstream, in_usid, err_usid, flags);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
325 static void
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
326 emacs_tty_delete_io_streams (Lisp_Object instream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
327 Lisp_Object outstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
328 Lisp_Object errstream,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
329 USID* in_usid,
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
330 USID* err_usid)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331 {
853
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
332 event_stream_unixoid_delete_io_streams
2b6fa2618f76 [xemacs-hg @ 2002-05-28 08:44:22 by ben]
ben
parents: 793
diff changeset
333 (instream, outstream, errstream, in_usid, err_usid);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335
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 /* initialization */
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
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 reinit_vars_of_event_tty (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 {
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents: 934
diff changeset
344 tty_event_stream = xnew_and_zero (struct event_stream);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346 tty_event_stream->event_pending_p = emacs_tty_event_pending_p;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 tty_event_stream->next_event_cb = emacs_tty_next_event;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348 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
349 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
350 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
351 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
352 tty_event_stream->add_timeout_cb = emacs_tty_add_timeout;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 tty_event_stream->remove_timeout_cb = emacs_tty_remove_timeout;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354 tty_event_stream->select_console_cb = emacs_tty_select_console;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 tty_event_stream->unselect_console_cb = emacs_tty_unselect_console;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356 tty_event_stream->select_process_cb = emacs_tty_select_process;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357 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
358 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
359 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
360 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
361
0c544f2f566c [xemacs-hg @ 2006-12-11 10:10:18 by aidan]
aidan
parents: 3541
diff changeset
362 last_quit_check_signal_tick_count = 0;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366 vars_of_event_tty (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 }
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 void
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371 init_event_tty_late (void)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 event_stream = tty_event_stream;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374 }