summaryrefslogtreecommitdiff
path: root/src/haikumenu.c
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2022-01-26 01:20:48 +0000
committerPo Lu <luangruo@yahoo.com>2022-01-26 01:20:48 +0000
commitbca68550844da7849ab33616345525918e82f3c8 (patch)
tree36f25c960aa972e68053a38914f781b530f83c28 /src/haikumenu.c
parent19c6fb16746718d94b9e316503c5779de88e2e2d (diff)
downloademacs-bca68550844da7849ab33616345525918e82f3c8.tar.gz
emacs-bca68550844da7849ab33616345525918e82f3c8.tar.bz2
emacs-bca68550844da7849ab33616345525918e82f3c8.zip
Make `haiku-menu-bar-open' faster
* src/haikumenu.c (Fhaiku_menu_bar_open): Get draw lock before updating the menu bar. * src/haikuterm.c (haiku_read_socket): Don't update menu bar if b->no_lock.
Diffstat (limited to 'src/haikumenu.c')
-rw-r--r--src/haikumenu.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/haikumenu.c b/src/haikumenu.c
index 3fee5831608..b73baf72e05 100644
--- a/src/haikumenu.c
+++ b/src/haikumenu.c
@@ -644,17 +644,20 @@ the position of the last non-menu event instead. */)
struct frame *f = decode_window_system_frame (frame);
if (FRAME_EXTERNAL_MENU_BAR (f))
- set_frame_menubar (f, 1);
+ {
+ block_input ();
+ BView_draw_lock (FRAME_HAIKU_VIEW (f));
+ set_frame_menubar (f, 1);
+ BMenuBar_start_tracking (FRAME_HAIKU_MENU_BAR (f));
+ BView_draw_unlock (FRAME_HAIKU_VIEW (f));
+ unblock_input ();
+ }
else
{
return call2 (Qpopup_menu, call0 (Qmouse_menu_bar_map),
last_nonmenu_event);
}
- block_input ();
- BMenuBar_start_tracking (FRAME_HAIKU_MENU_BAR (f));
- unblock_input ();
-
return Qnil;
}