Eina_Bool running;
Eina_Bool wait_for_buffer;
Eina_Bool norender;
+ Ecore_Timer *norender_timer;
} Rotation_Effect;
typedef struct _Rotation_Zone
return ECORE_CALLBACK_RENEW;
}
+static Eina_Bool
+_norender_timer_timeout(void *data)
+{
+ Rotation_Effect *effect = (Rotation_Effect *)data;
+
+ effect->norender_timer = NULL;
+ effect->norender = EINA_FALSE;
+
+ EFFINF("EFF norender pop - timeout", NULL, NULL);
+
+ e_comp_canvas_norender_pop();
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
static void
_rotation_effect_start(Rotation_Effect *effect)
{
*/
if (effect->norender)
{
- e_comp_canvas_norender_pop();
+ if (effect->norender_timer)
+ ecore_timer_del(effect->norender_timer);
+
+ effect->norender_timer = NULL;
effect->norender = EINA_FALSE;
+
+ EFFINF("EFF norender pop - start", NULL, NULL);
+
+ e_comp_canvas_norender_pop();
}
EFFINF("Rotation Effect Start", NULL, NULL);
*/
if (!effect->norender)
{
+ EFFINF("EFF norender push ", NULL, NULL);
+
e_comp_canvas_norender_push();
+
+ if (effect->norender_timer)
+ ecore_timer_del(effect->norender_timer);
+
+ effect->norender_timer = ecore_timer_add(1.0f,
+ _norender_timer_timeout,
+ effect);
+
effect->norender = EINA_TRUE;
}
}
if (effect->norender)
{
- e_comp_canvas_norender_pop();
+ if (effect->norender_timer)
+ ecore_timer_del(effect->norender_timer);
+
+ effect->norender_timer = NULL;
effect->norender = EINA_FALSE;
+
+ EFFINF("EFF norender pop - cancel", NULL, NULL);
+
+ e_comp_canvas_norender_pop();
}
_rotation_effect_clear(effect);
{
if (!effect) return;
+ if (effect->norender_timer)
+ ecore_timer_del(effect->norender_timer);
+ effect->norender_timer = NULL;
+ if (effect->norender)
+ {
+ EFFINF("EFF norender pop - free", NULL, NULL);
+
+ e_comp_canvas_norender_pop();
+ }
+ effect->norender = EINA_FALSE;
+
_rotation_effect_clear(effect);
evas_object_del(effect->bg);
E_FREE(effect);