summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0244
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0244')
-rw-r--r--data/vim/patches/8.1.0244245
1 files changed, 245 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0244 b/data/vim/patches/8.1.0244
new file mode 100644
index 000000000..bf3231465
--- /dev/null
+++ b/data/vim/patches/8.1.0244
@@ -0,0 +1,245 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0244
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 8.1.0244
+Problem: No redraw when using a STOP signal on Vim and then a CONT signal.
+Solution: Catch the CONT signal and force a redraw. (closes #3285)
+Files: src/os_unix.c, src/term.c, src/proto/term.pro
+
+
+*** ../vim-8.1.0243/src/os_unix.c 2018-06-19 19:59:15.244704285 +0200
+--- src/os_unix.c 2018-08-07 17:38:27.387722889 +0200
+***************
+*** 1227,1233 ****
+ SIGRETURN;
+ }
+
+! #if defined(_REENTRANT) && defined(SIGCONT)
+ /*
+ * On Solaris with multi-threading, suspending might not work immediately.
+ * Catch the SIGCONT signal, which will be used as an indication whether the
+--- 1227,1249 ----
+ SIGRETURN;
+ }
+
+! static void
+! after_sigcont(void)
+! {
+! # ifdef FEAT_TITLE
+! // Set oldtitle to NULL, so the current title is obtained again.
+! VIM_CLEAR(oldtitle);
+! # endif
+! settmode(TMODE_RAW);
+! need_check_timestamps = TRUE;
+! did_check_timestamps = FALSE;
+! }
+!
+! #if defined(SIGCONT)
+! static RETSIGTYPE sigcont_handler SIGPROTOARG;
+! static int in_mch_suspend = FALSE;
+!
+! # if defined(_REENTRANT) && defined(SIGCONT)
+ /*
+ * On Solaris with multi-threading, suspending might not work immediately.
+ * Catch the SIGCONT signal, which will be used as an indication whether the
+***************
+*** 1239,1245 ****
+ * volatile because it is used in signal handler sigcont_handler().
+ */
+ static volatile int sigcont_received;
+! static RETSIGTYPE sigcont_handler SIGPROTOARG;
+
+ /*
+ * signal handler for SIGCONT
+--- 1255,1261 ----
+ * volatile because it is used in signal handler sigcont_handler().
+ */
+ static volatile int sigcont_received;
+! # endif
+
+ /*
+ * signal handler for SIGCONT
+***************
+*** 1247,1253 ****
+ static RETSIGTYPE
+ sigcont_handler SIGDEFARG(sigarg)
+ {
+! sigcont_received = TRUE;
+ SIGRETURN;
+ }
+ #endif
+--- 1263,1300 ----
+ static RETSIGTYPE
+ sigcont_handler SIGDEFARG(sigarg)
+ {
+! if (in_mch_suspend)
+! {
+! # if defined(_REENTRANT) && defined(SIGCONT)
+! sigcont_received = TRUE;
+! # endif
+! }
+! else
+! {
+! // We didn't suspend ourselves, assume we were stopped by a SIGSTOP
+! // signal (which can't be intercepted) and get a SIGCONT. Need to get
+! // back to a sane mode and redraw.
+! after_sigcont();
+!
+! update_screen(CLEAR);
+! if (State & CMDLINE)
+! redrawcmdline();
+! else if (State == HITRETURN || State == SETWSIZE || State == ASKMORE
+! || State == EXTERNCMD || State == CONFIRM || exmode_active)
+! repeat_message();
+! else if (redrawing())
+! setcursor();
+! #if defined(FEAT_INS_EXPAND)
+! if (pum_visible())
+! {
+! redraw_later(NOT_VALID);
+! ins_compl_show_pum();
+! }
+! #endif
+! cursor_on_force();
+! out_flush();
+! }
+!
+ SIGRETURN;
+ }
+ #endif
+***************
+*** 1330,1335 ****
+--- 1377,1384 ----
+ {
+ /* BeOS does have SIGTSTP, but it doesn't work. */
+ #if defined(SIGTSTP) && !defined(__BEOS__)
++ in_mch_suspend = TRUE;
++
+ out_flush(); /* needed to make cursor visible on some systems */
+ settmode(TMODE_COOK);
+ out_flush(); /* needed to disable mouse on some systems */
+***************
+*** 1361,1376 ****
+ mch_delay(wait_time, FALSE);
+ }
+ # endif
+
+! # ifdef FEAT_TITLE
+! /*
+! * Set oldtitle to NULL, so the current title is obtained again.
+! */
+! VIM_CLEAR(oldtitle);
+! # endif
+! settmode(TMODE_RAW);
+! need_check_timestamps = TRUE;
+! did_check_timestamps = FALSE;
+ #else
+ suspend_shell();
+ #endif
+--- 1410,1418 ----
+ mch_delay(wait_time, FALSE);
+ }
+ # endif
++ in_mch_suspend = FALSE;
+
+! after_sigcont();
+ #else
+ suspend_shell();
+ #endif
+***************
+*** 1410,1416 ****
+ #ifdef SIGTSTP
+ signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
+ #endif
+! #if defined(_REENTRANT) && defined(SIGCONT)
+ signal(SIGCONT, sigcont_handler);
+ #endif
+
+--- 1452,1458 ----
+ #ifdef SIGTSTP
+ signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
+ #endif
+! #if defined(SIGCONT)
+ signal(SIGCONT, sigcont_handler);
+ #endif
+
+*** ../vim-8.1.0243/src/term.c 2018-07-10 17:33:41.825155261 +0200
+--- src/term.c 2018-08-07 17:22:23.328496700 +0200
+***************
+*** 3789,3804 ****
+ static int cursor_is_off = FALSE;
+
+ /*
+ * Enable the cursor.
+ */
+ void
+ cursor_on(void)
+ {
+ if (cursor_is_off)
+! {
+! out_str(T_VE);
+! cursor_is_off = FALSE;
+! }
+ }
+
+ /*
+--- 3789,3811 ----
+ static int cursor_is_off = FALSE;
+
+ /*
++ * Enable the cursor without checking if it's already enabled.
++ */
++ void
++ cursor_on_force(void)
++ {
++ out_str(T_VE);
++ cursor_is_off = FALSE;
++ }
++
++ /*
+ * Enable the cursor.
+ */
+ void
+ cursor_on(void)
+ {
+ if (cursor_is_off)
+! cursor_on_force();
+ }
+
+ /*
+*** ../vim-8.1.0243/src/proto/term.pro 2018-05-17 13:52:53.000000000 +0200
+--- src/proto/term.pro 2018-08-07 17:28:27.358277122 +0200
+***************
+*** 50,55 ****
+--- 50,56 ----
+ int mouse_has(int c);
+ int mouse_model_popup(void);
+ void scroll_start(void);
++ void cursor_on_force(void);
+ void cursor_on(void);
+ void cursor_off(void);
+ void term_cursor_mode(int forced);
+*** ../vim-8.1.0243/src/version.c 2018-08-07 16:33:15.255728441 +0200
+--- src/version.c 2018-08-07 17:35:43.784518901 +0200
+***************
+*** 796,797 ****
+--- 796,799 ----
+ { /* Add new patch number below this line */
++ /**/
++ 244,
+ /**/
+
+--
+When I look deep into your eyes, I see JPEG artifacts.
+I can tell by the pixels that we're wrong for each other. (xkcd)
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///