diff options
| author | Stefan Monnier | 2009-03-27 16:14:23 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2009-03-27 16:14:23 +0000 |
| commit | d347e4943a371d278f479db89d932f136d6ee659 (patch) | |
| tree | 547f6c4557fb62a0135c1193e2019d6d73255294 /src/keyboard.c | |
| parent | d696b0d53f982b231b26124f180a92a0e7935c06 (diff) | |
| download | emacs-d347e4943a371d278f479db89d932f136d6ee659.tar.gz emacs-d347e4943a371d278f479db89d932f136d6ee659.zip | |
* keyboard.c (tty_read_avail_input): Don't treat a -1 return from
Gpm_GetEvent as an error that justifies closing the filedescriptor.
* term.c (close_gpm): Get the filedescriptor as a (new) parameter.
(Fgpm_mouse_stop): Pass that new parameter.
* termhooks.h (close_gpm): Adjust prototype.
Diffstat (limited to 'src/keyboard.c')
| -rw-r--r-- | src/keyboard.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/keyboard.c b/src/keyboard.c index 1bdf9a37b50..527a82b55ff 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -7184,17 +7184,23 @@ tty_read_avail_input (struct terminal *terminal, | |||
| 7184 | { | 7184 | { |
| 7185 | Gpm_Event event; | 7185 | Gpm_Event event; |
| 7186 | struct input_event hold_quit; | 7186 | struct input_event hold_quit; |
| 7187 | int gpm; | 7187 | int gpm, fd = gpm_fd; |
| 7188 | 7188 | ||
| 7189 | EVENT_INIT (hold_quit); | 7189 | EVENT_INIT (hold_quit); |
| 7190 | hold_quit.kind = NO_EVENT; | 7190 | hold_quit.kind = NO_EVENT; |
| 7191 | 7191 | ||
| 7192 | /* gpm==1 if event received. | ||
| 7193 | gpm==0 if the GPM daemon has closed the connection, in which case | ||
| 7194 | Gpm_GetEvent closes gpm_fd and clears it to -1, which is why | ||
| 7195 | we save it in `fd' so close_gpm can remove it from the | ||
| 7196 | select masks. | ||
| 7197 | gpm==-1 if a protocol error or EWOULDBLOCK; the latter is normal. */ | ||
| 7192 | while (gpm = Gpm_GetEvent (&event), gpm == 1) { | 7198 | while (gpm = Gpm_GetEvent (&event), gpm == 1) { |
| 7193 | nread += handle_one_term_event (tty, &event, &hold_quit); | 7199 | nread += handle_one_term_event (tty, &event, &hold_quit); |
| 7194 | } | 7200 | } |
| 7195 | if (gpm < 0) | 7201 | if (gpm == 0) |
| 7196 | /* Presumably the GPM daemon has closed the connection. */ | 7202 | /* Presumably the GPM daemon has closed the connection. */ |
| 7197 | close_gpm (); | 7203 | close_gpm (fd); |
| 7198 | if (hold_quit.kind != NO_EVENT) | 7204 | if (hold_quit.kind != NO_EVENT) |
| 7199 | kbd_buffer_store_event (&hold_quit); | 7205 | kbd_buffer_store_event (&hold_quit); |
| 7200 | if (nread) | 7206 | if (nread) |