return EINA_TRUE;
}
-Eina_Bool
+std::shared_ptr<eventItem>
etRunner::waitEvent(etWin *win, E_TC_Event_Type ev_type)
{
- E_TC_Event_Item *recv_item = NULL;
- Eina_Bool res = EINA_FALSE;
- Eina_List *l = NULL;
+ std::shared_ptr<eventItem> recv_item = NULL;
+ std::list<std::shared_ptr<eventItem>>::iterator itr;
// swap event
switch (ev_type)
// pre-waiting events
work(0.5);
- if (ev.wait_event_index == ev.last_event)
+ if (*ev.wait_event_index == ev.last_event)
{
work(0.5); // waiting additional time
- if (ev.wait_event_index == ev.last_event)
- return EINA_FALSE;
+ if (*ev.wait_event_index == ev.last_event)
+ {
+ std::shared_ptr<eventItem> res = std::make_shared<eventItem>(0, E_TC_EVENT_TYPE_NONE);
+ res->result = EINA_FALSE;
+ res->isTimeout = EINA_TRUE;
+ return res;
+ }
}
- EINA_LIST_CAST_FOREACH(ev.recv_queue, l, recv_item, E_TC_Event_Item*)
+ // search from latest waitEvent called point
+ itr = ev.wait_event_index;
+ if (itr == ev.recv_queue.end()) itr = ev.recv_queue.begin();
+ else itr++;
+
+ for (; itr != ev.recv_queue.end() ; itr++)
{
- if ((recv_item->win == (win?win->native_win:0)) &&
- (recv_item->type == ev_type))
+ recv_item = *itr;
+ if ((recv_item->isSameWin(win?win->native_win:0)) &&
+ (recv_item->isSameType(ev_type)))
{
- ev.wait_event_index = recv_item;
- res = EINA_TRUE;
- break;
+ ev.wait_event_index = itr;
+ recv_item->result = EINA_TRUE;
+ return recv_item;
}
}
- return res;
+ if (recv_item == NULL)
+ {
+ recv_item = std::make_shared<eventItem>(0, E_TC_EVENT_TYPE_NONE);
+ recv_item->result = EINA_FALSE;
+ }
+ return recv_item;
}
void
etRunner::flushEventQueue()
{
- if (ev.recv_queue)
- {
- ev.recv_queue = eina_list_free(ev.recv_queue);
- ev.recv_queue = NULL;
- }
+ std::list<std::shared_ptr<eventItem>>::iterator itr;
+ std::shared_ptr<eventItem> ei = NULL;
+ if (!ev.recv_queue.empty())
+ ev.recv_queue.erase(ev.recv_queue.begin(), ev.recv_queue.end());
+ ev.wait_event_index = ev.recv_queue.end();
+ ev.last_event = NULL;
+ ev.last_checkpoint = NULL;
+}
+
+Eina_Bool
+etRunner::insertEventQueue(std::shared_ptr<eventItem> ei)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(ei, EINA_FALSE);
+
+ ev.recv_queue.push_back(ei);
+ ev.last_event = ei;
+
+ return EINA_TRUE;
}
Eina_Bool
etRunner::insertEventQueue(Ecore_Window id, E_TC_Event_Type ev_type)
{
- E_TC_Event_Item *item = E_NEW(E_TC_Event_Item, 1);
- EINA_SAFETY_ON_NULL_RETURN_VAL(item, EINA_FALSE);
+ std::shared_ptr<eventItem> ei = std::make_shared<eventItem>(id, ev_type);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(ei, EINA_FALSE);
- item->win = id;
- item->type = ev_type;
- ev.recv_queue = eina_list_append(ev.recv_queue, item);
- ev.last_event = item;
+ ev.recv_queue.push_back(ei);
+ ev.last_event = ei;
return EINA_TRUE;
}
Eina_Bool
etRunner::isEventOccuredAfterCheckpoint(etWin *tw, E_TC_Event_Type ev_type)
{
- Eina_List *l = NULL;
- E_TC_Event_Item *item = NULL;
+ std::list<std::shared_ptr<eventItem>>::iterator itr;
+ std::shared_ptr<eventItem> ei = NULL;
Ecore_Window id = tw->native_win;
- EINA_LIST_CAST_FOREACH(ev.recv_queue, l, item, E_TC_Event_Item*)
+ for(itr = ev.recv_queue.begin() ; itr != ev.recv_queue.end() ; itr++)
{
- if (ev.last_checkpoint && ev.last_checkpoint != item)
+ ei = *itr;
+
+ if (ev.last_checkpoint && ev.last_checkpoint != ei)
continue;
- if ((item->win == id) && (item->type == ev_type))
+ if (ei->isSameWin(id) && ei->isSameType(ev_type))
return EINA_TRUE;
}
TEST_F(etTestInput, keygrab_nowin_shared)
{
+ std::shared_ptr<eventItem> ei = NULL;
Eina_Bool ret = EINA_FALSE;
ret = ecore_wl2_window_keygrab_set(NULL, "XF86Menu", 0, 0, 0, ECORE_WL2_WINDOW_KEYGRAB_SHARED);
ASSERT_TRUE(ret);
etRunner::get().generateKeyEvent(key_name, 0.3);
- ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
+ ASSERT_TRUE(ei != NULL);
ret = ecore_wl2_window_keygrab_unset(NULL, "XF86Menu", 0, 0);
ASSERT_TRUE(ret);
TEST_F(etTestInput, keygrab_nowin_orexcl)
{
+ std::shared_ptr<eventItem> ei = NULL;
Eina_Bool ret = EINA_FALSE;
+
ret = ecore_wl2_window_keygrab_set(NULL, "XF86Menu", 0, 0, 0, ECORE_WL2_WINDOW_KEYGRAB_OVERRIDE_EXCLUSIVE);
ASSERT_TRUE(ret);
etRunner::get().generateKeyEvent(key_name, 0.3);
- ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
+ ASSERT_TRUE(ei != NULL);
ret = ecore_wl2_window_keygrab_unset(NULL, "XF86Menu", 0, 0);
ASSERT_TRUE(ret);
TEST_F(etTestInput, keygrab_nowin_excl)
{
+ std::shared_ptr<eventItem> ei = NULL;
Eina_Bool ret = EINA_FALSE;
+
ret = ecore_wl2_window_keygrab_set(NULL, "XF86Menu", 0, 0, 0, ECORE_WL2_WINDOW_KEYGRAB_EXCLUSIVE);
ASSERT_TRUE(ret);
etRunner::get().generateKeyEvent(key_name, 0.3);
- ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_INPUT_ECORE_KEY);
+ ASSERT_TRUE(ei != NULL);
ret = ecore_wl2_window_keygrab_unset(NULL, "XF86Menu", 0, 0);
ASSERT_TRUE(ret);
TEST_F(etTestInput, keygrab_win_shared)
{
+ std::shared_ptr<eventItem> ei = NULL;
Eina_Bool ret = EINA_FALSE;
tw_shared = initNormalWin("TCWin_SharedGrab", EINA_FALSE);
ASSERT_TRUE(ret);
etRunner::get().generateKeyEvent(key_name, 0.3);
- ret = etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+ ASSERT_TRUE(ei != NULL);
etRunner::get().ev.elm_win = NULL;
etRunner::get().ev.native_win = 0;
TEST_F(etTestInput, keygrab_win_orexcl)
{
+ std::shared_ptr<eventItem> ei = NULL;
Eina_Bool ret = EINA_FALSE;
tw_orexcl = initNormalWin("TCWin_OrexclGrab", EINA_FALSE);
ASSERT_TRUE(ret);
etRunner::get().generateKeyEvent(key_name, 0.3);
- ret = etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+ ASSERT_TRUE(ei);
etRunner::get().ev.elm_win = NULL;
etRunner::get().ev.native_win = 0;
TEST_F(etTestInput, keygrab_win_excl)
{
+ std::shared_ptr<eventItem> ei = NULL;
Eina_Bool ret = EINA_FALSE;
tw_excl = initNormalWin("TCWin_ExclGrab", EINA_FALSE);
ASSERT_TRUE(ret);
etRunner::get().generateKeyEvent(key_name, 0.3);
- ret = etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+ ASSERT_TRUE(ei);
etRunner::get().ev.elm_win = NULL;
etRunner::get().ev.native_win = 0;
TEST_F(etTestInput, keygrab_win_topposition)
{
+ std::shared_ptr<eventItem> ei = NULL;
Eina_Bool ret = EINA_FALSE;
tw_topposition = initNormalWin("TCWin_ToppositionGrab", EINA_TRUE);
etRunner::get().ev.native_win = tw_topposition->native_win;
etRunner::get().generateKeyEvent(key_name, 0.3);
- ret = etRunner::get().waitEvent(tw_topposition, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(tw_topposition, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+ ASSERT_TRUE(ei);
etRunner::get().ev.elm_win = NULL;
etRunner::get().ev.native_win = 0;
TEST_F(etTestInput, keygrab_win)
{
+ std::shared_ptr<eventItem> ei = NULL;
Eina_Bool ret = EINA_FALSE;
tw_shared = initNormalWin("TCWin_SharedGrab", EINA_FALSE);
etRunner::get().ev.native_win = tw_excl->native_win;
etRunner::get().generateKeyEvent(key_name, 0.3);
- ret = etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(tw_excl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+ ASSERT_TRUE(ei != NULL);
evas_object_key_ungrab(tw_excl->elm_win, "XF86Menu", 0, 0);
ret = elm_win_keygrab_unset(tw_excl->elm_win, "XF86Menu", 0, 0);
etRunner::get().ev.native_win = tw_orexcl->native_win;
etRunner::get().generateKeyEvent(key_name, 0.3);
- ret = etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(tw_orexcl, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+ ASSERT_TRUE(ei != NULL);
evas_object_key_ungrab(tw_orexcl->elm_win, "XF86Menu", 0, 0);
ret = elm_win_keygrab_unset(tw_orexcl->elm_win, "XF86Menu", 0, 0);
etRunner::get().ev.native_win = tw_topposition->native_win;
etRunner::get().generateKeyEvent(key_name, 0.3);
- ret = etRunner::get().waitEvent(tw_topposition, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(tw_topposition, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+ ASSERT_TRUE(ei != NULL);
evas_object_key_ungrab(tw_topposition->elm_win, "XF86Menu", 0, 0);
ret = elm_win_keygrab_unset(tw_topposition->elm_win, "XF86Menu", 0, 0);
etRunner::get().ev.native_win = tw_shared->native_win;
etRunner::get().generateKeyEvent(key_name, 0.3);
- ret = etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(tw_shared, E_TC_EVENT_TYPE_INPUT_EVAS_KEY);
+ ASSERT_TRUE(ei != NULL);
evas_object_key_ungrab(tw_shared->elm_win, "XF86Menu", 0, 0);
ret = elm_win_keygrab_unset(tw_shared->elm_win, "XF86Menu", 0, 0);
TEST_F(etTestInput, gesture_tap22)
{
+ std::shared_ptr<eventItem> ei = NULL;
int ret = EFL_UTIL_ERROR_NONE;
efl_util_gesture_h gesture_h = etRunner::get().getGestureHandler();
efl_util_gesture_data tap_d;
etRunner::get().ev.gesture.tap.repeats = 2;
etRunner::get().generateTapGesture();
- ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_TAP);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_TAP);
+ ASSERT_TRUE(ei != NULL);
etRunner::get().ev.gesture.tap.fingers = 0;
etRunner::get().ev.gesture.tap.repeats = 0;
TEST_F(etTestInput, gesture_tap23)
{
+ std::shared_ptr<eventItem> ei = NULL;
int ret = EFL_UTIL_ERROR_NONE;
efl_util_gesture_h gesture_h = etRunner::get().getGestureHandler();
efl_util_gesture_data tap_d;
etRunner::get().ev.gesture.tap.repeats = 3;
etRunner::get().generateTapGesture();
- ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_TAP);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_TAP);
+ ASSERT_TRUE(ei != NULL);
etRunner::get().ev.gesture.tap.fingers = 0;
etRunner::get().ev.gesture.tap.repeats = 0;
static void
_test_gesture_edge_swipe(int fingers, efl_util_gesture_edge_e edge)
{
+ std::shared_ptr<eventItem> ei = NULL;
int ret = EFL_UTIL_ERROR_NONE;
efl_util_gesture_h gesture_h = etRunner::get().getGestureHandler();
efl_util_gesture_data edge_swipe_d;
etRunner::get().ev.gesture.edge.edge = edge;
etRunner::get().generateEdgeSwipeGesture();
- ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_EDGE_SWIPE);
+ ASSERT_TRUE(ei != NULL);
etRunner::get().ev.gesture.edge.fingers = 0;
etRunner::get().ev.gesture.edge.edge = EFL_UTIL_GESTURE_EDGE_NONE;;
static void
_test_gesture_edge_drag(int fingers, efl_util_gesture_edge_e edge)
{
+ std::shared_ptr<eventItem> ei = NULL;
int ret = EFL_UTIL_ERROR_NONE;
efl_util_gesture_h gesture_h = etRunner::get().getGestureHandler();
efl_util_gesture_data edge_drag_d;
etRunner::get().ev.gesture.edge.edge = edge;
etRunner::get().generateEdgeDragGesture();
- ret = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG);
- ASSERT_TRUE(ret);
+ ei = etRunner::get().waitEvent(NULL, E_TC_EVENT_TYPE_GESTURE_EDGE_DRAG);
+ ASSERT_TRUE(ei != NULL);
etRunner::get().ev.gesture.edge.fingers = 0;
etRunner::get().ev.gesture.edge.edge = EFL_UTIL_GESTURE_EDGE_NONE;;
TEST_F(etTestEffect, effect_show)
{
+ std::shared_ptr<eventItem> ei = NULL;
Eina_Bool res = EINA_FALSE;
initTC();
showTCWin(tw);
- res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT);
- ASSERT_TRUE(res);
+ ei = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT);
+ ASSERT_TRUE(ei != NULL);
return;
}
TEST_F(etTestEffect, effect_show_evas_callback)
{
+ std::shared_ptr<eventItem> ei = NULL;
Eina_Bool res = EINA_FALSE;
initTC();
showTCWin(tw);
- res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT_EVAS_CB);
- ASSERT_TRUE(res);
+ ei = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT_EVAS_CB);
+ ASSERT_TRUE(ei != NULL);
return;
}
TEST_F(etTestEffect, effect_hide_bylower)
{
+ std::shared_ptr<eventItem> ei = NULL;
Eina_Bool res = EINA_FALSE;
initTC();
res = etRunner::get().setWinEffect(tw);
ASSERT_TRUE(res);
elm_win_lower(tw->elm_win);
- res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT);
- ASSERT_TRUE(res);
+ ei = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT);
+ ASSERT_TRUE(ei != NULL);
return;
}
TEST_F(etTestEffect, effect_hide_byunmap)
{
+ std::shared_ptr<eventItem> ei = NULL;
Eina_Bool res = EINA_FALSE;
initTC();
res = etRunner::get().setWinEffect(tw);
ASSERT_TRUE(res);
tw->hide();
- res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT);
- ASSERT_TRUE(res);
+ ei = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT);
+ ASSERT_TRUE(ei != NULL);
return;
}
TEST_F(etTestEffect, effect_bg)
{
+ std::shared_ptr<eventItem> ei = NULL;
Eina_Bool res = EINA_FALSE;
initTC();
ASSERT_TRUE(res);
//show upper window
showTCWin(tw_green);
- res = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT);
- ASSERT_TRUE(res);
+ ei = etRunner::get().waitEvent(tw, E_TC_EVENT_TYPE_EFFECT);
+ ASSERT_TRUE(ei != NULL);
return;
}