emacs-diffs
[Top][All Lists]
Advanced

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

master 9a7430ce84 4/5: Fix race conditions waiting for menu bar resize e


From: Po Lu
Subject: master 9a7430ce84 4/5: Fix race conditions waiting for menu bar resize events on Haiku
Date: Sun, 17 Apr 2022 04:14:30 -0400 (EDT)

branch: master
commit 9a7430ce8414f68de1022b3b6068ba60e8cd87cf
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Fix race conditions waiting for menu bar resize events on Haiku
    
    * src/haikufns.c (haiku_create_frame, haiku_create_tip_frame)
    (haiku_set_menu_bar_lines): Clear `wait_for_event_type'.
    * src/haikumenu.c (set_frame_menubar): Wait for menu bar resize
    event.
    * src/haikuterm.c (haiku_wait_for_event): New function.
    (haiku_read_socket): Handle waiting for MENU_BAR_RESIZE.
    * src/haikuterm.h (struct haiku_output): New field
    `wait_for_event_type'.
---
 src/haikumenu.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/haikumenu.c b/src/haikumenu.c
index 5b370f8f99..46dde6496b 100644
--- a/src/haikumenu.c
+++ b/src/haikumenu.c
@@ -521,8 +521,15 @@ set_frame_menubar (struct frame *f, bool deep_p)
 
   if (!mbar)
     {
+      block_input ();
       mbar = FRAME_HAIKU_MENU_BAR (f) = BMenuBar_new (view);
       first_time_p = 1;
+
+      /* Now wait for the MENU_BAR_RESIZE event informing us of the
+        initial dimensions of that menu bar.  */
+      if (FRAME_VISIBLE_P (f))
+       haiku_wait_for_event (f, MENU_BAR_RESIZE);
+      unblock_input ();
     }
 
   Lisp_Object items;



reply via email to

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