From: Tom Tromey Date: Tue, 2 Jul 2019 21:18:27 +0000 (-0600) Subject: Fix flushing bug in tui_puts_internal X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=88b7e7ccb958220adabc307e6d38fc66877820fb;p=binutils-gdb.git Fix flushing bug in tui_puts_internal A while back I changed gdb not to flush in some places. It turned out that this broke the TUI a little. An easy way to see it is to run "gdb -tui -nx", then "file gdb" at the gdb prompt. gdb will print the usual "Reading symbols..." message -- but it won't appear on-screen until the reading is complete. This patch changes the TUI to do the equivalent of line buffering in tui_puts_internal. gdb/ChangeLog 2019-07-17 Tom Tromey * tui/tui-io.c (tui_puts_internal): Call wrefresh if newline is seen. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5a3d6c584c7..4890f6f3510 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2019-07-17 Tom Tromey + + * tui/tui-io.c (tui_puts_internal): Call wrefresh if newline is + seen. + 2019-07-17 Tom Tromey * tui/tui-win.c (tui_source_window_base::set_new_height) diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c index c9607d8f3c8..cb273065487 100644 --- a/gdb/tui/tui-io.c +++ b/gdb/tui/tui-io.c @@ -461,9 +461,13 @@ tui_puts_internal (WINDOW *w, const char *string, int *height) { char c; int prev_col = 0; + bool saw_nl = false; while ((c = *string++) != 0) { + if (c == '\n') + saw_nl = true; + if (c == '\1' || c == '\2') { /* Ignore these, they are readline escape-marking @@ -492,6 +496,8 @@ tui_puts_internal (WINDOW *w, const char *string, int *height) } } update_cmdwin_start_line (); + if (saw_nl) + wrefresh (w); } /* Print a string in the curses command window. The output is