[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;