e_info: print dump buffers directory name 55/189555/2
authorJunkyeong Kim <jk0430.kim@samsung.com>
Tue, 18 Sep 2018 08:20:18 +0000 (17:20 +0900)
committerJuyeon Lee <juyeonne.lee@samsung.com>
Wed, 19 Sep 2018 10:05:04 +0000 (19:05 +0900)
Change-Id: I2462f3f18783156d8be777a04d564ecb92bec255
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/bin/e_info_client.c
src/bin/e_info_server.c

index 88f24049ff5457131940630de9ce0445bca971c0..ea0f202e2c97b1f3a3583bfbe05e371a06e25074 100644 (file)
@@ -31,6 +31,10 @@ typedef struct _E_Info_Client
 
    /* layer fps */
    Eina_List         *layer_fps_list;
+
+   /* dump_buffers */
+   const char *dump_fullpath;
+   Eina_Bool dump_success;
 } E_Info_Client;
 
 typedef struct _E_Win_Info
@@ -2364,6 +2368,31 @@ arg_err:
    printf("Usage: enlightenment_info -desk\n");
 }
 
+static void
+_cb_buffer_shot(const Eldbus_Message *msg)
+{
+   const char *name = NULL, *text = NULL;
+   char *fullpath = NULL;
+   int error = 0;
+   Eina_Bool res;
+
+   res = eldbus_message_error_get(msg, &name, &text);
+   EINA_SAFETY_ON_TRUE_GOTO(res, finish);
+
+   res = eldbus_message_arguments_get(msg, "is", &error, &fullpath);
+   EINA_SAFETY_ON_FALSE_GOTO(res, finish);
+
+   if (strcmp(fullpath, "nopath") && !e_info_client.dump_fullpath)
+     e_info_client.dump_fullpath = eina_stringshare_add(fullpath);
+   e_info_client.dump_success = error;
+
+finish:
+   if ((name) || (text))
+     {
+        printf("errname:%s errmsg:%s\n", name, text);
+     }
+}
+
 static void
 _e_info_client_proc_buffer_shot(int argc, char **argv)
 {
@@ -2443,20 +2472,30 @@ _e_info_client_proc_buffer_shot(int argc, char **argv)
           goto err;
      }
 
-   if (!_e_info_client_eldbus_message_with_args("dump_buffers", NULL, "iisdi",
+   if (!_e_info_client_eldbus_message_with_args("dump_buffers", _cb_buffer_shot, "iisdi",
                                                 dumprun, count, path, scale, mark))
      {
-        printf("_e_info_client_proc_buffer_shot fail (%d)\n", dumprun);
+        printf("dump_buffers fail (%d)\n", dumprun);
         return;
      }
 
-   printf("_e_info_client_proc_buffer_shot %s\n", (dumprun == 1 ? "start" : "stop"));
+   printf("dump_buffers %s %s.\n",
+          (dumprun == 1 ? "start" : "stop"), (e_info_client.dump_success == 0 ? "success" : "fail"));
+
+   if (e_info_client.dump_fullpath)
+     {
+        if (dumprun == 0 && e_info_client.dump_success == 0 && e_info_client.dump_fullpath)
+          printf("saved : %s\n", e_info_client.dump_fullpath);
+
+        eina_stringshare_del(e_info_client.dump_fullpath);
+        e_info_client.dump_fullpath = NULL;
+     }
 
    return;
 
 err:
    printf("Error Check Args\n%s\n", DUMP_BUFFERS_USAGE);
-return;
+   return;
 }
 
 static void
index 30314adac6bad8c4567ef8791b5417e493ce1777..9771c6dabd3a123e6edc20d848ff78666b79d188 100644 (file)
@@ -3454,6 +3454,7 @@ e_info_server_cb_slot_message(const Eldbus_Service_Interface *iface EINA_UNUSED,
      {
         E_Zone *zone = e_zone_current_get();
         E_Desk *desk = e_desk_current_get(zone);
+        if (!desk) continue;
         if (start_split) evas_object_raise(desk->layout);
         else evas_object_lower(desk->layout);
         //evas_object_show(desk->layout);
@@ -3678,22 +3679,28 @@ _e_info_server_dump_directory_make(const char *path)
 static Eldbus_Message *
 _e_info_server_cb_buffer_dump(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
 {
-   Eldbus_Message *reply = eldbus_message_method_return_new(msg);
+   Eldbus_Message *reply;
    int start = 0;
    int count = 0;
    const char *path = NULL;
    double scale;
+   int ret = 0;
 
    if (!eldbus_message_arguments_get(msg, "iisdi", &start, &count, &path, &scale, &e_info_dump_mark))
      {
-        ERR("Error getting arguments.");
-        return reply;
+        return eldbus_message_error_new(msg, GET_CALL_MSG_ARG_ERR,
+                                        "dump_buffers: an attempt to get arguments from method call message failed");
      }
 
+   reply = eldbus_message_method_return_new(msg);
+
    if (start == 1)
      {
         if (e_info_dump_running == 1)
-          return reply;
+          {
+             eldbus_message_arguments_append(reply, "is", ret, (e_info_dump_path ?: "nopath"));
+             return reply;
+          }
         e_info_dump_running = 1;
         e_info_dump_mark_count = 0;
         e_info_dump_count = 1;
@@ -3703,6 +3710,7 @@ _e_info_server_cb_buffer_dump(const Eldbus_Service_Interface *iface EINA_UNUSED,
              e_info_dump_running = 0;
              e_info_dump_count = 0;
              ERR("dump_buffers start fail\n");
+             ret = -1;
           }
         else
           {
@@ -3718,16 +3726,21 @@ _e_info_server_cb_buffer_dump(const Eldbus_Service_Interface *iface EINA_UNUSED,
              E_LIST_HANDLER_APPEND(e_info_dump_hdlrs, E_EVENT_CLIENT_BUFFER_CHANGE,
                                _e_info_server_cb_buffer_change, NULL);
           }
+          eldbus_message_arguments_append(reply, "is", ret, (e_info_dump_path ?: "nopath"));
      }
    else
      {
         if (e_info_dump_running == 0)
-          return reply;
-
+          {
+             eldbus_message_arguments_append(reply, "is", ret, (e_info_dump_path ?: "nopath"));
+             return reply;
+          }
         e_info_server_hook_call(E_INFO_SERVER_HOOK_BUFFER_DUMP_BEGIN);
         tdm_helper_dump_stop();
         tbm_surface_internal_dump_end();
 
+        eldbus_message_arguments_append(reply, "is", ret, (e_info_dump_path ?: "nopath"));
+
         E_FREE_LIST(e_info_dump_hdlrs, ecore_event_handler_del);
         e_info_dump_hdlrs = NULL;
         if (e_info_dump_path)
@@ -5211,7 +5224,7 @@ static const Eldbus_Method methods[] = {
    { "protocol_rule", ELDBUS_ARGS({"sss", "protocol_rule"}), ELDBUS_ARGS({"s", "rule request"}), _e_info_server_cb_protocol_rule, 0},
    { "punch", ELDBUS_ARGS({"iiiiiiiii", "punch_geometry"}), NULL, _e_info_server_cb_punch, 0},
    { "transform_message", ELDBUS_ARGS({"siiiiiiii", "transform_message"}), NULL, e_info_server_cb_transform_message, 0},
-   { "dump_buffers", ELDBUS_ARGS({"iisdi", "start"}), NULL, _e_info_server_cb_buffer_dump, 0 },
+   { "dump_buffers", ELDBUS_ARGS({"iisdi", "dump_buffers"}), ELDBUS_ARGS({"is", "dump_buffers reply"}), _e_info_server_cb_buffer_dump, 0 },
    { "dump_selected_buffers", ELDBUS_ARGS({"ss", "dump_selected_buffers"}), NULL, _e_info_server_cb_selected_buffer_dump, 0 },
    { "dump_screen", ELDBUS_ARGS({"s", "dump_screen"}), NULL, _e_info_server_cb_screen_dump, 0 },
    { "output_mode", ELDBUS_ARGS({SIGNATURE_OUTPUT_MODE_CLIENT, "output mode"}), ELDBUS_ARGS({"a("SIGNATURE_OUTPUT_MODE_SERVER")", "array of ec"}), _e_info_server_cb_output_mode, 0 },