emacs-diffs
[Top][All Lists]
Advanced

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

master 7dd4dc6ace: On Haiku, sync a frames's connection to the app sever


From: Po Lu
Subject: master 7dd4dc6ace: On Haiku, sync a frames's connection to the app sever after raising
Date: Fri, 31 Dec 2021 08:06:33 -0500 (EST)

branch: master
commit 7dd4dc6ace22aab91939176cb623d54cdb1788e4
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    On Haiku, sync a frames's connection to the app sever after raising
    
    * src/haiku_support.h: (BWindow_sync)
    * src/haiku_support.cc (BWindow_sync): New function.
    * src/haikuterm.c (haiku_frame_raise_lower): Synchronize window
    after raising it to avoid situations where raising windows is
    done out-of-order, such as when ediff raises a frame.
---
 src/haiku_support.cc | 12 ++++++++++++
 src/haiku_support.h  |  3 +++
 src/haikuterm.c      |  2 +-
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/haiku_support.cc b/src/haiku_support.cc
index fea0684b1b..dae0825bd2 100644
--- a/src/haiku_support.cc
+++ b/src/haiku_support.cc
@@ -2901,6 +2901,18 @@ BWindow_set_min_size (void *window, int width, int 
height)
   w->UnlockLooper ();
 }
 
+/* Synchronize WINDOW's connection to the App Server.  */
+void
+BWindow_sync (void *window)
+{
+  BWindow *w = (BWindow *) window;
+
+  if (!w->LockLooper ())
+    gui_abort ("Failed to lock window looper for sync");
+  w->Sync ();
+  w->UnlockLooper ();
+}
+
 /* Set the alignment of WINDOW's dimensions.  */
 void
 BWindow_set_size_alignment (void *window, int align_width, int align_height)
diff --git a/src/haiku_support.h b/src/haiku_support.h
index 9f5f3c77e3..b08a561def 100644
--- a/src/haiku_support.h
+++ b/src/haiku_support.h
@@ -819,6 +819,9 @@ extern "C"
   extern void
   BWindow_set_size_alignment (void *window, int align_width, int align_height);
 
+  extern void
+  BWindow_sync (void *window);
+
 #ifdef __cplusplus
   extern void *
   find_appropriate_view_for_draw (void *vw);
diff --git a/src/haikuterm.c b/src/haikuterm.c
index 24fa44b01d..9b54e50b61 100644
--- a/src/haikuterm.c
+++ b/src/haikuterm.c
@@ -346,7 +346,7 @@ haiku_frame_raise_lower (struct frame *f, bool raise_p)
     {
       block_input ();
       BWindow_activate (FRAME_HAIKU_WINDOW (f));
-      flush_frame (f);
+      BWindow_sync (FRAME_HAIKU_WINDOW (f));
       unblock_input ();
     }
 }



reply via email to

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