From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NAqb9-0006xQ-UK for qemu-devel@nongnu.org; Wed, 18 Nov 2009 14:53:51 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NAqb5-0006wf-Cu for qemu-devel@nongnu.org; Wed, 18 Nov 2009 14:53:51 -0500 Received: from [199.232.76.173] (port=47270 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NAqb5-0006wU-1q for qemu-devel@nongnu.org; Wed, 18 Nov 2009 14:53:47 -0500 Received: from moutng.kundenserver.de ([212.227.17.9]:60227) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NAqb4-0006ln-Aj for qemu-devel@nongnu.org; Wed, 18 Nov 2009 14:53:46 -0500 Message-ID: <4B0450C7.70708@mail.berlios.de> Date: Wed, 18 Nov 2009 20:53:43 +0100 From: Stefan Weil MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] vga: do not resize the screen on hw_invalidate References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefano Stabellini Cc: qemu-devel@nongnu.org Stefano Stabellini schrieb: > Hi all, > currently vga always resizes the screen when vga_hw_invalidate is called > while this is not required and all the other graphic emulators don't. > This patch fixes it, making vga invalidate behaviour consistent with the > other emulated devices. > > Signed-off-by: Stefano Stabellini This rather old patch breaks switching to and from full screen mode using SDL and alt-ctrl-f key. Please revert or fix it. The patch is also part of stable-0.11, so I expect the same problem there (but did not test it). Found by git bisect, tested on several linux installations. > > --- > hw/vga.c | 6 +++--- > hw/vga_int.h | 1 + > 2 files changed, 4 insertions(+), 3 deletions(-) > > diff --git a/hw/vga.c b/hw/vga.c > index 4d74ffe..53b5ff6 100644 > --- a/hw/vga.c > +++ b/hw/vga.c > @@ -1837,7 +1837,8 @@ static void vga_update_display(void *opaque) > if (ds_get_bits_per_pixel(s->ds) == 0) { > /* nothing to do */ > } else { > - full_update = 0; > + full_update = s->full_update; > + s->full_update = 0; > if (!(s->ar_index & 0x20)) { > graphic_mode = GMODE_BLANK; > } else { > @@ -1867,8 +1868,7 @@ static void vga_invalidate_display(void *opaque) > { > VGAState *s = (VGAState *)opaque; > > - s->last_width = -1; > - s->last_height = -1; > + s->full_update = 1; > } > > void vga_reset(void *opaque) > diff --git a/hw/vga_int.h b/hw/vga_int.h > index 631b1b0..8fdf51d 100644 > --- a/hw/vga_int.h > +++ b/hw/vga_int.h > @@ -158,6 +158,7 @@ typedef struct VGACommonState { > uint32_t last_width, last_height; /* in chars or pixels */ > uint32_t last_scr_width, last_scr_height; /* in pixels */ > uint32_t last_depth; /* in bits */ > + uint8_t full_update; > uint8_t cursor_start, cursor_end; > uint32_t cursor_offset; > unsigned int (*rgb_to_pixel)(unsigned int r,