ret = tui_set_disassem_content (win_info, gdbarch, line_or_addr.u.addr);
if (ret == TUI_FAILURE)
- {
- tui_clear_source_content (win_info);
- tui_clear_exec_info_content (win_info);
- }
+ tui_clear_source_content (win_info);
else
{
tui_update_breakpoint_info (win_info, nullptr, false);
else
{
for (struct tui_source_window_base *win_info : tui_source_windows ())
- {
- tui_clear_source_content (win_info);
- tui_clear_exec_info_content (win_info);
- }
+ tui_clear_source_content (win_info);
}
}
win_info->content.clear ();
win_info->refresh_window ();
+
+ struct tui_gen_win_info *exec_info = win_info->execution_info;
+
+ werase (exec_info->handle);
+ exec_info->refresh_window ();
}
}
{
show_source_content ();
check_and_display_highlight_if_needed ();
- tui_erase_exec_info_content (this);
update_exec_info ();
}
return need_refresh;
}
-/* See tui-data.h. */
-
-tui_exec_info_content *
-tui_exec_info_window::maybe_allocate_content (int n_elements)
-{
- if (m_content == nullptr)
- m_content = XNEWVEC (tui_exec_info_content, n_elements);
- return m_content;
-}
-
-
/* Function to initialize the content of the execution info window,
based upon the input window which is either the source or
disassembly window. */
void
-tui_source_window_base::set_exec_info_content ()
+tui_source_window_base::update_exec_info ()
{
- tui_exec_info_content *exec_content
- = execution_info->maybe_allocate_content (height);
-
+ werase (execution_info->handle);
tui_update_breakpoint_info (this, nullptr, true);
for (int i = 0; i < content.size (); i++)
{
- tui_exec_info_content &element = exec_content[i];
- struct tui_source_element *src_element;
- tui_bp_flags mode;
-
- src_element = &content[i];
-
- memset (element, ' ', sizeof (tui_exec_info_content));
- element[TUI_EXECINFO_SIZE - 1] = 0;
+ struct tui_source_element *src_element = &content[i];
+ char element[TUI_EXECINFO_SIZE] = " ";
/* Now update the exec info content based upon the state
of each line as indicated by the source content. */
- mode = src_element->break_mode;
+ tui_bp_flags mode = src_element->break_mode;
if (mode & TUI_BP_HIT)
element[TUI_BP_HIT_POS] = (mode & TUI_BP_HARDWARE) ? 'H' : 'B';
else if (mode & (TUI_BP_ENABLED | TUI_BP_DISABLED))
if (src_element->is_exec_point)
element[TUI_EXEC_POS] = '>';
- }
-}
-
-
-void
-tui_show_exec_info_content (struct tui_source_window_base *win_info)
-{
- struct tui_exec_info_window *exec_info = win_info->execution_info;
- const tui_exec_info_content *content = exec_info->get_content ();
-
- werase (exec_info->handle);
- for (int cur_line = 1; cur_line <= win_info->content.size (); cur_line++)
- mvwaddstr (exec_info->handle,
- cur_line,
- 0,
- content[cur_line - 1]);
- exec_info->refresh_window ();
-}
-
-void
-tui_erase_exec_info_content (struct tui_source_window_base *win_info)
-{
- struct tui_gen_win_info *exec_info = win_info->execution_info;
-
- werase (exec_info->handle);
- exec_info->refresh_window ();
-}
-
-void
-tui_clear_exec_info_content (struct tui_source_window_base *win_info)
-{
- tui_erase_exec_info_content (win_info);
+ mvwaddstr (execution_info->handle, i + 1, 0, element);
+ }
+ execution_info->refresh_window ();
}
-/* Function to update the execution info window. */
-void
-tui_source_window_base::update_exec_info ()
-{
- set_exec_info_content ();
- tui_show_exec_info_content (this);
-}
void
tui_alloc_source_buffer (struct tui_source_window_base *win_info)
win_info->content[i].line = (char *) xmalloc (line_width);
}
}
-
-
-/* Answer whether a particular line number or address is displayed
- in the current source window. */
-int
-tui_line_is_displayed (int line,
- struct tui_source_window_base *win_info,
- int check_threshold)
-{
- int is_displayed = FALSE;
- int i, threshold;
-
- if (check_threshold)
- threshold = SCROLL_THRESHOLD;
- else
- threshold = 0;
- i = 0;
- while (i < win_info->content.size () - threshold
- && !is_displayed)
- {
- is_displayed
- = win_info->content[i].line_or_addr.loa == LOA_LINE
- && win_info->content[i].line_or_addr.u.line_no == line;
- i++;
- }
-
- return is_displayed;
-}
-
-
-/* Answer whether a particular line number or address is displayed
- in the current source window. */
-int
-tui_addr_is_displayed (CORE_ADDR addr,
- struct tui_source_window_base *win_info,
- int check_threshold)
-{
- int is_displayed = FALSE;
- int i, threshold;
-
- if (check_threshold)
- threshold = SCROLL_THRESHOLD;
- else
- threshold = 0;
- i = 0;
- while (i < win_info->content.size () - threshold
- && !is_displayed)
- {
- is_displayed
- = win_info->content[i].line_or_addr.loa == LOA_ADDRESS
- && win_info->content[i].line_or_addr.u.addr == addr;
- i++;
- }
-
- return is_displayed;
-}