From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ryan Harper Subject: [PATCH 1/1][RESEND] v2: Fix text console size/resize when using curses Date: Thu, 4 Sep 2008 11:10:38 -0500 Message-ID: <1220544638-1972-2-git-send-email-ryanh@us.ibm.com> References: <1220544638-1972-1-git-send-email-ryanh@us.ibm.com> Cc: Ryan Harper , Ian Kirk , carenas@sajinet.com.pe, kvm@vger.kernel.org To: qemu-devel@nongnu.org Return-path: Received: from e4.ny.us.ibm.com ([32.97.182.144]:42722 "EHLO e4.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752609AbYIDQMB (ORCPT ); Thu, 4 Sep 2008 12:12:01 -0400 Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e4.ny.us.ibm.com (8.13.8/8.13.8) with ESMTP id m84GBvcR029155 for ; Thu, 4 Sep 2008 12:11:57 -0400 Received: from d01av01.pok.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by d01relay02.pok.ibm.com (8.13.8/8.13.8/NCO v9.0) with ESMTP id m84GAeIJ164836 for ; Thu, 4 Sep 2008 12:10:40 -0400 Received: from d01av01.pok.ibm.com (loopback [127.0.0.1]) by d01av01.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id m84GAevW010557 for ; Thu, 4 Sep 2008 12:10:40 -0400 In-Reply-To: <1220544638-1972-1-git-send-email-ryanh@us.ibm.com> Sender: kvm-owner@vger.kernel.org List-ID: v2: drop initial size adjustment, not needed. Resize events fail to ensure that both the text console and curses display areas are the same size; this causes broken output like: QEMU 0.9.1 monitor - type 'help' for more information (qemu) (qemu) (qemu) To fix this, ensure that the display width and the text area width are sync for text consoles on refresh; also force a resize event whenever we invalidate the text console. Signed-off-by: Ryan Harper diff --git a/console.c b/console.c index 1c94980..89bdc52 100644 --- a/console.c +++ b/console.c @@ -608,6 +608,9 @@ static void console_refresh(TextConsole *s) s->text_y[0] = 0; s->text_x[1] = s->width - 1; s->text_y[1] = s->height - 1; + /* ensure that textconsole area is the same size as the display */ + s->g_width = s->ds->width; + s->g_height = s->ds->height; s->cursor_invalidate = 1; return; } @@ -1158,6 +1161,8 @@ static void text_console_invalidate(void *opaque) TextConsole *s = (TextConsole *) opaque; console_refresh(s); + /* resize if needed */ + text_console_resize(s); } static void text_console_update(void *opaque, console_ch_t *chardata)