int bDlog;
#endif
+int b_dump_queue;
+
#define PREFIX_LIB "libtbm_"
#define SUFFIX_LIB ".so"
#define DEFAULT_LIB PREFIX_LIB"default"SUFFIX_LIB
}
}
+static int
+_tbm_util_get_max_surface_size(int * w, int * h)
+{
+ int count = 0;
+ tbm_surface_h surface = NULL, tmp = NULL;
+ tbm_surface_info_s info;
+
+ *w = 0;
+ *h = 0;
+
+ if (gBufMgr == NULL)
+ return count;
+
+ if (!LIST_IS_EMPTY(&gBufMgr->surf_list)) {
+ LIST_FOR_EACH_ENTRY_SAFE(surface, tmp, &gBufMgr->surf_list, item_link) {
+ if (tbm_surface_get_info(surface, &info) == TBM_SURFACE_ERROR_NONE) {
+ count++;
+ if (*w < info.width) *w = info.width;
+ if (*h < info.height) *h = info.height;
+ }
+ }
+ }
+
+ return count;
+}
+
static void
_tbm_util_get_appname_brief(char *brief)
{
#endif
}
+int
+tbm_bufmgr_debug_queue_dump(char *path, int count, int onoff)
+{
+ TBM_LOG_D("path=%s count=%d onoff=%d\n", path, count, onoff);
+
+ if (onoff == 1) {
+
+ TBM_RETURN_VAL_IF_FAIL(path != NULL, 0);
+
+ int w = 0, h = 0;
+ if (_tbm_util_get_max_surface_size(&w, &h) == 0) {
+ TBM_LOG_I("No tbm_surface.\n");
+ return 0;
+ }
+
+ tbm_surface_internal_dump_start(path, w, h, count);
+ b_dump_queue = 1;
+
+ } else if (onoff == 0) {
+
+ tbm_surface_internal_dump_end();
+ b_dump_queue = 0;
+
+ } else {
+ return 0;
+ }
+
+ return 1;
+}
+
+int
+tbm_bufmgr_debug_dump_all(char *path)
+{
+ TBM_RETURN_VAL_IF_FAIL(path != NULL, 0);
+
+ TBM_LOG_D("path=%s\n", path);
+ int w = 0, h = 0, count = 0;
+ tbm_surface_h surface = NULL, tmp = NULL;
+
+ count = _tbm_util_get_max_surface_size(&w, &h);
+ if (count == 0) {
+ TBM_LOG_I("No tbm_surface.\n");
+ return 1;
+ }
+
+ tbm_surface_internal_dump_start(path, w, h, count);
+
+ LIST_FOR_EACH_ENTRY_SAFE(surface, tmp, &gBufMgr->surf_list, item_link) {
+ tbm_surface_internal_dump_buffer(surface, "dump_all");
+ }
+
+ tbm_surface_internal_dump_end();
+
+ return 1;
+
+}
+
/* internal function */
tbm_bufmgr
_tbm_bufmgr_get_bufmgr(void)
*/
void tbm_bufmgr_debug_trace(tbm_bufmgr bufmgr, int onoff);
+/**
+ * @brief Dump all tbm surfaces
+ * @param[in] path : the given dump path
+ * @return 1 if this function succeeds, otherwise 0.
+ */
+int tbm_bufmgr_debug_dump_all(char *path);
+
+/**
+ * @brief Start the dump debugging for queue.
+ * @since_tizen 3.0
+ * @param[in] path : the given dump path
+ * @param[in] count : the dump count number
+ * @param[in] onoff : 1 is on, and 0 is off, if onoff==0 path and count are ignored
+ * @return 1 if this function succeeds, otherwise 0.
+ */
+int tbm_bufmgr_debug_queue_dump(char *path, int count, int onoff);
+
int tbm_bufmgr_bind_native_display(tbm_bufmgr bufmgr, void *NativeDisplay);
#ifdef __cplusplus
extern int bTrace;
#endif /* TRACE */
+extern int b_dump_queue;
+
#ifdef HAVE_DLOG
#include <dlog.h>
}
}
-static int
-_tbm_surface_get_max_size(int * w, int * h)
-{
- int count = 0;
- tbm_surface_h surface = NULL, tmp = NULL;
- tbm_surface_info_s info;
-
- *w = 0;
- *h = 0;
-
- if (g_surface_bufmgr == NULL)
- return count;
-
- if (!LIST_IS_EMPTY(&g_surface_bufmgr->surf_list)) {
- LIST_FOR_EACH_ENTRY_SAFE(surface, tmp, &g_surface_bufmgr->surf_list, item_link) {
- if (tbm_surface_get_info(surface, &info) == TBM_SURFACE_ERROR_NONE) {
- count++;
- if (*w < info.width) *w = info.width;
- if (*h < info.height) *h = info.height;
- }
- }
- }
-
- return count;
-}
-
int
tbm_surface_internal_is_valid(tbm_surface_h surface)
{
TBM_LOG_I("Dump %s \n", buf_info->name);
}
-
-void tbm_surface_internal_dump_all(char *path)
-{
- TBM_RETURN_IF_FAIL(path != NULL);
- int w = 0, h = 0, count = 0;
- tbm_surface_h surface = NULL, tmp = NULL;
-
- count = _tbm_surface_get_max_size(&w, &h);
- if (count == 0) {
- TBM_LOG_I("No tbm_surface.\n");
- return;
- }
-
- tbm_surface_internal_dump_start(path, w, h, count);
-
- LIST_FOR_EACH_ENTRY_SAFE(surface, tmp, &g_surface_bufmgr->surf_list, item_link) {
- tbm_surface_internal_dump_buffer(surface, "dump_all");
- }
-
- tbm_surface_internal_dump_end();
-}
/*LCOV_EXCL_STOP*/
void tbm_surface_internal_dump_shm_buffer(void *ptr, int w, int h, int stride, const char *type);
/**
- * @brief Dump all tbm surfaces
- * @param[in] path : the given dump path
- */
-void tbm_surface_internal_dump_all(char *path);
-
-/**
* @brief check valid tbm surface.
* @since_tizen 3.0
* @param[in] surface : the tbm surface.
TBM_RETURN_VAL_IF_FAIL(surface != NULL,
TBM_SURFACE_QUEUE_ERROR_INVALID_SURFACE);
+ if (b_dump_queue)
+ tbm_surface_internal_dump_buffer(surface, "enqueue");
+
pthread_mutex_lock(&surface_queue->lock);
TBM_QUEUE_TRACE("tbm_surface_queue(%p) tbm_surface(%p)\n", surface_queue, surface);
pthread_mutex_unlock(&surface_queue->lock);
+ if (b_dump_queue)
+ tbm_surface_internal_dump_buffer(*surface, "acquire");
+
return TBM_SURFACE_QUEUE_ERROR_NONE;
}