[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master b5cd9343ae: Fix infinite looping around Haiku menus
From: |
Po Lu |
Subject: |
master b5cd9343ae: Fix infinite looping around Haiku menus |
Date: |
Wed, 6 Jul 2022 08:24:35 -0400 (EDT) |
branch: master
commit b5cd9343aea2d7939209c35eef3247946df24dfa
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Fix infinite looping around Haiku menus
* src/haikumenu.c (haiku_menu_show): Block SIGIO around menu
event loop.
* src/haikuterm.c (haiku_read_socket): Flush tooltip frames
after resize.
---
src/haikumenu.c | 2 ++
src/haikuterm.c | 6 ++++++
2 files changed, 8 insertions(+)
diff --git a/src/haikumenu.c b/src/haikumenu.c
index 5729bed4a9..3f68eadfd9 100644
--- a/src/haikumenu.c
+++ b/src/haikumenu.c
@@ -422,11 +422,13 @@ haiku_menu_show (struct frame *f, int x, int y, int
menuflags,
BView_convert_to_screen (view, &x, &y);
unblock_input ();
+ unrequest_sigio ();
popup_activated_p++;
menu_item_selection = BMenu_run (menu, x, y, haiku_menu_show_help,
block_input, unblock_input,
haiku_process_pending_signals_for_menu,
NULL);
popup_activated_p--;
+ request_sigio ();
FRAME_DISPLAY_INFO (f)->grabbed = 0;
diff --git a/src/haikuterm.c b/src/haikuterm.c
index 9f8aceae64..d7247c99e0 100644
--- a/src/haikuterm.c
+++ b/src/haikuterm.c
@@ -3202,6 +3202,11 @@ haiku_read_socket (struct terminal *terminal, struct
input_event *hold_quit)
FRAME_PIXEL_HEIGHT (f) = height;
haiku_clear_under_internal_border (f);
+
+ /* Flush the frame and flip buffers here. It is
+ necessary for tooltips displayed inside menus, as
+ redisplay cannot happen. */
+ haiku_flush (f);
continue;
}
@@ -4438,6 +4443,7 @@ haiku_clear_under_internal_border (struct frame *f)
: INTERNAL_BORDER_FACE_ID));
struct face *face = FACE_FROM_ID_OR_NULL (f, face_id);
void *view = FRAME_HAIKU_VIEW (f);
+
block_input ();
BView_draw_lock (view, true, 0, 0, FRAME_PIXEL_WIDTH (f),
FRAME_PIXEL_HEIGHT (f));
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master b5cd9343ae: Fix infinite looping around Haiku menus,
Po Lu <=