This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA] add selected-frame-level-changed events


On Wed, 28 Aug 2002, Andrew Cagney wrote:

> So that the change has an ``exit clause''.  that way it is clear when 
> the fixme can be deleted/fixed.

Noted.

> Otherwize, yes, just commit

For the record, here's what I've committed:

ChangeLog
2002-08-28  Keith Seitz  <keiths@redhat.com>

        * stack.c (select_frame): Add FIXME concerning selected-frame
        events.
        (select_frame_command): Send selected-frame-level-changed
        event notification, but only if the level actually changed.
        (up_silently_base): Add selected-frame-level-changed event
        notification.
        (down_silently_base): Likewise.

Patch
Index: stack.c
===================================================================
RCS file: /cvs/src/src/gdb/stack.c,v
retrieving revision 1.40
diff -p -r1.40 stack.c
*** stack.c	11 Jul 2002 19:29:08 -0000	1.40
--- stack.c	28 Aug 2002 17:26:22 -0000
*************** select_frame (struct frame_info *fi)
*** 1517,1522 ****
--- 1517,1531 ----
    if (selected_frame_level_changed_hook)
      selected_frame_level_changed_hook (frame_relative_level (fi));
  
+   /* FIXME: kseitz/2002-08-28: It would be nice to call
+      selected_frame_level_changed_event right here, but due to limitations
+      in the current interfaces, we would end up flooding UIs with events
+      because select_frame is used extensively internally.
+ 
+      Once we have frame-parameterized frame (and frame-related) commands,
+      the event notification can be moved here, since this function will only
+      be called when the users selected frame is being changed. */
+ 
    /* Ensure that symbols for this frame are read in.  Also, determine the
       source language of this frame, and switch to it if desired.  */
    if (fi)
*************** select_frame_command_wrapper (char *leve
*** 1620,1627 ****
  static void
  select_frame_command (char *level_exp, int from_tty)
  {
!   register struct frame_info *frame, *frame1;
!   unsigned int level = 0;
  
    if (!target_has_stack)
      error ("No stack.");
--- 1629,1636 ----
  static void
  select_frame_command (char *level_exp, int from_tty)
  {
!   struct frame_info *frame;
!   int level = frame_relative_level (selected_frame);
  
    if (!target_has_stack)
      error ("No stack.");
*************** select_frame_command (char *level_exp, i
*** 1629,1634 ****
--- 1638,1645 ----
    frame = parse_frame_specification (level_exp);
  
    select_frame (frame);
+   if (level != frame_relative_level (selected_frame))
+     selected_frame_level_changed_event (frame_relative_level (selected_frame));
  }
  
  /* The "frame" command.  With no arg, print selected frame briefly.
*************** up_silently_base (char *count_exp)
*** 1674,1679 ****
--- 1685,1691 ----
    if (count1 != 0 && count_exp == 0)
      error ("Initial frame selected; you cannot go up.");
    select_frame (fi);
+   selected_frame_level_changed_event (frame_relative_level (selected_frame));
  }
  
  static void
*************** down_silently_base (char *count_exp)
*** 1719,1724 ****
--- 1731,1737 ----
      }
  
    select_frame (frame);
+   selected_frame_level_changed_event (frame_relative_level (selected_frame));
  }
  
  /* ARGSUSED */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]