+2015-07-01 Patrick Palka <patrick@parcs.ath.cx>
+
+ * tui/tui-hooks.c (tui_refresh_frame_and_register_information):
+ Update commentary. Always refresh the registers when frame
+ information has changed.
+ * tui/tui-stack.c (tui_show_frame_info): Update commentary.
+ Change return type to int. Return 1 if frame information has
+ changed, 0 otherwise.
+ (tui_before_prompt): Update commentary.
+ * tui/tui-stack.h (tui_show_frame_info): Change return type to
+ int.
+
2015-06-30 Patrick Palka <patrick@parcs.ath.cx>
PR tui/13378
/* Refresh TUI's frame and register information. This is a hook intended to be
used to update the screen after potential frame and register changes.
- REGISTERS_TOO_P controls whether to refresh our register information. */
+ REGISTERS_TOO_P controls whether to refresh our register information even
+ if frame information hasn't changed. */
static void
tui_refresh_frame_and_register_information (int registers_too_p)
struct frame_info *fi;
CORE_ADDR pc;
struct cleanup *old_chain;
+ int frame_info_changed_p;
if (!has_stack_frames ())
return;
/* Display the frame position (even if there is no symbols or the PC
is not known). */
- tui_show_frame_info (fi);
+ frame_info_changed_p = tui_show_frame_info (fi);
/* Refresh the register window if it's visible. */
- if (tui_is_window_visible (DATA_WIN) && registers_too_p)
+ if (tui_is_window_visible (DATA_WIN)
+ && (frame_info_changed_p || registers_too_p))
{
tui_refreshing_registers = 1;
tui_check_data_values (fi);
{
/* This refresh is intended to catch changes to the selected frame following
a call to "up", "down" or "frame". As such we don't necessarily want to
- refresh registers here as they could not have changed. Registers will be
- refreshed after a normal stop or by our tui_register_changed_hook. */
+ refresh registers here unless the frame actually changed by one of these
+ commands. Registers will otherwise be refreshed after a normal stop or by
+ our tui_register_changed_hook. */
tui_refresh_frame_and_register_information (/*registers_too_p=*/0);
}
}
/* Function to print the frame information for the TUI. The windows are
- refreshed only if frame information has changed since the last refresh. */
+ refreshed only if frame information has changed since the last refresh.
-void
+ Return 1 if frame information has changed (and windows subsequently
+ refreshed), 0 otherwise. */
+
+int
tui_show_frame_info (struct frame_info *fi)
{
struct tui_win_info *win_info;
not changed. If frame information has not changed, then the windows'
contents will not change. So don't bother refreshing the windows. */
if (!locator_changed_p)
- return;
+ return 0;
tui_show_locator_content ();
start_line = 0;
}
tui_update_exec_info (win_info);
}
+
+ return 1;
}
else
{
= tui_set_locator_info (NULL, NULL, NULL, 0, (CORE_ADDR) 0);
if (!locator_changed_p)
- return;
+ return 0;
tui_show_locator_content ();
for (i = 0; i < (tui_source_windows ())->count; i++)
tui_clear_source_content (win_info, EMPTY_SOURCE_PROMPT);
tui_update_exec_info (win_info);
}
+
+ return 1;
}
}
extern void tui_update_locator_fullname (const char *);
extern void tui_show_locator_content (void);
-extern void tui_show_frame_info (struct frame_info *);
+extern int tui_show_frame_info (struct frame_info *);
#endif