From c2e69ec2de574b2fdbf0eb8ed9b7c57f7633cc1e Mon Sep 17 00:00:00 2001 From: Gwanglim Lee Date: Fri, 17 Mar 2017 19:36:34 +0900 Subject: [PATCH] rotation: added missing e_comp_canvas_norender_pop when rotation effect is canceled. Change-Id: I08a4ebf81880840c644fff986466d0a43693442c --- src/e_mod_effect_rotation.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/e_mod_effect_rotation.c b/src/e_mod_effect_rotation.c index d34f989..2aad4a7 100644 --- a/src/e_mod_effect_rotation.c +++ b/src/e_mod_effect_rotation.c @@ -52,6 +52,7 @@ typedef struct _Rotation_Effect Eina_Bool running; Eina_Bool wait_for_buffer; + Eina_Bool norender; } Rotation_Effect; typedef struct _Rotation_Zone @@ -677,7 +678,11 @@ _rotation_effect_start(Rotation_Effect *effect) /* now, we're going to start rotation effect. * so, unblock updating canvas (compositing mode) */ - e_comp_canvas_norender_pop(); + if (effect->norender) + { + e_comp_canvas_norender_pop(); + effect->norender = EINA_FALSE; + } EFFINF("Rotation Effect Start", NULL, NULL); @@ -723,7 +728,11 @@ _rotation_effect_animator_begin_prepare(Rotation_Effect *effect, E_Desk *desk) * could be outputted to the screen before starting rotation effect. * it will be unset when the rotation effect starts. */ - e_comp_canvas_norender_push(); + if (!effect->norender) + { + e_comp_canvas_norender_push(); + effect->norender = EINA_TRUE; + } } static void @@ -832,6 +841,13 @@ _rotation_effect_cb_zone_rotation_cancel(void *data, int type, void *event) if (effect->running) return ECORE_CALLBACK_PASS_ON; if (effect->targets) _rotation_effect_cancel_send(zone); + + if (effect->norender) + { + e_comp_canvas_norender_pop(); + effect->norender = EINA_FALSE; + } + _rotation_effect_clear(effect); return ECORE_CALLBACK_PASS_ON; -- 2.7.4