emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 613aa18945: Simplify buffer flipping code on Haiku


From: Po Lu
Subject: master 613aa18945: Simplify buffer flipping code on Haiku
Date: Thu, 28 Apr 2022 08:51:24 -0400 (EDT)

branch: master
commit 613aa1894500f4c707078e71b497662e91f3f6f3
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Simplify buffer flipping code on Haiku
    
    * src/haikuterm.c (flush_dirty_back_buffers): Delete function.
    (haiku_flush_dirty_back_buffer_on): New function.
    (haiku_read_socket): Use that instead of looping over each frame
    at the end.
---
 src/haikuterm.c | 38 ++++++++++++--------------------------
 1 file changed, 12 insertions(+), 26 deletions(-)

diff --git a/src/haikuterm.c b/src/haikuterm.c
index 5d5e48c391..393d359b66 100644
--- a/src/haikuterm.c
+++ b/src/haikuterm.c
@@ -2781,22 +2781,12 @@ haiku_make_fullscreen_consistent (struct frame *f)
 }
 
 static void
-flush_dirty_back_buffers (void)
+haiku_flush_dirty_back_buffer_on (struct frame *f)
 {
-  block_input ();
-  Lisp_Object tail, frame;
-  FOR_EACH_FRAME (tail, frame)
-    {
-      struct frame *f = XFRAME (frame);
-      if (FRAME_LIVE_P (f) &&
-          FRAME_HAIKU_P (f) &&
-          FRAME_HAIKU_WINDOW (f) &&
-          !FRAME_GARBAGED_P (f) &&
-          !buffer_flipping_blocked_p () &&
-          FRAME_DIRTY_P (f))
-        haiku_flip_buffers (f);
-    }
-  unblock_input ();
+  if (!FRAME_GARBAGED_P (f)
+      && !buffer_flipping_blocked_p ()
+      && FRAME_DIRTY_P (f))
+    haiku_flip_buffers (f);
 }
 
 /* N.B. that support for TYPE must be explictly added to
@@ -2840,12 +2830,11 @@ haiku_read_socket (struct terminal *terminal, struct 
input_event *hold_quit)
   static void *buf;
   ssize_t b_size;
   struct unhandled_event *unhandled_events = NULL;
-  int button_or_motion_p, need_flush, do_help;
+  int button_or_motion_p, do_help;
   enum haiku_event_type type;
   struct input_event inev, inev2;
 
   message_count = 0;
-  need_flush = 0;
   button_or_motion_p = 0;
   do_help = 0;
   buf = NULL;
@@ -2954,7 +2943,7 @@ haiku_read_socket (struct terminal *terminal, struct 
input_event *hold_quit)
              {
                clear_mouse_face (hlinfo);
                hlinfo->mouse_face_hidden = true;
-               need_flush = 1;
+               haiku_flush_dirty_back_buffer_on (f);
              }
 
            inev.code = b->keysym ? b->keysym : b->multibyte_char;
@@ -3046,7 +3035,7 @@ haiku_read_socket (struct terminal *terminal, struct 
input_event *hold_quit)
              {
                hlinfo->mouse_face_hidden = false;
                clear_mouse_face (hlinfo);
-               need_flush = 1;
+               haiku_flush_dirty_back_buffer_on (f);
              }
 
            if (b->just_exited_p)
@@ -3059,7 +3048,7 @@ haiku_read_socket (struct terminal *terminal, struct 
input_event *hold_quit)
                    clear_mouse_face (hlinfo);
                    hlinfo->mouse_face_mouse_frame = 0;
 
-                   need_flush = 1;
+                   haiku_flush_dirty_back_buffer_on (f);
                  }
 
                if (f->auto_lower && !popup_activated_p
@@ -3193,7 +3182,7 @@ haiku_read_socket (struct terminal *terminal, struct 
input_event *hold_quit)
              }
 
            if (FRAME_DIRTY_P (f))
-             need_flush = 1;
+             haiku_flush_dirty_back_buffer_on (f);
            break;
          }
        case BUTTON_UP:
@@ -3231,7 +3220,7 @@ haiku_read_socket (struct terminal *terminal, struct 
input_event *hold_quit)
                  {
                    tab_bar_arg = handle_tab_bar_click
                      (f, x, y, type == BUTTON_DOWN, inev.modifiers);
-                   need_flush = 1;
+                   haiku_flush_dirty_back_buffer_on (f);
                  }
              }
 
@@ -3251,7 +3240,7 @@ haiku_read_socket (struct terminal *terminal, struct 
input_event *hold_quit)
                  {
                    handle_tool_bar_click
                      (f, x, y, type == BUTTON_DOWN, inev.modifiers);
-                   need_flush = 1;
+                   haiku_flush_dirty_back_buffer_on (f);
                  }
              }
 
@@ -3724,9 +3713,6 @@ haiku_read_socket (struct terminal *terminal, struct 
input_event *hold_quit)
        }
     }
 
-  if (need_flush)
-    flush_dirty_back_buffers ();
-
   unblock_input ();
 
   return message_count;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]