From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 29944 invoked by alias); 26 Apr 2013 19:03:37 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 29935 invoked by uid 89); 26 Apr 2013 19:03:37 -0000 X-Spam-SWARE-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,FROM_LOCAL_NOVOWEL,HK_RANDOM_FROM,KHOP_THREADED,RCVD_IN_DNSWL_NONE autolearn=no version=3.3.1 Received: from helsinki.magic.fr (HELO helsinki.magic.fr) (188.130.33.134) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Fri, 26 Apr 2013 19:03:35 +0000 Received: (qmail 30316 invoked from network); 26 Apr 2013 21:03:31 +0200 Received: from gut75-4-82-235-162-250.fbx.proxad.net (HELO Mail) (82.235.162.250) by bassereau.com with SMTP; 26 Apr 2013 21:03:31 +0200 Received: from localhost ([10.100.103.24]) by Mail ; Fri, 26 Apr 2013 21:01:37 +0200 From: Maxime Coste To: gdb-patches@sourceware.org Cc: Maxime Coste Subject: [PATCH 2/3] Add a frame_changed observer Date: Fri, 26 Apr 2013 21:10:00 -0000 Message-Id: <1367002961-12311-3-git-send-email-frrrwww@gmail.com> In-Reply-To: <1367002961-12311-1-git-send-email-frrrwww@gmail.com> References: <1367002961-12311-1-git-send-email-frrrwww@gmail.com> X-SW-Source: 2013-04/txt/msg00826.txt.bz2 --- gdb/doc/observer.texi | 4 ++++ gdb/frame.c | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/gdb/doc/observer.texi b/gdb/doc/observer.texi index adb7085..9653d6b 100644 --- a/gdb/doc/observer.texi +++ b/gdb/doc/observer.texi @@ -105,6 +105,10 @@ been modified since being loaded by the debugger (by being recompiled, for instance). @end deftypefun +@deftypefun void frame_changed (struct frame_info *@var{frame}) +the selected frame has changed; +@end deftypefun + @deftypefun void inferior_created (struct target_ops *@var{objfile}, int @var{from_tty}) @value{GDBN} has just connected to an inferior. For @samp{run}, @value{GDBN} calls this observer while the inferior is still stopped diff --git a/gdb/frame.c b/gdb/frame.c index 0a0acda..0e21e33 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -1414,6 +1414,9 @@ deprecated_safe_get_selected_frame (void) void select_frame (struct frame_info *fi, enum select_frame_reason reason) { + int changed = (reason == REASON_USER || reason == REASON_STOP) + && (fi != selected_frame); + selected_frame = fi; /* NOTE: cagney/2002-05-04: FI can be NULL. This occurs when the frame is being invalidated. */ @@ -1453,6 +1456,9 @@ select_frame (struct frame_info *fi, enum select_frame_reason reason) set_language (s->language); } } + + if (changed) + observer_notify_frame_changed (fi); } /* Create an arbitrary (i.e. address specified by user) or innermost frame. -- 1.8.2.1