e_info: add gl,hwc,evas_engine to topvwins
authorSangjin Lee <lsj119@samsung.com>
Fri, 30 Jun 2017 03:41:45 +0000 (12:41 +0900)
committerBoram Park <boram1288.park@samsung.com>
Wed, 5 Jul 2017 03:02:12 +0000 (12:02 +0900)
Change-Id: Ib3eae3aa3c82d5a75162adb99c49f1364c9c32d2

src/bin/e_info_client.c
src/bin/e_info_server.c

index f79ca8c90f76b9f98b040ab83708890deb5b11cd..ee89d006139d5eeed5299adec2d13a81ecf7682f 100644 (file)
@@ -15,6 +15,8 @@ typedef struct _E_Info_Client
    Eldbus_Object     *obj;
 
    /* topvwins */
+   int                use_gl, use_hwc, use_multi_layer, hwc;
+   const char        *engine;
    Eina_List         *win_list;
 
    Eina_List         *input_dev;
@@ -392,18 +394,11 @@ _e_win_info_free(E_Win_Info *win)
 }
 
 static void
-_cb_window_info_get(const Eldbus_Message *msg)
+_e_win_info_make_array(Eldbus_Message_Iter *array)
 {
-   const char *name = NULL, *text = NULL;
-   Eldbus_Message_Iter *array, *ec;
+   Eldbus_Message_Iter *ec;
    Eina_Bool res;
 
-   res = eldbus_message_error_get(msg, &name, &text);
-   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
-
-   res = eldbus_message_arguments_get(msg, "a("VALUE_TYPE_FOR_TOPVWINS")", &array);
-   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
-
    while (eldbus_message_iter_get_and_next(array, 'r', &ec))
      {
         const char *win_name;
@@ -445,6 +440,49 @@ _cb_window_info_get(const Eldbus_Message *msg)
         win = _e_win_info_new(id, res_id, pid, alpha, opaque, win_name, x, y, w, h, layer, visible, visibility, iconic, frame_visible, focused, hwc, pl_zpos, parent_id, layer_name);
         e_info_client.win_list = eina_list_append(e_info_client.win_list, win);
      }
+}
+
+static void
+_cb_window_info_get(const Eldbus_Message *msg)
+{
+   const char *name = NULL, *text = NULL;
+   Eldbus_Message_Iter *array;
+   Eina_Bool res;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   res = eldbus_message_arguments_get(msg, "a("VALUE_TYPE_FOR_TOPVWINS")", &array);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+
+   _e_win_info_make_array(array);
+
+finish:
+   if ((name) || (text))
+     {
+        printf("errname:%s errmsg:%s\n", name, text);
+     }
+}
+
+static void
+_cb_vwindow_info_get(const Eldbus_Message *msg)
+{
+   const char *name = NULL, *text = NULL;
+   Eldbus_Message_Iter *array;
+   char *engine;
+   Eina_Bool res;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   res = eldbus_message_arguments_get(msg, "iiiisa("VALUE_TYPE_FOR_TOPVWINS")",
+                                      &e_info_client.use_gl, &e_info_client.use_hwc, &e_info_client.use_multi_layer,
+                                      &e_info_client.hwc, &engine,
+                                      &array);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+   e_info_client.engine = eina_stringshare_add(engine);
+
+   _e_win_info_make_array(array);
 
 finish:
    if ((name) || (text))
@@ -453,6 +491,7 @@ finish:
      }
 }
 
+
 static void
 _e_info_client_cb_compobjs(const Eldbus_Message *msg)
 {
@@ -885,9 +924,17 @@ _e_info_client_proc_topvwins_info(int argc, char **argv)
 
    const char *prev_layer_name = NULL;
 
-   if (!_e_info_client_eldbus_message("get_window_info", _cb_window_info_get))
+   if (!_e_info_client_eldbus_message("get_window_info", _cb_vwindow_info_get))
      return;
 
+   printf("GL :  %s\n", e_info_client.use_gl ? "on":"off");
+   printf("ENG:  %s\n", e_info_client.engine);
+   if (e_info_client.use_hwc)
+     {
+        printf("HWC:  %s\n", e_info_client.hwc ? "on":"off");
+        printf("Multi Plane:  %s\n\n", e_info_client.use_multi_layer ? "on":"off");
+     }
+
    printf("%d Top level windows\n", eina_list_count(e_info_client.win_list));
    printf("--------------------------------------[ topvwins ]----------------------------------------------------------------------------\n");
    printf(" No   Win_ID    RcsID    PID     w     h       x      y  Foc Dep Opaq Visi Icon  Map  Frame  PL@ZPos  Parent     Title\n");
@@ -941,6 +988,11 @@ _e_info_client_proc_topvwins_info(int argc, char **argv)
      printf("\nHWC is disabled\n\n");
 
    E_FREE_LIST(e_info_client.win_list, _e_win_info_free);
+   if (e_info_client.engine)
+     {
+        eina_stringshare_del(e_info_client.engine);
+        e_info_client.engine = NULL;
+     }
 }
 
 static void
index 127fbca1ad727f4995ee036e4f77ed12b4505d3b..12f483de946d8dfe898dd207da8857ed37dc4f08 100644 (file)
@@ -296,8 +296,15 @@ static Eldbus_Message *
 _e_info_server_cb_window_info_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
 {
    Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+   Eldbus_Message_Iter *iter = eldbus_message_iter_get(reply);
+
+   eldbus_message_iter_basic_append(iter, 'i', e_comp_config_get()->engine);
+   eldbus_message_iter_basic_append(iter, 'i', e_comp_config_get()->hwc);
+   eldbus_message_iter_basic_append(iter, 'i', e_comp_config_get()->hwc_use_multi_plane);
+   eldbus_message_iter_basic_append(iter, 'i', e_comp->hwc);
+   eldbus_message_iter_basic_append(iter, 's', ecore_evas_engine_name_get(e_comp->ee));
 
-   _msg_clients_append(eldbus_message_iter_get(reply), EINA_TRUE);
+   _msg_clients_append(iter, EINA_TRUE);
 
    return reply;
 }
@@ -4853,7 +4860,7 @@ _e_info_server_cb_wininfo_shape(const Eldbus_Service_Interface *iface EINA_UNUSE
 
 //{ "method_name", arguments_from_client, return_values_to_client, _method_cb, ELDBUS_METHOD_FLAG },
 static const Eldbus_Method methods[] = {
-   { "get_window_info", NULL, ELDBUS_ARGS({"a("VALUE_TYPE_FOR_TOPVWINS")", "array of ec"}), _e_info_server_cb_window_info_get, 0 },
+   { "get_window_info", NULL, ELDBUS_ARGS({"iiiisa("VALUE_TYPE_FOR_TOPVWINS")", "array of ec"}), _e_info_server_cb_window_info_get, 0 },
    { "get_all_window_info", NULL, ELDBUS_ARGS({"a("VALUE_TYPE_FOR_TOPVWINS")", "array of ec"}), _e_info_server_cb_all_window_info_get, 0 },
    { "compobjs", NULL, ELDBUS_ARGS({"a("SIGNATURE_COMPOBJS_CLIENT")", "array of comp objs"}), _e_info_server_cb_compobjs, 0 },
    { "subsurface", NULL, ELDBUS_ARGS({"a("SIGNATURE_SUBSURFACE")", "array of ec"}), _e_info_server_cb_subsurface, 0 },