} \
}
+#define TBM_BUFMGR_RETURN_VAL_SET_ERR_IF_FAIL(cond, val, error, error_type) {\
+ if (!(cond)) {\
+ TBM_ERR("'%s' failed.\n", #cond);\
+ error = error_type;\
+ _tbm_bufmgr_mutex_unlock();\
+ return val;\
+ } \
+}
+
/* LCOV_EXCL_START */
static void
TBM_SNRPRINTF(str, len, c, "%s\n", data);
for (i = 0; i < surf->num_bos; i++) {
- size = tbm_module_bo_get_size(bufmgr->module, surf->bos[i], surf->bos[i]->bo_data, &error);
+ size = tbm_bo_data_get_size(surf->bos[i]->bo_data, &error);
if (error != TBM_ERROR_NONE)
TBM_WRN("fail to get the size of bo.");
TBM_SNRPRINTF(str, len, c, " bo:%-12p %-26d%-10d\n",
tbm_key key = 0;
LIST_FOR_EACH_ENTRY(bo, &bufmgr->bo_list, item_link) {
- size = tbm_module_bo_get_size(bufmgr->module, bo, bo->bo_data, &error);
+ size = tbm_bo_data_get_size(bo->bo_data, &error);
if (error != TBM_ERROR_NONE)
TBM_WRN("fail to get the size of bo.");
- key = tbm_module_bo_export_key(bufmgr->module, bo, bo->bo_data, &error);
+ key = tbm_bo_data_export_key(bo->bo_data, &error);
if (error != TBM_ERROR_NONE)
TBM_WRN("fail to get the tdm_key of bo.");
TBM_SNRPRINTF(str, len, c, "%-3d %-11p %-5d %-7d %-6d %-5u %-7d %-11p %-4d\n",
}
tbm_bo
-tbm_bufmgr_internal_alloc_bo(tbm_bufmgr bufmgr, int size, int flags, tbm_error_e *error)
+tbm_bufmgr_internal_alloc_bo(tbm_bufmgr bufmgr, int size, int flags)
{
+ tbm_error_e error = TBM_ERROR_NONE;
tbm_bo bo;
- tbm_bo_data *bo_data;
+
+ _tbm_bufmgr_mutex_lock();
+
+ TBM_BUFMGR_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(bufmgr), NULL);
+ TBM_BUFMGR_RETURN_VAL_IF_FAIL(size > 0, NULL);
_tbm_bufmgr_check_bo_cnt(bufmgr);
if (!bo) {
/* LCOV_EXCL_START */
TBM_ERR("memory allocationc failed.");
- *error = TBM_ERROR_OUT_OF_MEMORY;
- return NULL;
+ error = TBM_ERROR_OUT_OF_MEMORY;
+ goto failed;
/* LCOV_EXCL_STOP */
}
- bo_data = tbm_module_alloc_bo_data(bufmgr->module, bo, size, flags, error);
- if (!bo_data) {
+ bo->bo_data = tbm_module_alloc_bo_data(bufmgr->module, bo, size, flags, &error);
+ if (!bo->bo_data) {
/* LCOV_EXCL_START */
- TBM_ERR("tbm_module_alloc_bo_data failed. size:%d flags:%s error:%d", size, _tbm_flag_to_str(flags), *error);
+ TBM_ERR("tbm_module_alloc_bo_data failed. size:%d flags:%s error:%d", size, _tbm_flag_to_str(flags), error);
free(bo);
- return NULL;
+ _tbm_set_last_result(error);
+ _tbm_bufmgr_mutex_unlock();
+ goto failed;
/* LCOV_EXCL_STOP */
}
- bo->bo_data = bo_data;
_tbm_bufmgr_initialize_bo(bufmgr, bo, flags);
+ TBM_TRACE_BO("bo(%p) size(%d) refcnt(%d), flag(%s)", bo, size, bo->ref_cnt, _tbm_flag_to_str(bo->flags));
+
+ _tbm_set_last_result(TBM_ERROR_NONE);
+ _tbm_bufmgr_mutex_unlock();
+
return bo;
+
+/* LCOV_EXCL_START */
+failed:
+ _tbm_set_last_result(error);
+ _tbm_bufmgr_mutex_unlock();
+
+ return NULL;
+/* LCOV_EXCL_STOP */
}
tbm_bo bo = NULL;
_tbm_bufmgr_mutex_lock();
- _tbm_set_last_result(TBM_ERROR_NONE);
TBM_BUFMGR_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(bufmgr), NULL);
if (!bo) {
/* LCOV_EXCL_START */
TBM_ERR("memory allocationc failed.");
- _tbm_set_last_result(TBM_ERROR_OUT_OF_MEMORY);
+ *error = TBM_ERROR_OUT_OF_MEMORY;
+ _tbm_bufmgr_mutex_unlock();
+ return NULL;
/* LCOV_EXCL_STOP */
- goto fail;
}
bo->bo_data = tbm_module_alloc_bo_data_with_format(bufmgr->module, format, bo_idx, width, height, bpp, flags, error);
if (!bo->bo_data) {
/* LCOV_EXCL_START */
- _tbm_set_last_result(*error);
+ free(bo);
+ _tbm_bufmgr_mutex_unlock();
+ return NULL;
/* LCOV_EXCL_STOP */
- goto fail;
}
_tbm_bufmgr_initialize_bo(bufmgr, bo, flags);
_tbm_bufmgr_mutex_unlock();
return bo;
-
+/* LCOV_EXCL_START */
fail:
- if (bo)
- free(bo);
_tbm_bufmgr_mutex_unlock();
return NULL;
+/* LCOV_EXCL_STOP */
}
tbm_bo
-tbm_bufmgr_internal_alloc_bo_with_bo_data(tbm_bufmgr bufmgr, tbm_bo_data *bo_data, int flags)
+tbm_bufmgr_internal_alloc_bo_with_bo_data(tbm_bufmgr bufmgr, tbm_bo_data *bo_data, int flags, tbm_error_e *error)
{
tbm_bo bo, bo2 = NULL;
_tbm_bufmgr_mutex_lock();
- _tbm_set_last_result(TBM_ERROR_NONE);
- TBM_BUFMGR_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(bufmgr), NULL);
- TBM_BUFMGR_RETURN_VAL_IF_FAIL(bo_data, NULL);
+ *error = TBM_ERROR_NONE;
+
+ TBM_BUFMGR_RETURN_VAL_SET_ERR_IF_FAIL(TBM_BUFMGR_IS_VALID(bufmgr), NULL, *error, TBM_ERROR_INVALID_PARAMETER);
+ TBM_BUFMGR_RETURN_VAL_SET_ERR_IF_FAIL(bo_data, NULL, *error, TBM_ERROR_INVALID_PARAMETER);
_tbm_bufmgr_check_bo_cnt(bufmgr);
if (!bo) {
/* LCOV_EXCL_START */
TBM_ERR("memory allocationc failed.");
- _tbm_set_last_result(TBM_ERROR_OUT_OF_MEMORY);
+ *error = TBM_ERROR_OUT_OF_MEMORY;
_tbm_bufmgr_mutex_unlock();
return NULL;
/* LCOV_EXCL_STOP */
}
tbm_bo
-tbm_bufmgr_internal_import_bo_with_key(tbm_bufmgr bufmgr, unsigned int key, tbm_error_e *error)
+tbm_bufmgr_internal_import_bo_with_key(tbm_bufmgr bufmgr, unsigned int key)
{
+ tbm_error_e error = TBM_ERROR_NONE;
tbm_bo bo, bo2;
int flags;
+ _tbm_bufmgr_mutex_lock();
+
+ TBM_BUFMGR_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(bufmgr), NULL);
+
_tbm_bufmgr_check_bo_cnt(bufmgr);
bo = calloc(1, sizeof(struct _tbm_bo));
if (!bo) {
/* LCOV_EXCL_START */
TBM_ERR("memory allocationc failed.");
- *error = TBM_ERROR_OUT_OF_MEMORY;
- return NULL;
+ goto failed;
/* LCOV_EXCL_STOP */
}
- bo->bo_data = tbm_module_import_bo_data_with_key(bufmgr->module, bo, key, error);
+ bo->bo_data = tbm_module_import_bo_data_with_key(bufmgr->module, bo, key, &error);
if (!bo->bo_data) {
/* LCOV_EXCL_START */
TBM_ERR("tbm_module_import_bo_data_with_key failed. tbm_key:%d", key);
free(bo);
- return NULL;
+ goto failed;
/* LCOV_EXCL_STOP */
}
bo2, bo2->ref_cnt, key, _tbm_flag_to_str(bo2->flags));
bo2->ref_cnt++;
free(bo);
+ _tbm_set_last_result(TBM_ERROR_NONE);
+ _tbm_bufmgr_mutex_unlock();
return bo2;
}
- flags = tbm_module_bo_get_memory_types(bufmgr->module, bo, bo->bo_data, error);
- if (*error != TBM_ERROR_NONE) {
- TBM_ERR("fail to get the bo flags(memory_types)");
+ flags = tbm_bo_data_get_memory_types(bo->bo_data, &error);
+ if (error != TBM_ERROR_NONE) {
+ TBM_WRN("tbm_bo_data_get_memory_types filed. use the default flags:TBM_BO_DEFAULT.");
flags = TBM_BO_DEFAULT;
+ error = TBM_ERROR_NONE;
}
_tbm_bufmgr_initialize_bo(bufmgr, bo, flags);
+ TBM_TRACE_BO("import new bo(%p) ref(%d) key(%d) flag(%s) in list",
+ bo, bo->ref_cnt, key, _tbm_flag_to_str(bo->flags));
+
+ _tbm_set_last_result(TBM_ERROR_NONE);
+ _tbm_bufmgr_mutex_unlock();
+
return bo;
+
+failed:
+ _tbm_set_last_result(error);
+ _tbm_bufmgr_mutex_unlock();
+
+ return NULL;
}
tbm_bo
-tbm_bufmgr_internal_import_bo_with_fd(tbm_bufmgr bufmgr, tbm_fd fd, tbm_error_e *error)
+tbm_bufmgr_internal_import_bo_with_fd(tbm_bufmgr bufmgr, tbm_fd fd)
{
+ tbm_error_e error = TBM_ERROR_NONE;
tbm_bo bo, bo2;
int flags;
+ _tbm_bufmgr_mutex_lock();
+
+ TBM_BUFMGR_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(bufmgr), NULL);
+
_tbm_bufmgr_check_bo_cnt(bufmgr);
bo = calloc(1, sizeof(struct _tbm_bo));
if (!bo) {
/* LCOV_EXCL_START */
TBM_ERR("memory allocationc failed.");
- *error = TBM_ERROR_OUT_OF_MEMORY;
- return NULL;
+ goto failed;
/* LCOV_EXCL_STOP */
}
- bo->bo_data = tbm_module_import_bo_data_with_fd(bufmgr->module, bo, fd, error);
+ bo->bo_data = tbm_module_import_bo_data_with_fd(bufmgr->module, bo, fd, &error);
if (!bo->bo_data) {
/* LCOV_EXCL_START */
TBM_ERR("tbm_module_import_bo_data_with_fd failed. tbm_fd:%d", fd);
free(bo);
- return NULL;
+ goto failed;
/* LCOV_EXCL_STOP */
}
bo2, bo2->ref_cnt, fd, _tbm_flag_to_str(bo2->flags));
bo2->ref_cnt++;
free(bo);
+ _tbm_set_last_result(TBM_ERROR_NONE);
+ _tbm_bufmgr_mutex_unlock();
return bo2;
}
- flags = tbm_module_bo_get_memory_types(bufmgr->module, bo, bo->bo_data, error);
- if (*error != TBM_ERROR_NONE) {
- TBM_ERR("fail to get the bo flags(memory_types)");
+ flags = tbm_bo_data_get_memory_types(bo->bo_data, &error);
+ if (error != TBM_ERROR_NONE) {
+ TBM_WRN("tbm_bo_data_get_memory_types filed. use the default flags:TBM_BO_DEFAULT.");
flags = TBM_BO_DEFAULT;
+ error = TBM_ERROR_NONE;
}
+ TBM_TRACE_BO("import bo(%p) ref(%d) fd(%d) flag(%s)",
+ bo, bo->ref_cnt, fd, _tbm_flag_to_str(bo->flags));
+
_tbm_bufmgr_initialize_bo(bufmgr, bo, flags);
+ _tbm_set_last_result(TBM_ERROR_NONE);
+ _tbm_bufmgr_mutex_unlock();
+
return bo;
+
+failed:
+ _tbm_set_last_result(error);
+ _tbm_bufmgr_mutex_unlock();
+
+ return NULL;
}
/* LCOV_EXCL_STOP */