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 <stefano.stabell...@eu.citrix.com>
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,