From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:47446) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1US2Md-0001W5-Ss for qemu-devel@nongnu.org; Tue, 16 Apr 2013 05:39:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1US2MY-0006uN-Rz for qemu-devel@nongnu.org; Tue, 16 Apr 2013 05:39:47 -0400 Received: from mx1.redhat.com ([209.132.183.28]:12643) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1US2MY-0006to-H7 for qemu-devel@nongnu.org; Tue, 16 Apr 2013 05:39:42 -0400 From: Gerd Hoffmann Date: Tue, 16 Apr 2013 11:39:15 +0200 Message-Id: <1366105178-26744-2-git-send-email-kraxel@redhat.com> In-Reply-To: <1366105178-26744-1-git-send-email-kraxel@redhat.com> References: <1366105178-26744-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH 01/24] exynos4210_fimd.c: fix display resize bug introduced after console revamp List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Igor Mitsyanko , Evgeny Voevodin , Igor Mitsyanko , Gerd Hoffmann , Maksim Kozlov , Dmitry Solodkiy From: Igor Mitsyanko 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 Signed-off-by: Gerd Hoffmann --- hw/display/exynos4210_fimd.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/hw/display/exynos4210_fimd.c b/hw/display/exynos4210_fimd.c index 49cca4b..7e1cbb6 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]; -- 1.7.9.7