From: SooChan Lim Date: Thu, 17 Jun 2021 08:27:33 +0000 (+0900) Subject: tbm_module: add tbm_module_bo_unmap and use it X-Git-Tag: submit/tizen/20210618.025159~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2db5840300fa6b1f384ff8d5df195b1eb7d5e4a1;p=platform%2Fcore%2Fuifw%2Flibtbm.git tbm_module: add tbm_module_bo_unmap and use it The tbm_module_bo_unmap calls it's backend function Change-Id: I4dbd8164bf1cbd7d67af0e22ce40d46be24dabd1 --- diff --git a/src/tbm_bo.c b/src/tbm_bo.c index 4066567..e918436 100644 --- a/src/tbm_bo.c +++ b/src/tbm_bo.c @@ -432,7 +432,6 @@ tbm_bo_map(tbm_bo bo, int device, int opt) int tbm_bo_unmap(tbm_bo bo) { - int ret = 1; tbm_error_e error; _tbm_bufmgr_mutex_lock(); @@ -441,35 +440,14 @@ tbm_bo_unmap(tbm_bo bo) TBM_BO_RETURN_VAL_IF_FAIL(_tbm_bo_is_valid(bo), 0); TBM_BO_RETURN_VAL_IF_FAIL(bo->map_cnt > 0, 0); - if (bo->bufmgr->use_hal_tbm) { - error = (hal_tbm_error)hal_tbm_bo_unmap((hal_tbm_bo *)bo->bo_data); - if (error != TBM_ERROR_NONE) { - /* LCOV_EXCL_START */ - TBM_ERR("error: bo(%p) map_cnt(%d) error(%d)\n", bo, bo->map_cnt, error); - _tbm_set_last_result(error); - ret = 0; - goto done; - /* LCOV_EXCL_STOP */ - } - } else if (bo->bufmgr->backend_module_data) { - error = bo->bufmgr->bo_func->bo_unmap(bo->bo_data); - if (error != TBM_ERROR_NONE) { - /* LCOV_EXCL_START */ - TBM_ERR("error: bo(%p) map_cnt(%d) error(%d)\n", bo, bo->map_cnt, error); - _tbm_set_last_result(error); - ret = 0; - goto done; - /* LCOV_EXCL_STOP */ - } - } else { - ret = bo->bufmgr->backend->bo_unmap(bo); - if (!ret) { - /* LCOV_EXCL_START */ - TBM_ERR("error: bo(%p) map_cnt(%d)\n", bo, bo->map_cnt); - _tbm_set_last_result(TBM_ERROR_INVALID_OPERATION); - goto done; - /* LCOV_EXCL_STOP */ - } + error = tbm_module_bo_unmap(bo->bufmgr->module, bo, bo->bo_data); + if (error != TBM_ERROR_NONE) { + /* LCOV_EXCL_START */ + TBM_ERR("error: bo(%p) map_cnt(%d) error(%d)\n", bo, bo->map_cnt, error); + _tbm_set_last_result(error); + _tbm_bufmgr_mutex_unlock(); + return 0; + /* LCOV_EXCL_STOP */ } /* decrease the map_count */ @@ -479,10 +457,9 @@ tbm_bo_unmap(tbm_bo bo) _tbm_bo_unlock(bo); -done: _tbm_bufmgr_mutex_unlock(); - return ret; + return 1; } tbm_bo_handle diff --git a/src/tbm_bufmgr_int.h b/src/tbm_bufmgr_int.h index 28aa622..e1ab79a 100644 --- a/src/tbm_bufmgr_int.h +++ b/src/tbm_bufmgr_int.h @@ -375,5 +375,6 @@ int tbm_module_bo_get_size(tbm_module *module, tbm_bo bo, tbm_backend_ int tbm_module_bo_get_memory_types(tbm_module *module, tbm_bo bo, tbm_backend_bo_data *bo_data, tbm_error_e *error); tbm_bo_handle tbm_module_bo_get_handle(tbm_module *module, tbm_bo bo, tbm_backend_bo_data *bo_data, int device, tbm_error_e *error); tbm_bo_handle tbm_module_bo_map(tbm_module *module, tbm_bo bo, tbm_backend_bo_data *bo_data, int device, int opt, tbm_error_e *error); +tbm_error_e tbm_module_bo_unmap(tbm_module *module, tbm_bo bo, tbm_backend_bo_data *bo_data); #endif /* _TBM_BUFMGR_INT_H_ */ diff --git a/src/tbm_module.c b/src/tbm_module.c index d6663a9..b0d1e97 100644 --- a/src/tbm_module.c +++ b/src/tbm_module.c @@ -1025,3 +1025,47 @@ tbm_module_bo_map(tbm_module *module, tbm_bo bo, tbm_backend_bo_data *bo_data, i return bo_handle; } + +tbm_error_e +tbm_module_bo_unmap(tbm_module *module, tbm_bo bo, tbm_backend_bo_data *bo_data) +{ + tbm_backend_bo_func *bo_func = NULL; + tbm_bufmgr_backend backend = NULL; + tbm_error_e error; + int ret = 0; + + TBM_RETURN_VAL_IF_FAIL(module, TBM_ERROR_INVALID_PARAMETER); + + switch (module->type) { + case TBM_MODULE_TYPE_HAL_TBM: + error = (hal_tbm_error)hal_tbm_bo_unmap((hal_tbm_bo *)bo_data); + break; +/* LCOV_EXCL_START */ + case TBM_MODULE_TYPE_TBM_BACKEND: + bo_func = module->bo_func; + TBM_RETURN_VAL_IF_FAIL(bo_func, TBM_ERROR_INVALID_OPERATION); + TBM_RETURN_VAL_IF_FAIL(bo_func->bo_unmap, TBM_ERROR_NOT_SUPPORTED); + + error = bo_func->bo_unmap(bo->bo_data); + break; + case TBM_MODULE_TYPE_BUFMGR_BACKEND: + TBM_WRN("!!WARNING: This backend interface will be DEPRECATED after Tizen 6.5."); + backend = module->backend; + TBM_RETURN_VAL_IF_FAIL(backend, TBM_ERROR_INVALID_OPERATION); + TBM_RETURN_VAL_IF_FAIL(backend->bo_unmap, TBM_ERROR_NOT_SUPPORTED); + + ret = bo->bufmgr->backend->bo_unmap(bo); + if (!ret) + error = TBM_ERROR_INVALID_OPERATION; + else + error = TBM_ERROR_NONE; + break; + default: + TBM_ERR("Wrong module type:%d", module->type); + error = TBM_ERROR_INVALID_OPERATION; + break; +/* LCOV_EXCL_STOP */ + } + + return error; +}