#include <hal-tbm-types.h>
-hal_tbm_error hal_tbm_get_backend(hal_tbm_backend_data *backend_data);
-void hal_tbm_put_backend(void);
-hal_tbm_bufmgr_data *hal_tbm_get_bufmgr_data(hal_tbm_backend_data *backend_data);
+hal_tbm_backend_data *hal_tbm_get_backend(hal_tbm_error *error);
+hal_tbm_error hal_tbm_put_backend(hal_tbm_backend_data *backend_data);
+hal_tbm_bufmgr_data *hal_tbm_get_bufmgr_data(hal_tbm_backend_data *backend_data);
/* hal_tbm_bufmgr_funcs */
hal_tbm_bufmgr_capability hal_tbm_bufmgr_get_capabilities(hal_tbm_bufmgr_data *bufmgr_data, hal_tbm_error *error);
static hal_tbm_backend_data *g_hal_tbm_backend_data = NULL;
-EXTERN hal_tbm_error
-hal_tbm_get_backend(hal_tbm_backend_data *backend_data)
+EXTERN hal_tbm_backend_data *
+hal_tbm_get_backend(hal_tbm_error *error)
{
+ hal_tbm_backend_data *backend_data;
int ret;
- if (g_hal_tbm_backend_data)
- return HAL_TBM_ERROR_INVALID_OPERATION;
+ if (g_hal_tbm_backend_data) {
+ if (error)
+ *error = HAL_TBM_ERROR_INVALID_OPERATION;
+ return NULL;
+ }
ret = hal_common_get_backend(HAL_MODULE_TBM, (void **)&backend_data);
if (ret < 0) {
_E("Failed to get backend\n");
- free(g_hal_tbm_backend_data);
- g_hal_tbm_backend_data = NULL;
- return HAL_TBM_ERROR_NOT_SUPPORTED;
+ if (error)
+ *error = HAL_TBM_ERROR_INVALID_OPERATION;
+ return NULL;
}
- g_hal_tbm_backend_data = (hal_tbm_backend_data *)backend_data;
+ g_hal_tbm_backend_data = backend_data;
+
+ if (error)
+ *error = HAL_TBM_ERROR_NONE;
_I("hal_tbm_get_backend");
- return HAL_TBM_ERROR_NONE;
+ return backend_data;
}
-EXTERN void
-hal_tbm_put_backend(void)
+EXTERN hal_tbm_error
+hal_tbm_put_backend(hal_tbm_backend_data *backend_data)
{
+ int ret;
+
if (!g_hal_tbm_backend_data)
- return;
+ return HAL_TBM_ERROR_INVALID_OPERATION;
+
+ ret = hal_common_put_backend(HAL_MODULE_TBM, NULL);
+ if (ret < 0) {
+ _E("Failed to put backend\n");
+ return HAL_TBM_ERROR_INVALID_OPERATION;
+ }
- hal_common_put_backend(HAL_MODULE_TBM, NULL);
- free(g_hal_tbm_backend_data);
g_hal_tbm_backend_data = NULL;
_I("hal_tbm_put_backend");
+
+ return HAL_TBM_ERROR_NONE;
}
EXTERN hal_tbm_bufmgr_data *