+2015-07-08 Patrick Palka <patrick@parcs.ath.cx>
+
+ * defs.h (deprecated_register_changed_hook): Remove prototype.
+ * interps.c (clear_iterpreter_hooks): Remove reference to
+ deprecated_register_changed_hook.
+ * top.c (deprecated_register_changed_hook): Remove prototype.
+ * valops.c (value_assign): Remove reference to
+ deprecated_register_changed_hook.
+ * tui/tui-hooks.c (tui_register_changed): Add parameter "frame".
+ Add comment documenting the function.
+ (tui_register_changed_observer): Define.
+ (tui_install_hooks): Remove reference to
+ deprecated_register_changed_hook. Set
+ tui_register_changed_observer.
+ (tui_remove_hooks): Remove reference to
+ deprecated_register_changed_hook. Unset
+ tui_register_changed_observer.
+
2015-07-08 Jan Kratochvil <jan.kratochvil@redhat.com>
PR compile/18484
ATTRIBUTE_FPTR_PRINTF_1;
extern char *(*deprecated_readline_hook) (const char *);
extern void (*deprecated_readline_end_hook) (void);
-extern void (*deprecated_register_changed_hook) (int regno);
extern void (*deprecated_context_hook) (int);
extern ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
struct target_waitstatus *status,
deprecated_readline_begin_hook = 0;
deprecated_readline_hook = 0;
deprecated_readline_end_hook = 0;
- deprecated_register_changed_hook = 0;
deprecated_context_hook = 0;
deprecated_target_wait_hook = 0;
deprecated_call_command_hook = 0;
void (*deprecated_interactive_hook) (void);
-/* Tell the GUI someone changed the register REGNO. -1 means
- that the caller does not know which register changed or
- that several registers have changed (see value_assign). */
-void (*deprecated_register_changed_hook) (int regno);
-
/* Called when going to wait for the target. Usually allows the GUI
to run while waiting for target events. */
/* Prevent recursion of deprecated_register_changed_hook(). */
static int tui_refreshing_registers = 0;
+/* Observer for the register_changed notification. */
+
static void
-tui_register_changed_hook (int regno)
+tui_register_changed (struct frame_info *frame, int regno)
{
struct frame_info *fi;
+ /* The frame of the register that was changed may differ from the selected
+ frame, but we only want to show the register values of the selected frame.
+ And even if the frames differ a register change made in one can still show
+ up in the other. So we always use the selected frame here, and ignore
+ FRAME. */
fi = get_selected_frame (NULL);
if (tui_refreshing_registers == 0)
{
static struct observer *tui_about_to_proceed_observer;
static struct observer *tui_before_prompt_observer;
static struct observer *tui_normal_stop_observer;
+static struct observer *tui_register_changed_observer;
/* Install the TUI specific hooks. */
void
= observer_attach_before_prompt (tui_before_prompt);
tui_normal_stop_observer
= observer_attach_normal_stop (tui_normal_stop);
-
- deprecated_register_changed_hook = tui_register_changed_hook;
+ tui_register_changed_observer
+ = observer_attach_register_changed (tui_register_changed);
}
/* Remove the TUI specific hooks. */
{
deprecated_print_frame_info_listing_hook = 0;
deprecated_query_hook = 0;
- deprecated_register_changed_hook = 0;
-
/* Remove our observers. */
observer_detach_breakpoint_created (tui_bp_created_observer);
tui_bp_created_observer = NULL;
tui_before_prompt_observer = NULL;
observer_detach_normal_stop (tui_normal_stop_observer);
tui_normal_stop_observer = NULL;
+ observer_detach_register_changed (tui_register_changed_observer);
+ tui_register_changed_observer = NULL;
}
void _initialize_tui_hooks (void);
}
observer_notify_register_changed (frame, value_reg);
- if (deprecated_register_changed_hook)
- deprecated_register_changed_hook (-1);
break;
}