{
TBM_RETURN_IF_FAIL(TBM_BUFMGR_IS_VALID(bufmgr));
- _tbm_bufmgr_mutex_lock();
pthread_mutex_lock(&gLock);
+ _tbm_bufmgr_mutex_lock();
_tbm_set_last_result(TBM_ERROR_NONE);
if (!gBufMgr) {
TBM_ERR("gBufmgr already destroy: bufmgr:%p\n", bufmgr);
- pthread_mutex_unlock(&gLock);
_tbm_bufmgr_mutex_unlock();
+ pthread_mutex_unlock(&gLock);
return;
}
bufmgr->ref_count--;
if (bufmgr->ref_count > 0) {
TBM_DBG("reduce a ref_count(%d) of tbm_bufmgr(%p)\n", bufmgr->ref_count, bufmgr);
- pthread_mutex_unlock(&gLock);
_tbm_bufmgr_mutex_unlock();
+ pthread_mutex_unlock(&gLock);
return;
}
free(bufmgr);
gBufMgr = NULL;
- pthread_mutex_unlock(&gLock);
_tbm_bufmgr_mutex_unlock();
+ pthread_mutex_unlock(&gLock);
}
unsigned int
}
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;
+ goto failed;
/* 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);
+ goto failed;
/* LCOV_EXCL_STOP */
- goto fail;
}
_tbm_bufmgr_initialize_bo(bufmgr, bo, flags);
return bo;
-fail:
- if (bo)
- free(bo);
+/* LCOV_EXCL_START */
+failed:
_tbm_bufmgr_mutex_unlock();
return NULL;
+/* LCOV_EXCL_STOP */
}
tbm_bo