static int e_info_dump_mark;
static int e_info_dump_mark_count;
static int e_info_dump_remote_surface = 0;
+static int e_info_dump_server_or_client = 0; // 1: server 2: client
+static uint64_t e_info_dump_win_id = 0;
//FILE pointer for protocol_trace
static FILE *log_fp_ptrace = NULL;
}
}
+ if ((e_info_dump_win_id) && (e_info_dump_win_id != e_client_util_win_get(ec)))
+ return ECORE_CALLBACK_PASS_ON;
+
buffer = e_pixmap_resource_get(ec->pixmap);
if (!buffer) return ECORE_CALLBACK_PASS_ON;
Eldbus_Message *reply;
int start = 0;
int count = 0;
- const char *path = NULL;
+ const char *path = NULL, *win_id_s = NULL;
+ unsigned long tmp = 0;
double scale;
- int ret = 0;
+ Eina_Bool ret;
- if (!eldbus_message_arguments_get(msg, "iisdi", &start, &count, &path, &scale, &e_info_dump_mark))
+ if (!eldbus_message_arguments_get(msg, "iisdis", &start, &count, &path, &scale, &e_info_dump_mark, &win_id_s))
{
return eldbus_message_error_new(msg, GET_CALL_MSG_ARG_ERR,
"dump_buffers: an attempt to get arguments from method call message failed");
{
if (e_info_dump_running == 1)
{
- eldbus_message_arguments_append(reply, "is", ret, (e_info_dump_path ?: "nopath"));
+ eldbus_message_arguments_append(reply, "is", 0, (e_info_dump_path ?: "nopath"));
return reply;
}
+
+ if (e_util_strcmp(win_id_s, ""))
+ {
+ if (!e_util_strcmp(win_id_s, "server"))
+ e_info_dump_server_or_client = 1;
+ else if (!e_util_strcmp(win_id_s, "client"))
+ e_info_dump_server_or_client = 2;
+ else
+ {
+ if (strlen(win_id_s) >= 2 && win_id_s[0] == '0' && win_id_s[1] == 'x')
+ ret = e_util_string_to_ulong(win_id_s, &tmp, 16);
+ else
+ ret = e_util_string_to_ulong(win_id_s, &tmp, 10);
+ if (!ret)
+ {
+ eldbus_message_arguments_append(reply, "is", -1, (e_info_dump_path ?: "nopath"));
+ return reply;
+ }
+
+ e_info_dump_server_or_client = 2;
+ e_info_dump_win_id = (uint64_t)tmp;
+ }
+ }
+
e_info_dump_running = 1;
e_info_dump_mark_count = 0;
e_info_dump_count = 1;
e_info_dump_path = _e_info_server_dump_directory_make(path);
+
if (e_info_dump_path == NULL)
{
e_info_dump_running = 0;
e_info_dump_count = 0;
+ e_info_dump_win_id = 0;
+ e_info_dump_server_or_client = 0;
ERR("dump_buffers start fail\n");
- ret = -1;
+ eldbus_message_arguments_append(reply, "is", -1, (e_info_dump_path ?: "nopath"));
+ return reply;
}
+
+ /* start dump */
+ if (scale > 0.0)
+ tbm_surface_internal_dump_with_scale_start(e_info_dump_path,
+ e_comp->w,
+ e_comp->h,
+ count, scale);
else
+ tbm_surface_internal_dump_start(e_info_dump_path, e_comp->w, e_comp->h, count);
+
+ if (e_info_dump_server_or_client != 2)
{
- /* start dump */
- if (scale > 0.0)
- tbm_surface_internal_dump_with_scale_start(e_info_dump_path,
- e_comp->w,
- e_comp->h,
- count, scale);
- else
- tbm_surface_internal_dump_start(e_info_dump_path, e_comp->w, e_comp->h, count);
tdm_helper_dump_start(e_info_dump_path, &e_info_dump_count);
e_hwc_windows_debug_dump_start();
+ }
+
+ if (e_info_dump_server_or_client != 1)
+ {
E_LIST_HANDLER_APPEND(e_info_dump_hdlrs, E_EVENT_CLIENT_BUFFER_CHANGE,
- _e_info_server_cb_buffer_change, NULL);
+ _e_info_server_cb_buffer_change, NULL);
}
- eldbus_message_arguments_append(reply, "is", ret, (e_info_dump_path ?: "nopath"));
+
+ eldbus_message_arguments_append(reply, "is", 0, (e_info_dump_path ?: "nopath"));
}
else
{
if (e_info_dump_running == 0)
{
- eldbus_message_arguments_append(reply, "is", ret, (e_info_dump_path ?: "nopath"));
+ eldbus_message_arguments_append(reply, "is", 0, (e_info_dump_path ?: "nopath"));
return reply;
}
+
e_info_server_hook_call(E_INFO_SERVER_HOOK_BUFFER_DUMP_BEGIN);
tdm_helper_dump_stop();
e_hwc_windows_debug_dump_stop();
tbm_surface_internal_dump_end();
- eldbus_message_arguments_append(reply, "is", ret, (e_info_dump_path ?: "nopath"));
+ eldbus_message_arguments_append(reply, "is", 0, (e_info_dump_path ?: "nopath"));
E_FREE_LIST(e_info_dump_hdlrs, ecore_event_handler_del);
e_info_dump_hdlrs = NULL;
e_info_dump_count = 0;
e_info_dump_running = 0;
e_info_dump_mark_count = 0;
+ e_info_dump_server_or_client = 0;
+ e_info_dump_win_id = 0;
e_info_server_hook_call(E_INFO_SERVER_HOOK_BUFFER_DUMP_END);
}
{ "bgcolor_set", ELDBUS_ARGS({"iiii", "bgcolor_set"}), NULL, _e_info_server_cb_bgcolor_set, 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", "dump_buffers"}), ELDBUS_ARGS({"is", "dump_buffers reply"}), _e_info_server_cb_buffer_dump, 0 },
+ { "dump_buffers", ELDBUS_ARGS({"iisdis", "dump_buffers"}), ELDBUS_ARGS({"is", "dump_buffers reply"}), _e_info_server_cb_buffer_dump, 0 },
{ "dump_selected_buffers", ELDBUS_ARGS({"ss", "dump_selected_buffers"}), ELDBUS_ARGS({"s", "result of dump"}), _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 },