Add ttrace 90/59190/2
authorJengHyun Kang <jhyuni.kang@samsung.com>
Thu, 11 Feb 2016 08:51:44 +0000 (17:51 +0900)
committerJengHyun Kang <jhyuni.kang@samsung.com>
Thu, 11 Feb 2016 11:05:51 +0000 (20:05 +0900)
Change-Id: Ideac4e21aca75d1880f228654897eab4a14d9679

configure.ac
packaging/e-mod-tizen-keyrouter.spec
src/Makefile.am
src/e_mod_keyrouter_events.c
src/e_mod_main_wl.c
src/e_mod_main_wl.h

index a037236..ee80894 100644 (file)
@@ -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
index 8bc18f8..8064a36 100644 (file)
@@ -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)
index 8a315fb..01abdbd 100644 (file)
@@ -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
index 797d52a..02609d3 100644 (file)
@@ -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;
 }
 
index c75649c..f8edad7 100644 (file)
@@ -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;
 }
 
index c0bc197..6e4f9c5 100644 (file)
@@ -9,6 +9,16 @@
 #include <cynara-creds-socket.h>
 #endif
 
+#ifdef ENABLE_TTRACE
+#include <ttrace.h>
+
+#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;