From: JengHyun Kang Date: Thu, 11 Feb 2016 08:51:44 +0000 (+0900) Subject: Add ttrace X-Git-Tag: submit/tizen/20160215.063919~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f2fba7f3543f683aad281d778bc00e55e7167c60;p=platform%2Fcore%2Fuifw%2Fe-mod-tizen-keyrouter.git Add ttrace Change-Id: Ideac4e21aca75d1880f228654897eab4a14d9679 --- diff --git a/configure.ac b/configure.ac index a037236..ee80894 100644 --- a/configure.ac +++ b/configure.ac @@ -91,6 +91,14 @@ AC_SUBST(ENLIGHTENMENT_LIBS) #AC_MSG_CHECKING([Which edje_cc to use]) #AC_MSG_RESULT(${EDJE_CC}) +# Checks for ttrace header files +PKG_CHECK_MODULES(TTRACE, + [ttrace], + [have_ttrace="yes"], [have_ttrace="no"]) + +if test "x$have_ttrace" = "xyes"; then + AC_DEFINE(ENABLE_TTRACE, 1, [ttrace available]) +fi dnl ======================================================================== # checks for wayland only argument diff --git a/packaging/e-mod-tizen-keyrouter.spec b/packaging/e-mod-tizen-keyrouter.spec index 8bc18f8..8064a36 100644 --- a/packaging/e-mod-tizen-keyrouter.spec +++ b/packaging/e-mod-tizen-keyrouter.spec @@ -11,6 +11,7 @@ Source0: %{name}-%{version}.tar.gz License: BSD-2-Clause BuildRequires: pkgconfig(enlightenment) BuildRequires: gettext +BuildRequires: pkgconfig(ttrace) %if %{with x} BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xi) diff --git a/src/Makefile.am b/src/Makefile.am index 8a315fb..01abdbd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -11,8 +11,8 @@ module_la_SOURCES = e_mod_main_wl.c \ e_mod_keyrouter_list.c \ e_mod_keyrouter_events.c \ e_mod_keyrouter_conf.c -module_la_CFLAGS = @ENLIGHTENMENT_CFLAGS@ @WAYLAND_CFLAGS@ -DHAVE_WAYLAND_ONLY @CYNARA_CFLAGS@ -module_la_LDFLAGS = -module -avoid-version @WAYLAND_LIBS@ @ENLIGHTENMENT_LIBS@ @CYNARA_LIBS@ +module_la_CFLAGS = @ENLIGHTENMENT_CFLAGS@ @WAYLAND_CFLAGS@ -DHAVE_WAYLAND_ONLY @CYNARA_CFLAGS@ @TTRACE_CFLAGS@ +module_la_LDFLAGS = -module -avoid-version @WAYLAND_LIBS@ @ENLIGHTENMENT_LIBS@ @CYNARA_LIBS@ @TTRACE_LIBS@ else module_la_SOURCES = e_mod_main.c \ e_mod_main.h diff --git a/src/e_mod_keyrouter_events.c b/src/e_mod_keyrouter_events.c index 797d52a..02609d3 100644 --- a/src/e_mod_keyrouter_events.c +++ b/src/e_mod_keyrouter_events.c @@ -39,26 +39,28 @@ e_keyrouter_process_key_event(void *event, int type) Eina_Bool res = EINA_TRUE; Ecore_Event_Key *ev = event; - if (!ev) return res; + TRACE_BEGIN(e_keyrouter_process_key_event); + + if (!ev) goto finish; KLDBG("[%s] keyname: %s, key: %s, keycode: %d\n", (type == ECORE_EVENT_KEY_DOWN) ? "KEY_PRESS" : "KEY_RELEASE", ev->keyname, ev->key, ev->keycode); if (krt->max_tizen_hwkeys < ev->keycode) { KLWRN("The key(%d) is too larger to process keyrouting: Invalid keycode\n", ev->keycode); - return res; + goto finish; } if ((ECORE_EVENT_KEY_DOWN == type) && (!_e_keyrouter_is_key_grabbed(ev->keycode))) { KLDBG("The press key(%d) isn't a grabbable key or has not been grabbed yet !\n", ev->keycode); - return res; + goto finish; } if ((ECORE_EVENT_KEY_UP == type) && (!krt->HardKeys[ev->keycode].press_ptr)) { KLDBG("The release key(%d) isn't a grabbable key or has not been grabbed yet !\n", ev->keycode); - return res; + goto finish; } //KLDBG("The key(%d) is going to be sent to the proper wl client(s) !\n", ev->keycode); @@ -66,6 +68,8 @@ e_keyrouter_process_key_event(void *event, int type) if (_e_keyrouter_send_key_events(type, ev)) res = EINA_FALSE; +finish: + TRACE_END(); return res; } @@ -95,10 +99,12 @@ _e_keyrouter_send_key_events_release(int type, Ecore_Event_Key *ev) { if (key_node_data) { + TRACE_BEGIN(_e_keyrouter_send_key_event_release); _e_keyrouter_send_key_event(type, key_node_data->surface, key_node_data->wc, ev); KLINF("Release Pair : Key %s(%s:%d) ===> E_Client (%p) WL_Client (%p)\n", ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, key_node_data->surface, key_node_data->wc); E_FREE(key_node_data); + TRACE_END(); } } krt->HardKeys[ev->keycode].press_ptr = NULL; @@ -120,10 +126,13 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev) { if (key_node_data) { + TRACE_BEGIN(_e_keyrouter_send_key_event_exclusive); + _e_keyrouter_send_key_event(type, key_node_data->surface, key_node_data->wc, ev); KLINF("EXCLUSIVE Mode : Key %s(%s:%d) ===> Surface (%p) WL_Client (%p)\n", ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, key_node_data->surface, key_node_data->wc); + TRACE_END(); return EINA_TRUE; } } @@ -132,10 +141,12 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev) { if (key_node_data) { + TRACE_BEGIN(_e_keyrouter_send_key_event_or_exclusive); _e_keyrouter_send_key_event(type, key_node_data->surface, key_node_data->wc, ev); KLINF("OVERRIDABLE_EXCLUSIVE Mode : Key %s(%s:%d) ===> Surface (%p) WL_Client (%p)\n", ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, key_node_data->surface, key_node_data->wc); + TRACE_END(); return EINA_TRUE; } } @@ -152,20 +163,24 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev) { if ((EINA_FALSE == krt->isWindowStackChanged) && (surface_focus == key_node_data->surface)) { + TRACE_BEGIN(_e_keyrouter_send_key_event_topposition); _e_keyrouter_send_key_event(type, key_node_data->surface, NULL, ev); KLINF("TOPMOST (TOP_POSITION) Mode : Key %s (%s:%d) ===> Surface (%p)\n", ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, key_node_data->surface); + TRACE_END(); return EINA_TRUE; } krt->isWindowStackChanged = EINA_FALSE; if (_e_keyrouter_check_top_visible_window(ec_focus, keycode)) { + TRACE_BEGIN(_e_keyrouter_send_key_event_topposition); _e_keyrouter_send_key_event(type, key_node_data->surface, NULL, ev); KLINF("TOPMOST (TOP_POSITION) Mode : Key %s (%s:%d) ===> Surface (%p)\n", ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode,key_node_data->surface); + TRACE_END(); return EINA_TRUE; } break; @@ -187,18 +202,22 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev) { if (key_node_data->surface != surface_focus) { + TRACE_BEGIN(_e_keyrouter_send_key_event_shared); _e_keyrouter_send_key_event(type, key_node_data->surface, key_node_data->wc, ev); KLINF("SHARED Mode : Key %s(%s:%d) ===> Surface (%p) WL_Client (%p)\n", ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, key_node_data->surface, key_node_data->wc); + TRACE_END(); } } else { if ((surface_focus) && (key_node_data->wc != wl_resource_get_client(surface_focus))) { + TRACE_BEGIN(_e_keyrouter_send_key_event_shared); _e_keyrouter_send_key_event(type, key_node_data->surface, key_node_data->wc, ev); KLINF("SHARED Mode : Key %s(%s:%d) ===> Surface (%p) WL_Client (%p)\n", ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, key_node_data->surface, key_node_data->wc); + TRACE_END(); } } } @@ -226,10 +245,14 @@ _e_keyrouter_send_key_events_register(int type, Ecore_Event_Key *ev) return EINA_FALSE; } + TRACE_BEGIN(_e_keyrouter_send_key_event_register); + _e_keyrouter_send_key_event(type, krt->HardKeys[keycode].registered_ptr->surface, NULL, ev); KLINF("REGISTER Mode : Key %s(%s:%d) ===> Surface (%p)\n", ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, krt->HardKeys[keycode].registered_ptr->surface); + TRACE_END(); + return EINA_TRUE; } diff --git a/src/e_mod_main_wl.c b/src/e_mod_main_wl.c index c75649c..f8edad7 100644 --- a/src/e_mod_main_wl.c +++ b/src/e_mod_main_wl.c @@ -140,10 +140,12 @@ _e_keyrouter_cb_keygrab_set(struct wl_client *client, struct wl_resource *resour { int res = 0; + TRACE_BEGIN(_e_keyrouter_cb_keygrab_set); KLINF("Key grab request (client: %p, surface: %p, key:%d, mode:%d)\n", client, surface, key, mode); res = _e_keyrouter_keygrab_set(client, surface, key, mode); + TRACE_END(); tizen_keyrouter_send_keygrab_notify(resource, surface, key, mode, res); } @@ -153,10 +155,12 @@ _e_keyrouter_cb_keygrab_unset(struct wl_client *client, struct wl_resource *reso { int res = 0; + TRACE_BEGIN(_e_keyrouter_cb_keygrab_unset); KLINF("Key ungrab request (client: %p, surface: %p, key:%d)\n", client, surface, key); res = _e_keyrouter_keygrab_unset(client, surface, key); + TRACE_END(); tizen_keyrouter_send_keygrab_notify(resource, surface, key, TIZEN_KEYROUTER_MODE_NONE, res); } @@ -170,8 +174,10 @@ _e_keyrouter_cb_get_keygrab_status(struct wl_client *client, struct wl_resource (void) key; int mode = TIZEN_KEYROUTER_MODE_NONE; + TRACE_BEGIN(_e_keyrouter_cb_get_keygrab_status); mode = e_keyrouter_find_key_in_list(surface, client, key); + TRACE_END(); tizen_keyrouter_send_keygrab_notify(resource, surface, key, mode, TIZEN_KEYROUTER_ERROR_NONE); } @@ -183,6 +189,8 @@ _e_keyrouter_cb_keygrab_set_list(struct wl_client *client, struct wl_resource *r E_Keyrouter_Grab_Request *grab_request = NULL; int res = TIZEN_KEYROUTER_ERROR_NONE; + TRACE_BEGIN(_e_keyrouter_cb_keygrab_set_list); + wl_array_init(&grab_result_list); if (0 != (_e_keyrouter_wl_array_length(grab_list) % 2)) @@ -210,6 +218,7 @@ _e_keyrouter_cb_keygrab_set_list(struct wl_client *client, struct wl_resource *r } send_notify: + TRACE_END(); tizen_keyrouter_send_keygrab_notify_list(resource, surface, &grab_result_list); wl_array_release(&grab_result_list); } @@ -222,6 +231,8 @@ _e_keyrouter_cb_keygrab_unset_list(struct wl_client *client, struct wl_resource int *ungrab_request = NULL; int res = TIZEN_KEYROUTER_ERROR_NONE; + TRACE_BEGIN(_e_keyrouter_cb_keygrab_unset_list); + wl_array_init(&grab_result_list); wl_array_for_each(ungrab_request, ungrab_list) @@ -237,6 +248,7 @@ _e_keyrouter_cb_keygrab_unset_list(struct wl_client *client, struct wl_resource } } + TRACE_END(); tizen_keyrouter_send_keygrab_notify_list(resource, surface, &grab_result_list); wl_array_release(&grab_result_list); } @@ -371,9 +383,12 @@ _e_keyrouter_init(E_Module *m) Eina_Bool res = EINA_FALSE; int ret; + TRACE_BEGIN(_e_keyrouter_init); + if (!krt) { KLERR("Failed to allocate memory for krt !\n"); + TRACE_END(); return NULL; } @@ -416,6 +431,7 @@ _e_keyrouter_init(E_Module *m) } #endif + TRACE_END(); return kconfig; err: @@ -428,6 +444,7 @@ err: if (krt && krt->ef_handler) ecore_event_filter_del(krt->ef_handler); if (krt) E_FREE(krt); + TRACE_END(); return NULL; } @@ -472,6 +489,8 @@ _e_keyrouter_query_tizen_key_table(void) Eina_List *l; E_Keyrouter_Tizen_HWKey *data; + TRACE_BEGIN(_e_keyrouter_query_tizen_key_table); + /* TODO: Make struct in HardKeys to pointer. If a key is defined, allocate memory to pointer, that makes to save unnecessary memory */ @@ -494,6 +513,8 @@ _e_keyrouter_query_tizen_key_table(void) krt->HardKeys[data->keycode].keycode = data->keycode; krt->HardKeys[data->keycode].keyname = eina_stringshare_add(data->name); } + + TRACE_END(); return EINA_TRUE; } diff --git a/src/e_mod_main_wl.h b/src/e_mod_main_wl.h index c0bc197..6e4f9c5 100644 --- a/src/e_mod_main_wl.h +++ b/src/e_mod_main_wl.h @@ -9,6 +9,16 @@ #include #endif +#ifdef ENABLE_TTRACE +#include + +#define TRACE_BEGIN(NAME) traceBegin(TTRACE_TAG_INPUT, "INPUT:KRT:"#NAME) +#define TRACE_END() traceEnd(TTRACE_TAG_INPUT) +#else +#define TRACE_BEGIN(NAME) +#define TRACE_END() +#endif + /* Temporary value of maximum number of HWKeys */ #define CHECK_ERR(val) if (TIZEN_KEYROUTER_ERROR_NONE != val) return;