]> git.eshelyaron.com Git - emacs.git/commitdiff
On Haiku, sync a frames's connection to the app sever after raising
authorPo Lu <luangruo@yahoo.com>
Fri, 31 Dec 2021 13:03:07 +0000 (13:03 +0000)
committerPo Lu <luangruo@yahoo.com>
Fri, 31 Dec 2021 13:03:07 +0000 (13:03 +0000)
* 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
src/haiku_support.h
src/haikuterm.c

index fea0684b1b4a911590053eab1e1020edfc2e9e02..dae0825bd29fef7e8187480c061007483c483875 100644 (file)
@@ -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)
index 9f5f3c77e3ddf081a92b5f866a50825042166753..b08a561def336f9410a2490df1df7d5378aa86f8 100644 (file)
@@ -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);
index 24fa44b01d058ffc7449d6b524e7a4552a85c86e..9b54e50b617f98f497b8ff55e4b8da27b65ed2ad 100644 (file)
@@ -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 ();
     }
 }