From: Evgeny Voevodin Date: Fri, 27 Jul 2012 06:30:02 +0000 (+0400) Subject: tizen/src/maru_sdl.c: Fix improper rotate/resize operation for ARM. X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~1405^2~56 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f641569c2907eaacaa8a2c8391cc2c7c7f45d2c3;p=sdk%2Femulator%2Fqemu.git tizen/src/maru_sdl.c: Fix improper rotate/resize operation for ARM. In general, we gave three surfaces: guest screen - surface_qemu real screen - surface_screen temporary - processing_screen qemu_ds_refresh() is called with some period. When rotate/resize happens then call graph is: qemu_ds_refresh() ->maruskin_sdl_init() ->SDL_Init ->vga_hw_invalidate() - this is needed to let exynos_4210_fimd know that it should redraw it's content ->vga_hw_update()-> ->vga_update_display() always draw into surface_qemu ->exynos4210_fimd_update() if content changed draw into surface_qemu Both of them call: ->dpy_update() ->qemu_ds_update() --- SIGNAL ---> run_qemu_update() ->qemu_update() qemu_update() calls _sdl_init() if screen alteration was captured. The fix is to not return after _sdl_init() happens and process an old surface_qemu into surface_screen. The thing is that exynos4210_fimd draws its conten only if it changed. During execution of vga_hw_update() exynos4210_fimd drew its content into current surface_qemu. After that new surface_qemu is created in qemu_update(). And if we will return immediately after new surface created, exynos4210_fimd won't redraw its content to a new surface_qemu. maru_vga works because it redraws its content always and doesn't care if it changed or not. Signed-off-by: Evgeny Voevodin --- diff --git a/tizen/src/maru_sdl.c b/tizen/src/maru_sdl.c index 511bf41d5e..753d8615b2 100644 --- a/tizen/src/maru_sdl.c +++ b/tizen/src/maru_sdl.c @@ -198,7 +198,6 @@ static void qemu_update(void) if (sdl_alteration == 1) { sdl_alteration = 0; _sdl_init(); - return; } if (surface_qemu != NULL) {