Browse Source

Prevent flickering when redrawing the TUI source window

tui_win_info::refresh_window simply calls wrefresh, which internally
does a doupdate.
This redraws the source background window without the source pad.
Then prefresh of the source pad draws the actual source code on top,
which flickers.

By changing this to wnoutrefresh, the actual drawing on the screen is
only done once in the following prefresh, without flickering.

gdb/ChangeLog:

2021-01-05  Hannes Domani  <ssbssa@yahoo.de>

	* tui/tui-winsource.c (tui_source_window_base::refresh_window):
	Call wnoutrefresh instead of tui_win_info::refresh_window.
binutils-2_36-branch
Hannes Domani 6 years ago
parent
commit
5519536196
  1. 5
      gdb/ChangeLog
  2. 4
      gdb/tui/tui-winsource.c

5
gdb/ChangeLog

@ -1,3 +1,8 @@
2021-01-05 Hannes Domani <ssbssa@yahoo.de>
* tui/tui-winsource.c (tui_source_window_base::refresh_window):
Call wnoutrefresh instead of tui_win_info::refresh_window.
2021-01-05 Hannes Domani <ssbssa@yahoo.de>
* tui/tui-source.c (tui_source_window::show_line_number):

4
gdb/tui/tui-winsource.c

@ -252,7 +252,9 @@ tui_source_window_base::show_source_line (int lineno)
void
tui_source_window_base::refresh_window ()
{
tui_win_info::refresh_window ();
/* tui_win_info::refresh_window would draw the empty background window to
the screen, potentially creating a flicker. */
wnoutrefresh (handle.get ());
int pad_width = std::max (m_max_length, width);
int left_margin = 1 + TUI_EXECINFO_SIZE + extra_margin ();

Loading…
Cancel
Save