static const char effect_started[] = "effect,started";
static const char effect_done[] = "effect,done";
+static const char launch_done[] = "launch,done";
/* callbacks - event */
static void
static void _cb_evas_key_up(void * data, Evas * evas, Evas_Object * obj, void * event_info);
/* callbacks - smart */
-static void _cb_evas_smart_effect(void *data, Evas_Object * obj, void *event_info);
+static void _cb_evas_smart_cb_effect_started(void *data, Evas_Object * obj, void *event_info);
+static void _cb_evas_smart_cb_effect_done(void *data, Evas_Object * obj, void *event_info);
+static void _cb_evas_smart_cb_launch_done(void *data, Evas_Object * obj, void *event_info);
/* callbacks - timer */
static Eina_Bool _cb_work_timeout(void *data);
this->generateKeyEvent(this->ev.key.name, 1.0);
break;
- case E_TC_EVENT_TYPE_EFFECT:
- evas_object_smart_callback_add(this->ev.win, effect_started, _cb_evas_smart_effect, this);
- evas_object_smart_callback_add(this->ev.win, effect_done, _cb_evas_smart_effect, this);
+ case E_TC_EVENT_TYPE_EFFECT_EVAS_CB:
+ this->ev.effect.state_smcb = E_TC_EVAS_SMART_CB_STATE_NONE;
+ evas_object_smart_callback_add(this->ev.win, effect_started, _cb_evas_smart_cb_effect_started, this);
+ evas_object_smart_callback_add(this->ev.win, effect_done, _cb_evas_smart_cb_effect_done, this);
+ evas_object_smart_callback_add(this->ev.win, launch_done, _cb_evas_smart_cb_launch_done, this);
break;
default:
evas_object_event_callback_del(this->ev.win, EVAS_CALLBACK_KEY_DOWN, _cb_evas_key_down);
evas_object_event_callback_del(this->ev.win, EVAS_CALLBACK_KEY_UP, _cb_evas_key_up);
}
- else if (ev_type == E_TC_EVENT_TYPE_EFFECT)
+ else if (ev_type == E_TC_EVENT_TYPE_EFFECT_EVAS_CB)
{
- evas_object_smart_callback_del(this->ev.win, effect_started, _cb_evas_smart_effect);
- evas_object_smart_callback_del(this->ev.win, effect_done, _cb_evas_smart_effect);
+ evas_object_smart_callback_del(this->ev.win, effect_started, _cb_evas_smart_cb_effect_started);
+ evas_object_smart_callback_del(this->ev.win, effect_done, _cb_evas_smart_cb_effect_done);
+ evas_object_smart_callback_del(this->ev.win, launch_done, _cb_evas_smart_cb_launch_done);
}
res = (ev.response == ev.request);
etRunner::get().finishWork();
}
+/* callbacks - signal */
static void
_cb_signal_vis_changed(void *data,
const Eldbus_Message *msg)
}
}
+/* callbacks - timer */
static Eina_Bool
_cb_work_timeout(void *data)
{
return ECORE_CALLBACK_DONE;
}
+/* callbacks - ecore */
static Eina_Bool
_cb_ecore_key(void *data, int type, void *event)
{
return ECORE_CALLBACK_PASS_ON;
}
+/* callbacks - evas */
static void
_cb_evas_key_down(void *data, Evas * evas, Evas_Object * obj, void * event_info)
{
}
}
+/* callbacks - smart object */
static void
-_cb_evas_smart_effect(void *data, Evas_Object * obj, void *event_info)
+_cb_evas_smart_cb_effect_started(void *data, Evas_Object * obj, void *event_info)
{
etRunner *runner = (etRunner *)data;
- if (runner->ev.win == obj)
- runner->ev.response = runner->ev.request;
- elm_exit();
+ if (runner && runner->ev.win == obj)
+ {
+ runner->ev.effect.state_smcb = E_TC_EVAS_SMART_CB_STATE_EFFECT_STARTED;
+ }
+}
+
+static void
+_cb_evas_smart_cb_effect_done(void *data, Evas_Object * obj, void *event_info)
+{
+ etRunner *runner = (etRunner *)data;
+ if (runner && runner->ev.win == obj)
+ {
+ if(runner->ev.effect.state_smcb == E_TC_EVAS_SMART_CB_STATE_EFFECT_STARTED)
+ {
+ runner->ev.effect.state_smcb = E_TC_EVAS_SMART_CB_STATE_EFFECT_DONE;
+ runner->ev.response = runner->ev.request;
+ elm_exit();
+ }
+ }
+}
+
+static void
+_cb_evas_smart_cb_launch_done(void *data, Evas_Object * obj, void *event_info)
+{
+ etRunner *runner = (etRunner *)data;
+ if (runner && runner->ev.win == obj)
+ {
+ runner->ev.effect.state_smcb = E_TC_EVAS_SMART_CB_STATE_LAUNCH_DONE;
+ }
}
static Eina_Bool
E_TC_EVENT_TYPE_FOCUS_CHANGED,
E_TC_EVENT_TYPE_INPUT_ECORE_KEY,
E_TC_EVENT_TYPE_INPUT_EVAS_KEY,
- E_TC_EVENT_TYPE_EFFECT,
+ E_TC_EVENT_TYPE_EFFECT_EVAS_CB,
E_TC_EVENT_TYPE_MAX
} E_TC_Event_Type;
E_VISIBILITY_PRE_UNOBSCURED = 3,
} E_Visibility;
+typedef enum _E_TC_EVAS_SMART_CB_STATE
+{
+ E_TC_EVAS_SMART_CB_STATE_NONE = 0,
+ E_TC_EVAS_SMART_CB_STATE_EFFECT_STARTED, // Server -> Client [PID:xxx] tizen_effect@19.start(wl_surface@41, 1)
+ E_TC_EVAS_SMART_CB_STATE_EFFECT_DONE, // Server -> Client [PID:xxx] tizen_effect@19.end(wl_surface@41, 1)
+ E_TC_EVAS_SMART_CB_STATE_LAUNCH_DONE // Server -> Client [PID:xxx] tizen_effect@19.end(wl_surface@41, 4)
+} E_TC_EFFECT_STATE;
+
typedef struct _Window_Info_List
{
Eina_List *list;