void
tbm_module_unload(tbm_module *module)
{
- if (module->use_hal_tbm) {
+ switch (module->type) {
+ case TBM_MODULE_TYPE_HAL_TBM:
if (module->auth_wl_socket_created) {
tbm_drm_helper_wl_auth_server_deinit();
close(module->auth_fd);
module->hal_backend = NULL;
module->hal_bufmgr = NULL;
module->use_hal_tbm = 0;
- } else {
- if (module->backend_module_data) {
- module->backend_module_data->deinit(module->bufmgr_data);
- module->bo_func = NULL;
- module->bufmgr_func = NULL;
- module->bufmgr_data = NULL;
- module->backend_module_data = NULL;
- } else {
- module->backend->bufmgr_deinit(module->backend->priv);
- module->backend->priv = NULL;
- tbm_backend_free(module->backend);
- module->backend = NULL;
- }
+ break;
+ case TBM_MODULE_TYPE_TBM_BACKEND:
+ module->backend_module_data->deinit(module->bufmgr_data);
+ module->bo_func = NULL;
+ module->bufmgr_func = NULL;
+ module->bufmgr_data = NULL;
+ module->backend_module_data = NULL;
+
+ dlclose(module->module_data);
+ break;
+ case TBM_MODULE_TYPE_BUFMGR_BACKEND:
+ module->backend->bufmgr_deinit(module->backend->priv);
+ module->backend->priv = NULL;
+ tbm_backend_free(module->backend);
+ module->backend = NULL;
dlclose(module->module_data);
+ break;
+ default:
+ TBM_ERR("Wrong module type:%d", module->type);
+ break;
}
_tbm_module_copy_data_to_bufmgr(module, module->bufmgr, 1);