ehw_trace = onoff;
INF("EHW: hwc trace_debug is %s", onoff?"ON":"OFF");
}
+
+EINTERN void
+e_hwc_window_commit_data_buffer_dump(E_Hwc_Window *hwc_window)
+{
+ char fname[64];
+
+ EINA_SAFETY_ON_FALSE_RETURN(hwc_window);
+
+ if (!hwc_window->commit_data) return;
+ if (!hwc_window->commit_data->buffer.tsurface) return;
+
+ if (hwc_window->is_target)
+ snprintf(fname, sizeof(fname), "hwc_commit_composite_%p",
+ hwc_window);
+ else
+ snprintf(fname, sizeof(fname), "hwc_commit_0x%08x_%p",
+ e_client_util_win_get(hwc_window->ec), hwc_window);
+
+ tbm_surface_internal_dump_buffer(hwc_window->commit_data->buffer.tsurface,
+ fname);
+}
EINTERN void e_hwc_window_hook_del(E_Hwc_Window_Hook *ch);
EINTERN void e_hwc_window_trace_debug(Eina_Bool onoff);
+EINTERN void e_hwc_window_commit_data_buffer_dump(E_Hwc_Window *hwc_window);
#endif // E_HWC_WINDOW_H
#endif
while (0)
static Eina_Bool ehws_trace = EINA_TRUE;
+static Eina_Bool ehws_dump_enable = EINA_FALSE;
static uint64_t ehws_rendered_windows_key;
#define EHWS_RENDERED_WINDOWS_KEY (unsigned long)(&ehws_rendered_windows_key)
{
if (!e_hwc_window_commit_data_acquire(hwc_window)) continue;
+ if (ehws_dump_enable)
+ e_hwc_window_commit_data_buffer_dump(hwc_window);
+
/* send frame event enlightenment doesn't send frame event in nocomp */
if (hwc_window->ec)
e_pixmap_image_clear(hwc_window->ec->pixmap, 1);
e_hwc_window_queue_trace_debug(onoff);
INF("EHWS: hwc trace_debug is %s", onoff?"ON":"OFF");
}
+
+EINTERN void
+e_hwc_windows_dump_start(void)
+{
+ if (ehws_dump_enable) return;
+
+ ehws_dump_enable = EINA_TRUE;
+}
+
+EINTERN void
+e_hwc_windows_dump_stop(void)
+{
+ if (!ehws_dump_enable) return;
+
+ ehws_dump_enable = EINA_FALSE;
+}
EINTERN Eina_Bool e_hwc_windows_fps_get(E_Hwc *hwc, double *fps);
EINTERN void e_hwc_windows_trace_debug(Eina_Bool onoff);
+EINTERN void e_hwc_windows_dump_start(void);
+EINTERN void e_hwc_windows_dump_stop(void);
#endif
#endif
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_dump_start();
E_LIST_HANDLER_APPEND(e_info_dump_hdlrs, E_EVENT_CLIENT_BUFFER_CHANGE,
_e_info_server_cb_buffer_change, NULL);
}
}
e_info_server_hook_call(E_INFO_SERVER_HOOK_BUFFER_DUMP_BEGIN);
tdm_helper_dump_stop();
+ e_hwc_windows_dump_stop();
tbm_surface_internal_dump_end();
eldbus_message_arguments_append(reply, "is", ret, (e_info_dump_path ?: "nopath"));