From 34e6242353643130f251b0aaf45555c24a81cd1dc1bd36050b306de73abd021a Mon Sep 17 00:00:00 2001 From: "Dr. Werner Fink" Date: Thu, 10 Mar 2016 12:10:16 +0000 Subject: [PATCH] . OBS-URL: https://build.opensuse.org/package/show/editors/emacs?expand=0&rev=193 --- debbugs16737.patch | 59 ++++++++++++++++++++++++++++++++++++++++++++++ emacs.changes | 8 +++++++ emacs.spec | 2 ++ 3 files changed, 69 insertions(+) create mode 100644 debbugs16737.patch diff --git a/debbugs16737.patch b/debbugs16737.patch new file mode 100644 index 0000000..73c6bdd --- /dev/null +++ b/debbugs16737.patch @@ -0,0 +1,59 @@ +| +| Compare with +| https://lists.gnu.org/archive/html/bug-gnu-emacs/2015-07/msg00287.html +| +| Based on git commit 4d7e6e51dd4acecff466a28d958c50f34fc130b8 + +From: Mike Crowe +Subject: [PATCH] Re-enable SIGIO when waiting for events +Date: Sat, 11 Jul 2015 12:58:00 +0100 + +Pasting a large string into an Emacs tty frame causes +keyboard.c:kbd_buffer_store_buffered_event to call ignore_sigio() +which sets SIGIO to SIG_IGN. + +Unfortunately no-one seems to ever re-enable the SIGIO handler. + +This leads to timeouts when attempting to paste into an Emacs X11 +frame as reported at +http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16737 . + +It appears that keyboard.c:kbd_buffer_get_event used to re-enable the +signal handler but that was removed as part of a large signal-handling +clean up in 4d7e6e51dd4acecff466a28d958c50f34fc130b8. + +Reinstating the re-enabling of SIGIO in kbd_buffer_get_event solves +the problems reported in bug 16737 for me. + +* src/keyboard.c (kbd_buffer_get_event): Re-enable SIGIO when waiting + for event. +--- + src/keyboard.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +--- src/keyboard.c ++++ src/keyboard.c 2016-03-10 07:39:35.770752804 +0000 +@@ -364,6 +364,8 @@ static ptrdiff_t echo_length (void); + + static Lisp_Object Qpolling_period; + ++static void deliver_input_available_signal (int sig); ++ + /* Incremented whenever a timer is run. */ + unsigned timers_run; + +@@ -3829,6 +3831,14 @@ kbd_buffer_get_event (KBOARD **kbp, + /* Start reading input again because we have processed enough to + be able to accept new events again. */ + unhold_keyboard_input (); ++#ifdef USABLE_SIGIO ++ if (!noninteractive) ++ { ++ struct sigaction action; ++ emacs_sigaction_init (&action, deliver_input_available_signal); ++ sigaction (SIGIO, &action, 0); ++ } ++#endif + start_polling (); + } + #endif /* subprocesses */ diff --git a/emacs.changes b/emacs.changes index c1ff71f..64c34d8 100644 --- a/emacs.changes +++ b/emacs.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Thu Mar 10 12:07:49 UTC 2016 - werner@suse.de + +- Add patch debbugs16737.patch due user request from Arun Persaud + to avoid hangs for several seconds or 10s of seconds in case of + pasting large amount of text + http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16737#185 + ------------------------------------------------------------------- Fri Feb 26 12:51:56 UTC 2016 - werner@suse.de diff --git a/emacs.spec b/emacs.spec index 2d1b0eb..8811c8c 100644 --- a/emacs.spec +++ b/emacs.spec @@ -113,6 +113,7 @@ Patch11: emacs-24.4-xim.patch Patch12: emacs-24.3-x11r7.patch Patch15: emacs-24.3-iconic.patch Patch16: emacs-24.4-flyspell.patch +Patch17: debbugs16737.patch Patch22: emacs-24.1-bnc628268.patch Patch30: emacs-24-0010-ELF-unexec-Correct-section-header-index.patch @@ -238,6 +239,7 @@ and most assembler-like syntaxes. %patch12 -p0 -b .x11r7 %patch15 -p0 -b .iconic %patch16 -p0 -b .flyspell +%patch17 -p0 -b .sigio %patch22 -p0 -b .obsolate %patch -p0 -b .0 %patch30 -p1