From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1073 invoked by alias); 28 Aug 2002 17:26:36 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 1061 invoked from network); 28 Aug 2002 17:26:35 -0000 Received: from unknown (HELO valrhona.uglyboxes.com) (64.1.192.220) by sources.redhat.com with SMTP; 28 Aug 2002 17:26:35 -0000 Received: from localhost.localdomain (IDENT:aGJzsuWmES8sZmEusTazvS8nxmSkN4Ty@localhost.localdomain [127.0.0.1]) by valrhona.uglyboxes.com (8.11.6/8.11.6) with ESMTP id g7SHTGA04284 for ; Wed, 28 Aug 2002 10:29:16 -0700 Date: Wed, 28 Aug 2002 10:33:00 -0000 From: Keith Seitz X-X-Sender: keiths@valrhona.uglyboxes.com To: gdb-patches@sources.redhat.com Subject: Re: [RFA] add selected-frame-level-changed events In-Reply-To: <3D6D025E.1080900@ges.redhat.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-SW-Source: 2002-08/txt/msg00947.txt.bz2 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 * 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 */