Define winch_flag as volatile sig_atomic_t.
authorAndrew Borodin <aborodin@vmail.ru>
Wed, 31 Oct 2012 06:48:56 +0000 (31 10:48 +0400)
committerAndrew Borodin <aborodin@vmail.ru>
Fri, 9 Nov 2012 06:05:13 +0000 (9 10:05 +0400)
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
lib/global.c
lib/global.h
lib/tty/key.c
lib/tty/tty-ncurses.c
lib/tty/tty-slang.c
lib/widget/dialog-switch.c
lib/widget/dialog.c
src/execute.c
src/subshell.c

index e47e38e..8b18c7c 100644 (file)
@@ -101,7 +101,7 @@ mc_global_t mc_global = {
         .ugly_line_drawing = FALSE,
         .old_mouse = FALSE,
         .alternate_plus_minus = FALSE,
-        .winch_flag = FALSE
+        .winch_flag = 0
     },
 
     .vfs =
index 92a3c1d..a4767b2 100644 (file)
@@ -21,6 +21,9 @@
 #include <sys/param.h>
 #endif
 
+/* for sig_atomic_t */
+#include <signal.h>
+
 /*** typedefs(not structures) and defined constants **********************************************/
 
 /* The O_BINARY definition was taken from gettext */
@@ -262,7 +265,7 @@ typedef struct
         gboolean alternate_plus_minus;
 
         /* Set if the window has changed it's size */
-        gboolean winch_flag;
+        volatile sig_atomic_t winch_flag;
     } tty;
 
     struct
index 40a7617..63d1810 100644 (file)
@@ -2108,7 +2108,7 @@ tty_get_event (struct Gpm_Event *event, gboolean redo_event, gboolean block)
             }
         }
 
-        if (!block || mc_global.tty.winch_flag)
+        if (!block || mc_global.tty.winch_flag != 0)
         {
             time_addr = &time_out;
             time_out.tv_sec = 0;
@@ -2128,7 +2128,7 @@ tty_get_event (struct Gpm_Event *event, gboolean redo_event, gboolean block)
         {
             if (redo_event)
                 return EV_MOUSE;
-            if (!block || mc_global.tty.winch_flag)
+            if (!block || mc_global.tty.winch_flag != 0)
                 return EV_NONE;
             vfs_timeout_handler ();
         }
index 0c38872..737e68e 100644 (file)
@@ -109,7 +109,7 @@ sigwinch_handler (int dummy)
 {
     (void) dummy;
 
-    mc_global.tty.winch_flag = TRUE;
+    mc_global.tty.winch_flag = 1;
 }
 
 /* --------------------------------------------------------------------------------------------- */
index 1fc8664..c4026f9 100644 (file)
@@ -147,7 +147,7 @@ sigwinch_handler (int dummy)
 {
     (void) dummy;
 
-    mc_global.tty.winch_flag = TRUE;
+    mc_global.tty.winch_flag = 1;
     (void) SLsignal (SIGWINCH, sigwinch_handler);
 }
 
index 9455480..becc9eb 100644 (file)
@@ -351,7 +351,7 @@ mc_refresh (void)
     if (mc_global.we_are_background)
         return;
 #endif /* ENABLE_BACKGROUND */
-    if (!mc_global.tty.winch_flag)
+    if (mc_global.tty.winch_flag == 0)
         tty_refresh ();
     else
     {
@@ -366,7 +366,7 @@ mc_refresh (void)
 void
 dialog_change_screen_size (void)
 {
-    mc_global.tty.winch_flag = FALSE;
+    mc_global.tty.winch_flag = 0;
 
     tty_change_screen_size ();
 
index 6d51fef..1b4d8e0 100644 (file)
@@ -544,7 +544,7 @@ frontend_run_dlg (Dlg_head * h)
 
     while (h->state == DLG_ACTIVE)
     {
-        if (mc_global.tty.winch_flag)
+        if (mc_global.tty.winch_flag != 0)
             dialog_change_screen_size ();
 
         if (is_idle ())
index e41d76c..ba1b0c6 100644 (file)
@@ -319,7 +319,7 @@ toggle_panels (void)
     vfs_path_t **new_dir_p;
 #endif /* ENABLE_SUBSHELL */
 
-    gboolean was_sigwinch = FALSE;
+    volatile sig_atomic_t was_sigwinch = 0;
 
     channels_down ();
     disable_mouse ();
@@ -395,7 +395,7 @@ toggle_panels (void)
      * There is some problem with screen redraw in ncurses-based mc in this situation.
      */
     was_sigwinch = mc_global.tty.winch_flag;
-    mc_global.tty.winch_flag = FALSE;
+    mc_global.tty.winch_flag = 0;
 
 #ifdef ENABLE_SUBSHELL
     if (mc_global.tty.use_subshell)
@@ -418,7 +418,7 @@ toggle_panels (void)
         update_xterm_title_path ();
     }
 
-    if (was_sigwinch || mc_global.tty.winch_flag)
+    if (was_sigwinch != 0 || mc_global.tty.winch_flag != 0)
         dialog_change_screen_size ();
     else
         repaint_screen ();
index ebab09f..510cf4d 100644 (file)
@@ -194,7 +194,7 @@ write_all (int fd, const void *buf, size_t count)
         {
             if (errno == EINTR)
             {
-                if (mc_global.tty.winch_flag)
+                if (mc_global.tty.winch_flag != 0)
                     tty_change_screen_size ();
 
                 continue;
@@ -505,7 +505,7 @@ feed_subshell (int how, int fail_on_error)
             /* Despite using SA_RESTART, we still have to check for this */
             if (errno == EINTR)
             {
-                if (mc_global.tty.winch_flag)
+                if (mc_global.tty.winch_flag != 0)
                     tty_change_screen_size ();
 
                 continue;       /* try all over again */
@@ -1007,7 +1007,7 @@ read_subshell_prompt (void)
         {
             if (errno == EINTR)
             {
-                if (mc_global.tty.winch_flag)
+                if (mc_global.tty.winch_flag != 0)
                     tty_change_screen_size ();
 
                 continue;