/* LCOV_EXCL_STOP */
if (bufmgr->use_hal_tbm) {
+ hal_tbm_error ret;
bo_data = (tbm_backend_bo_data *)hal_tbm_bufmgr_alloc_bo_with_format(bufmgr->hal_bufmgr,
- format, bo_idx, width, height, (hal_tbm_bo_memory_type)flags, (hal_tbm_error *)error);
- if (!bo_data) {
- TBM_ERR("error: fail to tbm_bo_alloc_with_format\n");
+ format, bo_idx, width, height, (hal_tbm_bo_memory_type)flags, &ret);
+ if (error)
+ *error = (tbm_error_e)ret;
+ if (ret != HAL_TBM_ERROR_NONE) {
+ if (ret != HAL_TBM_ERROR_NOT_SUPPORTED) {
+ TBM_ERR("error: fail to tbm_bo_alloc_with_format\n");
+ }
_tbm_set_last_result(*error);
goto bo_alloc_fail;
}
if (!bufmgr->backend_module_data || !bufmgr->bufmgr_func->bufmgr_alloc_bo_with_tiled_format) {
TBM_ERR("error: not supported tbm_bo_alloc_with_tiled_format\n");
_tbm_set_last_result(TBM_ERROR_NOT_SUPPORTED);
- free(bo);
- _tbm_bufmgr_mutex_unlock();
- return NULL;
+ goto bo_alloc_fail;
}
}
- if (bufmgr->use_hal_tbm)
+ if (bufmgr->use_hal_tbm) {
+ hal_tbm_error ret;
bo_data = (tbm_backend_bo_data *)hal_tbm_bufmgr_alloc_bo_with_tiled_format(bufmgr->hal_bufmgr,
- width, height, bpp, format, (hal_tbm_bo_memory_type)flags, bo_idx, (hal_tbm_error *)error);
- else
+ width, height, bpp, format, (hal_tbm_bo_memory_type)flags, bo_idx, &ret);
+ if (error)
+ *error = (tbm_error_e)ret;
+ if (ret != HAL_TBM_ERROR_NONE) {
+ if (ret != HAL_TBM_ERROR_NOT_SUPPORTED) {
+ TBM_ERR("error: fail to tbm_bo_alloc_with_tiled_format fmt(%s) idx(%d) w(%d) h(%d) flags(%s)\n",
+ FOURCC_STR(format), bo_idx, width, height, _tbm_flag_to_str(flags));
+ }
+ _tbm_set_last_result(*error);
+ goto bo_alloc_fail;
+ }
+ } else {
bo_data = bufmgr->bufmgr_func->bufmgr_alloc_bo_with_tiled_format(bufmgr->bufmgr_data, width, height,
bpp, format, flags, bo_idx, error);
- if (!bo_data) {
- TBM_ERR("error: fail to tbm_bo_alloc_with_tiled_format fmt(%s) idx(%d) w(%d) h(%d) flags(%s)\n",
- FOURCC_STR(format), bo_idx, width, height, _tbm_flag_to_str(flags));
- _tbm_set_last_result(*error);
- free(bo);
- _tbm_bufmgr_mutex_unlock();
- return NULL;
+ if (!bo_data) {
+ TBM_ERR("error: fail to tbm_bo_alloc_with_tiled_format fmt(%s) idx(%d) w(%d) h(%d) flags(%s)\n",
+ FOURCC_STR(format), bo_idx, width, height, _tbm_flag_to_str(flags));
+ _tbm_set_last_result(*error);
+ goto bo_alloc_fail;
+ }
}
bo->bo_data = bo_data;
_tbm_bufmgr_mutex_unlock();
return bo;
+
+bo_alloc_fail:
+ free(bo);
+ _tbm_bufmgr_mutex_unlock();
+ return NULL;
}
tbm_bo