sdm: drm: Destroy DRMManager and resource info singletons
Destroy DRMManager and resource info singletons on tear down, so that back to back tests can parse new resource info afresh. Change-Id: Ib65f8fec73e7a70e5bf2f444958756d1e5ddc654
This commit is contained in:
@@ -298,7 +298,7 @@ class DRMManagerInterface;
|
|||||||
typedef int (*GetDRMManager)(int fd, DRMManagerInterface **intf);
|
typedef int (*GetDRMManager)(int fd, DRMManagerInterface **intf);
|
||||||
|
|
||||||
/* Destroy DRMManager instance */
|
/* Destroy DRMManager instance */
|
||||||
typedef int (*DestroyDRMManager)(DRMManagerInterface *intf);
|
typedef int (*DestroyDRMManager)();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DRM Manager Interface - Any class which plans to implement helper function for vendor
|
* DRM Manager Interface - Any class which plans to implement helper function for vendor
|
||||||
|
|||||||
@@ -51,6 +51,14 @@ DRMLibLoader *DRMLibLoader::GetInstance() {
|
|||||||
return s_instance;
|
return s_instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DRMLibLoader::Destroy() {
|
||||||
|
lock_guard<mutex> obj(s_lock);
|
||||||
|
if (s_instance) {
|
||||||
|
delete s_instance;
|
||||||
|
s_instance = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DRMLibLoader::DRMLibLoader() {
|
DRMLibLoader::DRMLibLoader() {
|
||||||
if (Open("libsdedrm.so")) {
|
if (Open("libsdedrm.so")) {
|
||||||
if (Sym("GetDRMManager", reinterpret_cast<void **>(&func_get_drm_manager_)) &&
|
if (Sym("GetDRMManager", reinterpret_cast<void **>(&func_get_drm_manager_)) &&
|
||||||
@@ -60,6 +68,13 @@ DRMLibLoader::DRMLibLoader() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DRMLibLoader::~DRMLibLoader() {
|
||||||
|
if (lib_) {
|
||||||
|
::dlclose(lib_);
|
||||||
|
lib_ = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool DRMLibLoader::Open(const char *lib_name) {
|
bool DRMLibLoader::Open(const char *lib_name) {
|
||||||
lib_ = ::dlopen(lib_name, RTLD_NOW);
|
lib_ = ::dlopen(lib_name, RTLD_NOW);
|
||||||
|
|
||||||
|
|||||||
@@ -37,12 +37,13 @@ namespace drm_utils {
|
|||||||
|
|
||||||
class DRMLibLoader {
|
class DRMLibLoader {
|
||||||
public:
|
public:
|
||||||
~DRMLibLoader() {}
|
~DRMLibLoader();
|
||||||
bool IsLoaded() { return is_loaded_; }
|
bool IsLoaded() { return is_loaded_; }
|
||||||
sde_drm::GetDRMManager FuncGetDRMManager() { return func_get_drm_manager_; }
|
sde_drm::GetDRMManager FuncGetDRMManager() { return func_get_drm_manager_; }
|
||||||
sde_drm::DestroyDRMManager FuncDestroyDRMManager() { return func_destroy_drm_manager_; }
|
sde_drm::DestroyDRMManager FuncDestroyDRMManager() { return func_destroy_drm_manager_; }
|
||||||
|
|
||||||
static DRMLibLoader *GetInstance();
|
static DRMLibLoader *GetInstance();
|
||||||
|
static void Destroy();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DRMLibLoader();
|
DRMLibLoader();
|
||||||
|
|||||||
@@ -108,6 +108,16 @@ HWInfoDRM::HWInfoDRM() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HWInfoDRM::~HWInfoDRM() {
|
||||||
|
delete hw_resource_;
|
||||||
|
hw_resource_ = nullptr;
|
||||||
|
|
||||||
|
if (drm_mgr_intf_) {
|
||||||
|
DRMLibLoader::GetInstance()->FuncDestroyDRMManager()();
|
||||||
|
drm_mgr_intf_ = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DisplayError HWInfoDRM::GetDynamicBWLimits(HWResourceInfo *hw_resource) {
|
DisplayError HWInfoDRM::GetDynamicBWLimits(HWResourceInfo *hw_resource) {
|
||||||
HWDynBwLimitInfo* bw_info = &hw_resource->dyn_bw_info;
|
HWDynBwLimitInfo* bw_info = &hw_resource->dyn_bw_info;
|
||||||
for (int index = 0; index < kBwModeMax; index++) {
|
for (int index = 0; index < kBwModeMax; index++) {
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ namespace sdm {
|
|||||||
class HWInfoDRM: public HWInfoInterface {
|
class HWInfoDRM: public HWInfoInterface {
|
||||||
public:
|
public:
|
||||||
HWInfoDRM();
|
HWInfoDRM();
|
||||||
|
virtual ~HWInfoDRM();
|
||||||
virtual DisplayError GetHWResourceInfo(HWResourceInfo *hw_resource);
|
virtual DisplayError GetHWResourceInfo(HWResourceInfo *hw_resource);
|
||||||
virtual DisplayError GetFirstDisplayInterfaceType(HWDisplayInterfaceInfo *hw_disp_info);
|
virtual DisplayError GetFirstDisplayInterfaceType(HWDisplayInterfaceInfo *hw_disp_info);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user