diff options
| author | Po Lu | 2022-12-01 14:33:23 +0800 |
|---|---|---|
| committer | Po Lu | 2022-12-01 14:33:34 +0800 |
| commit | e961a31507e6fba86a5d45fec7fa616e80028882 (patch) | |
| tree | efd4b82ed3cc4c8accf0aed6ece55614e2605c03 /src/alloc.c | |
| parent | 65468109a53c605df991f72521de5ed3b63ba6b8 (diff) | |
| download | emacs-e961a31507e6fba86a5d45fec7fa616e80028882.tar.gz emacs-e961a31507e6fba86a5d45fec7fa616e80028882.zip | |
Speed up handling X selection requests
* etc/NEWS: Announce speedup.
* src/alloc.c (garbage_collect): Call mark_xselect.
* src/xftfont.c (xftfont_end_for_frame): Fix crash on display IO
error.
* src/xselect.c (struct selection_data, struct transfer): New
structures.
(outstading_transfers): New variable.
(SELECTED_EVENTS, x_selection_request_lisp_error): Stop checking
cs->nofree.
(x_catch_errors_unwind): Delete function.
(c_size_for_format, x_size_for_format, selection_data_for_offset)
(selection_data_size, transfer_selecting_event)
(x_continue_selection_transfer, x_remove_selection_transfers)
(x_selection_transfer_timeout): New functions.
(x_reply_selection_request): When handling selection requests,
never wait for property notifications synchronously. Instead,
write out the selection data as the client reads it from the
event loop.
(x_handle_selection_request, x_convert_selection)
(x_handle_property_notify, x_get_window_property)
(lisp_data_to_selection_data): Don't ever use pointers to Lisp
string data! Instead, just store the string object itself.
(syms_of_xselect): Initialize outstanding transfer list.
(syms_of_xselect_for_pdumper):
* src/xterm.c (x_delete_display): Remove outstanding selection
transfers.
* src/xterm.h: Update prototypes.
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/alloc.c b/src/alloc.c index ff8b4b40aaa..e443acd72fa 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -6220,6 +6220,7 @@ garbage_collect (void) | |||
| 6220 | 6220 | ||
| 6221 | #ifdef HAVE_X_WINDOWS | 6221 | #ifdef HAVE_X_WINDOWS |
| 6222 | mark_xterm (); | 6222 | mark_xterm (); |
| 6223 | mark_xselect (); | ||
| 6223 | #endif | 6224 | #endif |
| 6224 | 6225 | ||
| 6225 | #ifdef HAVE_NS | 6226 | #ifdef HAVE_NS |