This is the mail archive of the gdb-prs@sourceware.org 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]

[Bug tui/13378] gdbtui updates source window for non-stopping conditional breakpoints


https://sourceware.org/bugzilla/show_bug.cgi?id=13378

--- Comment #3 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Patrick Palka <ppalka@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=0986c744dfecb8177de90020646090e9ed23cfe7

commit 0986c744dfecb8177de90020646090e9ed23cfe7
Author: Patrick Palka <patrick@parcs.ath.cx>
Date:   Tue Jun 30 13:56:49 2015 -0400

    Replace TUI's select_frame hook (PR tui/13378)

    The select_frame hook is used by TUI to update TUI's frame and register
    information following changes to the selected frame.  The problem with
    this hook is that it gets called after every single frame change, even
    if the frame change is only temporary or internal.  This is the primary
    cause of flickering and slowdown when running the inferior under TUI
    with conditional breakpoints set.  Internal GDB events are the source of
    many calls to select_frame and these internal events are triggered
    frequently, especially when a few conditional breakpoints are set.

    This patch removes the select_frame hook altogether and instead makes
    the frame and register information get updated in two key places (using
    observers): after an inferior stops, and right before displaying a
    prompt.  The latter hook covers the case when frame information must be
    updated following a call to "up", "down" or "frame", and the former
    covers the case when frame and register information must be updated
    after a call to "continue", "step", etc. or after the inferior stops in
    async execution mode.  Together these hooks should cover all the cases
    when frame information ought to be refreshed (and when the relevant
    windows ought to be subsequently updated).

    The print_frame_info_listing hook is also effectively obsolete now, but
    it still must be set while the TUI is active because its caller
    print_frame_info will otherwise assume that the CLI is active, and will
    print the frame informaion accordingly.  So this patch also sets the
    print_frame_info_listing hook to a dummy callback, in lieu of outright
    removing it yet.

    Effectively, with this patch, frame/PC changes that do not immediately
    precede an inferior-stop event or a prompt display event no longer cause
    TUI's frame and register information to be updated.

    And as a result of this change and of the previous change to
    tui_show_frame_info, the TUI is much more disciplined about updating the
    screen, and so the flicker as described in the PR is totally gone.

    gdb/ChangeLog:

        PR tui/13378
        * frame.c (select_frame): Remove reference to
        deprecated_selected_frame_level_changed_hook.
        * frame.h (deprecated_selected_frame_level_changed_hook): Remove
        declaration.
        * stack.c (deprecated_selected_frame_level_changed_hook):
        Likewise.
        * tui/tui-hooks.c (tui_selected_frame_level_changed_hook):
        Rename to ...
        (tui_refresh_frame_and_register_information): ... this.  Bail
        out if there is no stack.  Don't update register information
        unless registers_too_p is true.
        (tui_print_frame_info_listing_hook): Rename to ...
        (tui_dummy_print_frame_info_listing_hook): ... this.
        (tui_before_prompt): New function.
        (tui_normal_stop): New function.
        (tui_before_prompt_observer): New observer.
        (tui_normal_stop_observer): New observer.
        (tui_install_hooks): Set
        deprecated_print_frame_info_listing_hook to
        tui_dummy_print_frame_info_listing_hook.  Register
        tui_before_prompt_observer to call tui_before_prompt and
        tui_normal_stop_observer to call tui_normal_stop.  Remove
        reference to deprecated_selected_frame_level_changed_hook.
        (tui_remove_hooks): Detach and unset tui_before_prompt_observer
        and tui_normal_stop_observer.  Remove reference to
        deprecated_selected_frame_level_changed_hook.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


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