aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorPo Lu2022-12-01 14:33:23 +0800
committerPo Lu2022-12-01 14:33:34 +0800
commite961a31507e6fba86a5d45fec7fa616e80028882 (patch)
treeefd4b82ed3cc4c8accf0aed6ece55614e2605c03 /src/alloc.c
parent65468109a53c605df991f72521de5ed3b63ba6b8 (diff)
downloademacs-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.c1
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