From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28578 invoked by alias); 7 Jan 2015 18:34:01 -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 28531 invoked by uid 89); 7 Jan 2015 18:34:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_SOFTFAIL autolearn=no version=3.3.2 X-HELO: mtaout20.012.net.il Received: from mtaout20.012.net.il (HELO mtaout20.012.net.il) (80.179.55.166) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 07 Jan 2015 18:34:00 +0000 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0NHT00300KRJO300@a-mtaout20.012.net.il> for gdb-patches@sourceware.org; Wed, 07 Jan 2015 20:33:57 +0200 (IST) Received: from HOME-C4E4A596F7 ([87.69.4.28]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0NHT003LHKWLLE60@a-mtaout20.012.net.il>; Wed, 07 Jan 2015 20:33:57 +0200 (IST) Date: Wed, 07 Jan 2015 18:34:00 -0000 From: Eli Zaretskii Subject: Re: [PATCH] Speed up "gdb -tui" output In-reply-to: To: Doug Evans Cc: palves@redhat.com, gdb-patches@sourceware.org Reply-to: Eli Zaretskii Message-id: <83fvbm784e.fsf@gnu.org> References: <83zj9v7urq.fsf@gnu.org> <54AD4E22.1010106@redhat.com> <83mw5u79t7.fsf@gnu.org> X-IsSubscribed: yes X-SW-Source: 2015-01/txt/msg00129.txt.bz2 > Date: Wed, 7 Jan 2015 10:09:03 -0800 > From: Doug Evans > Cc: Pedro Alves , gdb-patches > > >> Should it be calling wrefresh if the file is gdb_stdout? > > > > Only if that stream is a real file, not a string or whatever else we > > support in ui-file. > > tui_file_flush only gets called for tui files That's not really true, as you yourself point out: > Though I see tui also has its own ui file strings (tui_sfileopen). > That can go I think. I don't see how it could go: it's used. > >> If we do that, and change tui_puts like: > >> > >> - /* We could defer the following. */ > >> - wrefresh (w); > >> - fflush (stdout); > >> + if (c == '\n') > >> + gdb_flush (gdb_stdout); > >> > >> would it work? > > > > No, it's not enough. There's also gdb_stderr and gdb_stdlog, at > > least. (tui_puts doesn't get the stream as its argument, so it > > doesn't really know which stream it is serving.) I'm trying to make > > heads or tails out of this, but I'm not there yet. > > Sure, but it does suggest tui_puts is the wrong place to do > any kind of flushing/refreshing. How else can you emulate the unbuffered nature of gdb_stderr and the line-buffered nature of gdb_stdout, for example? The GDB application code implicitly expects that.