]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Clean up refreshing in TUI register window
authorTom Tromey <tom@tromey.com>
Fri, 31 May 2024 20:41:02 +0000 (14:41 -0600)
committerTom Tromey <tom@tromey.com>
Sat, 7 Sep 2024 20:23:04 +0000 (14:23 -0600)
This patch rearranges the TUI register window code a bit, removing a
call to tui_wrefresh and hoisting the calls to refresh_window to "more
outer" spots.

Reviewed-By: Alexandra Petlanova Hajkova <ahajkova@redhat.com>
gdb/tui/tui-regs.c
gdb/tui/tui-regs.h

index 2be81876010fe97d7d989e9ed9341bc8b19597bd..677facee36252bb66f4b052c39d297bb8629d50d 100644 (file)
@@ -151,8 +151,8 @@ tui_data_window::first_reg_element_no_inline (int line_no) const
     return (-1);
 }
 
-/* Show the registers of the given group in the data window
-   and refresh the window.  */
+/* See tui-regs.h.  */
+
 void
 tui_data_window::set_register_group (const reggroup *group)
 {
@@ -166,9 +166,6 @@ tui_data_window::set_register_group (const reggroup *group)
 void
 tui_data_window::update_register_data (const reggroup *group)
 {
-  if (group == nullptr)
-    group = general_reggroup;
-
   if (!target_has_registers ()
       || !target_has_stack ()
       || !target_has_memory ())
@@ -180,6 +177,9 @@ tui_data_window::update_register_data (const reggroup *group)
       return;
     }
 
+  if (group == nullptr)
+    group = general_reggroup;
+
   frame_info_ptr frame = get_selected_frame (nullptr);
   struct gdbarch *gdbarch = get_frame_arch (frame);
 
@@ -269,8 +269,6 @@ tui_data_window::display_registers_from (int start_element_no)
   /* Mark register windows below the visible area.  */
   for (; i < m_regs_content.size (); i++)
     m_regs_content[i].y = 0;
-
-  refresh_window ();
 }
 
 /* See tui-regs.h.  */
@@ -359,7 +357,7 @@ tui_data_window::rerender ()
     erase_data_content ();
   else
     display_registers_from (0);
-  tui_wrefresh (handle.get ());
+  refresh_window ();
 }
 
 
@@ -382,6 +380,7 @@ tui_data_window::do_scroll_vertical (int num_to_scroll)
     {
       first_line += num_to_scroll;
       display_registers_from_line (first_line);
+      refresh_window ();
     }
 }
 
@@ -391,29 +390,23 @@ tui_data_window::do_scroll_vertical (int num_to_scroll)
 void
 tui_data_window::check_register_values (const frame_info_ptr &frame)
 {
-  if (frame == nullptr)
+  /* If the frame architecture changed, we need to reset the register
+     group.  */
+  if (frame == nullptr || get_frame_arch (frame) != m_gdbarch)
     set_register_group (nullptr);
   else
     {
-      /* If the frame architecture changed, we need to reset the
-        register group.  */
-      struct gdbarch *gdbarch = get_frame_arch (frame);
-      if (gdbarch != m_gdbarch)
-       set_register_group (nullptr);
-      else
+      for (tui_register_info &data_item_win : m_regs_content)
        {
-         for (tui_register_info &data_item_win : m_regs_content)
-           {
-             bool was_hilighted = data_item_win.highlighted ();
+         bool was_hilighted = data_item_win.highlighted ();
 
-             data_item_win.update (frame);
+         data_item_win.update (frame);
 
-             if ((data_item_win.highlighted () || was_hilighted)
-                 && data_item_win.visible ())
-               data_item_win.rerender (handle.get (), m_item_width);
-           }
+         if ((data_item_win.highlighted () || was_hilighted)
+             && data_item_win.visible ())
+           data_item_win.rerender (handle.get (), m_item_width);
        }
-      tui_wrefresh (handle.get ());
+      refresh_window ();
     }
 }
 
index 61bfdd20d6f57d209fdafb0e8af26a91fe3a7272..fa1a3dd30a39389b70b66e49222c0b4b66ee62a9 100644 (file)
@@ -81,6 +81,8 @@ struct tui_data_window : public tui_win_info
 
   void check_register_values (const frame_info_ptr &frame);
 
+  /* Set the current register and redisplay the window.  If GROUP is
+     NULL, the general register group will be used.  */
   void set_register_group (const reggroup *group);
 
   const reggroup *get_current_group () const