From: Po Lu Date: Sun, 29 May 2022 01:05:54 +0000 (+0000) Subject: Fix pending window changes in haiku_set_window_size X-Git-Tag: emacs-29.0.90~1910^2~362 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c92d73d271038c93a72c059ed0190bc09b95026d;p=emacs.git Fix pending window changes in haiku_set_window_size * src/haikuterm.c (haiku_set_window_size): Wait for FRAME_RESIZED events, then call `do_pending_window_change'. (haiku_read_socket): Allow waiting for FRAME_RESIZED events. --- diff --git a/src/haikuterm.c b/src/haikuterm.c index a4875562185..7f0bc1a8cf1 100644 --- a/src/haikuterm.c +++ b/src/haikuterm.c @@ -2009,9 +2009,17 @@ haiku_set_window_size (struct frame *f, bool change_gravity, if (FRAME_HAIKU_WINDOW (f)) { block_input (); - BWindow_resize (FRAME_HAIKU_WINDOW (f), width, height); + BWindow_resize (FRAME_HAIKU_WINDOW (f), + width, height); + + if (FRAME_VISIBLE_P (f) + && (width != FRAME_PIXEL_WIDTH (f) + || height != FRAME_PIXEL_HEIGHT (f))) + haiku_wait_for_event (f, FRAME_RESIZED); unblock_input (); } + + do_pending_window_change (false); } static void @@ -3138,6 +3146,10 @@ haiku_read_socket (struct terminal *terminal, struct input_event *hold_quit) int width = lrint (b->px_widthf); int height = lrint (b->px_heightf); + if (FRAME_OUTPUT_DATA (f)->wait_for_event_type + == FRAME_RESIZED) + FRAME_OUTPUT_DATA (f)->wait_for_event_type = -1; + if (FRAME_TOOLTIP_P (f)) { if (FRAME_PIXEL_WIDTH (f) != width @@ -3166,6 +3178,7 @@ haiku_read_socket (struct terminal *terminal, struct input_event *hold_quit) cancel_mouse_face (f); haiku_clear_under_internal_border (f); } + break; } case FRAME_EXPOSED: