From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30649 invoked by alias); 20 Jul 2010 15:42:46 -0000 Received: (qmail 30637 invoked by uid 22791); 20 Jul 2010 15:42:45 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 20 Jul 2010 15:42:40 +0000 Received: (qmail 7247 invoked from network); 20 Jul 2010 15:42:39 -0000 Received: from unknown (HELO orlando.localnet) (pedro@127.0.0.2) by mail.codesourcery.com with ESMTPA; 20 Jul 2010 15:42:39 -0000 From: Pedro Alves To: gdb-patches@sourceware.org Subject: Re: [patch] Slightly better resize support in TUI mode Date: Tue, 20 Jul 2010 15:42:00 -0000 User-Agent: KMail/1.13.2 (Linux/2.6.31-11-rt; KDE/4.4.2; x86_64; ; ) Cc: Balazs Kezes References: In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201007201642.37113.pedro@codesourcery.com> X-IsSubscribed: yes 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 X-SW-Source: 2010-07/txt/msg00302.txt.bz2 Thanks for taking the time to work on the TUI. I personally appreciate it, being a TUI user myself. On Monday 19 July 2010 22:20:38, Balazs Kezes wrote: > First of all we need to make sure that readline works with correct screen > sizes. When readline is not echoing it doesn't update its internal variables > about the screen size. This is an issue because TUI uses curses functions to > echo a character back so readline is in noecho mode. Here's the patch for that: > > Changelog > > 2010-07-19 Balazs Kezes (rlblaster@gmail.com) > > * terminal.c (rl_resize_terminal): Make sure terminal size is updated > even when readline is not echoing. We don't maintain readline ourselves (although we do have a few local patches, we much prefer not carrying them). Could you check whether this code has changed in more recent readline's than the one we have in our tree, and submit this to readline upstream if not? (we were recently talking about updating readline right after 7.2 branches, and the the branching already happened, though the update hasn't yet). In any case, we also support building gdb against the system readline, which again suggests that it is much better to have the fix upstream. > The other issue is that (...) (it is usually better to have each separate problem, and especially, each patch submitted as a separate email.) > in TUI's SIGWINCH handler the resize code is not > called at all. In the resize code you need to call resize_term which is > ncurses function in order to update its internal structures. This was placed > into a #ifdef HAVE_RESIZE_TERM but I have not found any references to that > macro so I removed the it. Also it seems to me that wresize is not called for > the command window so I added a call to it too. It sounds like the intent was to add an autoconf check for resize_term (so that HAVE_RESIZE_TERM would appear in build/gdb/config.h): mentions that this is an extension. > > *************** tui_sigwinch_handler (int signal) > *** 817,822 **** > --- 820,831 ---- > /* Say that a resize was done so that the readline can do it later > when appropriate. */ > tui_set_win_resized_to (TRUE); > + > + if (tui_active) > + { > + tui_resize_all (); > + tui_refresh_all_win (); > + } > } > #endif > It's best to avoid doing non async signal safe work in the signal handler. Instead, set a global flag, and have the main code handle the resize. This is what the tui_set_win_resized_to call shown above is doing -- setting the flag. But, it sounds like in this scenario, nobody's reacting to the flag. That's what we should fix. -- Pedro Alves