view src/readline-1-sigwinch.patch @ 5893:53a6c7df43f8

Mesa 3D: Update to version 21.1.8. * src/mesa.mk: Update version and checksum. * src/mesa-2-uninitialized.patch: Remove file. * dist-files.mk: Remove file from list.
author Markus Mützel <markus.muetzel@gmx.de>
date Thu, 16 Sep 2021 22:37:45 +0200
parents 41e50d658de0
children 5ef7d51c2195
line wrap: on
line source

diff -ur readline-8.1.2/readline.c readline-8.1.3/readline.c
--- readline-8.1.2/readline.c	2020-12-19 07:55:06.477760951 -0500
+++ readline-8.1.3/readline.c	2020-12-19 07:56:17.722659252 -0500
@@ -1154,8 +1154,12 @@
       RL_SETSTATE(RL_STATE_INITIALIZED);
     }
   else
-    (void)_rl_init_locale ();	/* check current locale */
-
+    {
+      (void)_rl_init_locale ();	/* check current locale */
+#if defined (__MINGW32__)
+      rl_reset_screen_size ();
+#endif      
+    }
   /* Initialize the current line information. */
   _rl_init_line_state ();
 
Only in readline-8.1.3: readline.c.orig
diff -ur readline-8.1.2/signals.c readline-8.1.3/signals.c
--- readline-8.1.2/signals.c	2020-12-19 07:55:06.471760622 -0500
+++ readline-8.1.3/signals.c	2020-12-19 08:19:50.548964783 -0500
@@ -46,6 +46,11 @@
 
 #include "rlprivate.h"
 
+#if defined (__MINGW32__)
+#  define WIN32_LEAN_AND_MEAN
+#  include <windows.h>
+#endif
+
 #if defined (HANDLE_SIGNALS)
 
 #if !defined (RETSIGTYPE)
@@ -92,7 +97,7 @@
 int rl_catch_signals = 1;
 
 /* If non-zero, readline will install a signal handler for SIGWINCH. */
-#ifdef SIGWINCH
+#if defined (SIGWINCH) || defined(__MINGW32__)
 int rl_catch_sigwinch = 1;
 #else
 int rl_catch_sigwinch = 0;	/* for the readline state struct in readline.c */
@@ -266,8 +271,10 @@
     case SIGQUIT:
 #endif
 
+#if defined (HAVE_POSIX_SIGNALS)
       if (block_sig)
 	sigprocmask (SIG_BLOCK, &set, &oset);
+#endif
 
       rl_echo_signal_char (sig);
       rl_cleanup_after_signal ();
@@ -532,6 +539,21 @@
     }
 #endif /* SIGWINCH */
 
+#if defined (__MINGW32__)
+  if (rl_catch_sigwinch && sigwinch_set_flag == 0)
+    {
+      DWORD mode;
+      HANDLE hStdIn = GetStdHandle (STD_INPUT_HANDLE);
+
+      if (GetConsoleMode (hStdIn, &mode))
+        {
+          mode |= ENABLE_WINDOW_INPUT;
+          if (SetConsoleMode (hStdIn, mode))
+            sigwinch_set_flag = 1;
+        }
+    }
+#endif
+
   return 0;
 }
 
@@ -582,6 +604,20 @@
       sigwinch_set_flag = 0;
     }
 #endif
+#if defined (__MINGW32__)
+  if (rl_catch_sigwinch && sigwinch_set_flag == 1)
+    {
+      DWORD mode;
+      HANDLE hStdIn = GetStdHandle (STD_INPUT_HANDLE);
+
+      if (GetConsoleMode (hStdIn, &mode))
+        {
+          mode &= ~ENABLE_WINDOW_INPUT;
+          if (SetConsoleMode (hStdIn, mode))
+            sigwinch_set_flag = 0;
+        }
+    }
+#endif
 
   return 0;
 }