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);
|
||||
|
||||
/* Destroy DRMManager instance */
|
||||
typedef int (*DestroyDRMManager)(DRMManagerInterface *intf);
|
||||
typedef int (*DestroyDRMManager)();
|
||||
|
||||
/*
|
||||
* DRM Manager Interface - Any class which plans to implement helper function for vendor
|
||||
|
||||
@@ -51,6 +51,14 @@ DRMLibLoader *DRMLibLoader::GetInstance() {
|
||||
return s_instance;
|
||||
}
|
||||
|
||||
void DRMLibLoader::Destroy() {
|
||||
lock_guard<mutex> obj(s_lock);
|
||||
if (s_instance) {
|
||||
delete s_instance;
|
||||
s_instance = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
DRMLibLoader::DRMLibLoader() {
|
||||
if (Open("libsdedrm.so")) {
|
||||
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) {
|
||||
lib_ = ::dlopen(lib_name, RTLD_NOW);
|
||||
|
||||
|
||||
@@ -37,12 +37,13 @@ namespace drm_utils {
|
||||
|
||||
class DRMLibLoader {
|
||||
public:
|
||||
~DRMLibLoader() {}
|
||||
~DRMLibLoader();
|
||||
bool IsLoaded() { return is_loaded_; }
|
||||
sde_drm::GetDRMManager FuncGetDRMManager() { return func_get_drm_manager_; }
|
||||
sde_drm::DestroyDRMManager FuncDestroyDRMManager() { return func_destroy_drm_manager_; }
|
||||
|
||||
static DRMLibLoader *GetInstance();
|
||||
static void Destroy();
|
||||
|
||||
private:
|
||||
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) {
|
||||
HWDynBwLimitInfo* bw_info = &hw_resource->dyn_bw_info;
|
||||
for (int index = 0; index < kBwModeMax; index++) {
|
||||
|
||||
@@ -44,6 +44,7 @@ namespace sdm {
|
||||
class HWInfoDRM: public HWInfoInterface {
|
||||
public:
|
||||
HWInfoDRM();
|
||||
virtual ~HWInfoDRM();
|
||||
virtual DisplayError GetHWResourceInfo(HWResourceInfo *hw_resource);
|
||||
virtual DisplayError GetFirstDisplayInterfaceType(HWDisplayInterfaceInfo *hw_disp_info);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user