diff options
| author | dickmao | 2021-05-13 15:21:53 +0200 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2021-05-13 15:22:01 +0200 |
| commit | 5be26b43f441e429dadbf7c8beccb351a84f1275 (patch) | |
| tree | bcfe58ae897cb1962890527509b6d9f8cbeb8217 /src | |
| parent | 1aaceec93173fd98c25dfe282b2fa2030ccf14f0 (diff) | |
| download | emacs-5be26b43f441e429dadbf7c8beccb351a84f1275.tar.gz emacs-5be26b43f441e429dadbf7c8beccb351a84f1275.zip | |
Process sentinels need to work under X and commandline
* src/process.c (add_non_keyboard_read_fd): Make this a public function.
(add_process_read_fd): Fold old, static add_non_keyboard_read_fd guts
into here.
* src/xsmfns.c (ice_conn_watch_CB): Call add_non_keyboard_read_fd
(bug#43834).
Diffstat (limited to 'src')
| -rw-r--r-- | src/process.c | 15 | ||||
| -rw-r--r-- | src/process.h | 1 | ||||
| -rw-r--r-- | src/xsmfns.c | 2 |
3 files changed, 10 insertions, 8 deletions
diff --git a/src/process.c b/src/process.c index 84e301a87a5..47a2a6f1a31 100644 --- a/src/process.c +++ b/src/process.c | |||
| @@ -473,8 +473,15 @@ add_read_fd (int fd, fd_callback func, void *data) | |||
| 473 | fd_callback_info[fd].data = data; | 473 | fd_callback_info[fd].data = data; |
| 474 | } | 474 | } |
| 475 | 475 | ||
| 476 | void | ||
| 477 | add_non_keyboard_read_fd (int fd, fd_callback func, void *data) | ||
| 478 | { | ||
| 479 | add_read_fd(fd, func, data); | ||
| 480 | fd_callback_info[fd].flags &= ~KEYBOARD_FD; | ||
| 481 | } | ||
| 482 | |||
| 476 | static void | 483 | static void |
| 477 | add_non_keyboard_read_fd (int fd) | 484 | add_process_read_fd (int fd) |
| 478 | { | 485 | { |
| 479 | eassert (fd >= 0 && fd < FD_SETSIZE); | 486 | eassert (fd >= 0 && fd < FD_SETSIZE); |
| 480 | eassert (fd_callback_info[fd].func == NULL); | 487 | eassert (fd_callback_info[fd].func == NULL); |
| @@ -483,12 +490,6 @@ add_non_keyboard_read_fd (int fd) | |||
| 483 | fd_callback_info[fd].flags |= FOR_READ; | 490 | fd_callback_info[fd].flags |= FOR_READ; |
| 484 | if (fd > max_desc) | 491 | if (fd > max_desc) |
| 485 | max_desc = fd; | 492 | max_desc = fd; |
| 486 | } | ||
| 487 | |||
| 488 | static void | ||
| 489 | add_process_read_fd (int fd) | ||
| 490 | { | ||
| 491 | add_non_keyboard_read_fd (fd); | ||
| 492 | eassert (0 <= fd && fd < FD_SETSIZE); | 493 | eassert (0 <= fd && fd < FD_SETSIZE); |
| 493 | fd_callback_info[fd].flags |= PROCESS_FD; | 494 | fd_callback_info[fd].flags |= PROCESS_FD; |
| 494 | } | 495 | } |
diff --git a/src/process.h b/src/process.h index d041ada5867..0890f253a40 100644 --- a/src/process.h +++ b/src/process.h | |||
| @@ -284,6 +284,7 @@ extern bool kbd_on_hold_p (void); | |||
| 284 | typedef void (*fd_callback) (int fd, void *data); | 284 | typedef void (*fd_callback) (int fd, void *data); |
| 285 | 285 | ||
| 286 | extern void add_read_fd (int fd, fd_callback func, void *data); | 286 | extern void add_read_fd (int fd, fd_callback func, void *data); |
| 287 | extern void add_non_keyboard_read_fd (int fd, fd_callback func, void *data); | ||
| 287 | extern void delete_read_fd (int fd); | 288 | extern void delete_read_fd (int fd); |
| 288 | extern void add_write_fd (int fd, fd_callback func, void *data); | 289 | extern void add_write_fd (int fd, fd_callback func, void *data); |
| 289 | extern void delete_write_fd (int fd); | 290 | extern void delete_write_fd (int fd); |
diff --git a/src/xsmfns.c b/src/xsmfns.c index 10565a4b25f..ddb86d82fe1 100644 --- a/src/xsmfns.c +++ b/src/xsmfns.c | |||
| @@ -357,7 +357,7 @@ ice_conn_watch_CB (IceConn iceConn, IcePointer clientData, | |||
| 357 | } | 357 | } |
| 358 | 358 | ||
| 359 | ice_fd = IceConnectionNumber (iceConn); | 359 | ice_fd = IceConnectionNumber (iceConn); |
| 360 | add_read_fd (ice_fd, x_session_check_input, NULL); | 360 | add_non_keyboard_read_fd (ice_fd, x_session_check_input, NULL); |
| 361 | } | 361 | } |
| 362 | 362 | ||
| 363 | /* Create the client leader window. */ | 363 | /* Create the client leader window. */ |