rotation: added missing e_comp_canvas_norender_pop when rotation effect is canceled. 84/119584/1
authorGwanglim Lee <gl77.lee@samsung.com>
Fri, 17 Mar 2017 10:36:34 +0000 (19:36 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Fri, 17 Mar 2017 10:42:43 +0000 (19:42 +0900)
Change-Id: I08a4ebf81880840c644fff986466d0a43693442c

src/e_mod_effect_rotation.c

index d34f989..2aad4a7 100644 (file)
@@ -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;