aboutsummaryrefslogtreecommitdiff
path: root/hw/display
diff options
context:
space:
mode:
authorIgor Mitsyanko <i.mitsyanko@gmail.com>2013-03-19 23:44:55 +0400
committerGerd Hoffmann <kraxel@redhat.com>2013-04-16 09:03:46 +0200
commit522fccbe71e35efc96f66cb475f778c2ce02e9fc (patch)
tree9688ce8fe1ec568706db2e8d919ca4f17fce024b /hw/display
parent24a6e7f4d91e9ed5f8117ecb083431a23f8609a0 (diff)
exynos4210_fimd.c: fix display resize bug introduced after console revamp
In exynos4210 display update function, we were acquiring DisplaySurface pointer before calling screen resize function, not paying attention that resize procedure can replace current DisplaySurface with newly allocated one. Right thing to do is to initialize DisplaySurface AFTER a call to resize function. Signed-off-by: Igor Mitsyanko <i.mitsyanko@gmail.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/display')
-rw-r--r--hw/display/exynos4210_fimd.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c
index 49cca4bf94..7e1cbb63c9 100644
--- a/hw/display/exynos4210_fimd.c
+++ b/hw/display/exynos4210_fimd.c
@@ -1242,7 +1242,7 @@ static void exynos4210_update_resolution(Exynos4210fimdState *s)
static void exynos4210_fimd_update(void *opaque)
{
Exynos4210fimdState *s = (Exynos4210fimdState *)opaque;
- DisplaySurface *surface = qemu_console_surface(s->console);
+ DisplaySurface *surface;
Exynos4210fimdWindow *w;
int i, line;
hwaddr fb_line_addr, inc_size;
@@ -1255,11 +1255,12 @@ static void exynos4210_fimd_update(void *opaque)
const int global_height = ((s->vidtcon[2] >> FIMD_VIDTCON2_VER_SHIFT) &
FIMD_VIDTCON2_SIZE_MASK) + 1;
- if (!s || !s->console || !surface_bits_per_pixel(surface) ||
- !s->enabled) {
+ if (!s || !s->console || !s->enabled ||
+ surface_bits_per_pixel(qemu_console_surface(s->console)) == 0) {
return;
}
exynos4210_update_resolution(s);
+ surface = qemu_console_surface(s->console);
for (i = 0; i < NUM_OF_WINDOWS; i++) {
w = &s->window[i];