From: MinJeong Kim Date: Tue, 10 Jan 2017 07:02:30 +0000 (+0900) Subject: rotation: fixed waiting for buffer change of hidden client X-Git-Tag: accepted/tizen/3.0/common/20170111.161648~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1ad3b1d98ebcb4406fb8823b0e691d31315be797;p=platform%2Fcore%2Fuifw%2Fe-mod-tizen-effect.git rotation: fixed waiting for buffer change of hidden client Change-Id: I2274d5b95069f6a99d948f03ce9422eaf7df737f Signed-off-by: MinJeong Kim --- diff --git a/src/e_mod_effect_rotation.c b/src/e_mod_effect_rotation.c index 12c5056..ffb203e 100644 --- a/src/e_mod_effect_rotation.c +++ b/src/e_mod_effect_rotation.c @@ -858,6 +858,37 @@ _rotation_effect_cb_buffer_change(void *data, int ev_type, void *event) } static Eina_Bool +_rotation_effect_cb_client_hide(void *data, int ev_type, void *event) +{ + E_Event_Client *ev = event; + E_Client *ec; + Rotation_Effect *effect; + E_Desk *desk; + + ec = ev->ec; + if (!ec) return ECORE_CALLBACK_PASS_ON; + + effect = (Rotation_Effect *)data; + if (!effect) return ECORE_CALLBACK_PASS_ON; + if (!effect->ctx_begin) return ECORE_CALLBACK_PASS_ON; + if (!effect->waiting_list) return ECORE_CALLBACK_PASS_ON; + + effect->waiting_list = eina_list_remove(effect->waiting_list, ec); + if (effect->waiting_list) return ECORE_CALLBACK_PASS_ON; + + if (!effect->wait_for_buffer) return ECORE_CALLBACK_PASS_ON; + + if (!effect->ctx_end) + { + desk = e_desk_current_get(ec->zone); + _rotation_effect_animator_end_prepare(effect, desk); + } + if (effect->ctx_end) _rotation_effect_start(effect); + + return ECORE_CALLBACK_PASS_ON; +} + +static Eina_Bool _rotation_effect_cb_client_remove(void *data, int ev_type, void *event) { E_Event_Client *ev = event; @@ -973,6 +1004,10 @@ _rotation_zone_create(E_Zone *zone) _rotation_effect_cb_buffer_change, rotation_zone->effect); E_LIST_HANDLER_APPEND(rotation_zone->event_hdlrs, + E_EVENT_CLIENT_HIDE, + _rotation_effect_cb_client_hide, rotation_zone->effect); + + E_LIST_HANDLER_APPEND(rotation_zone->event_hdlrs, E_EVENT_CLIENT_REMOVE, _rotation_effect_cb_client_remove, rotation_zone->effect);