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:
Saurabh Shah
2017-02-08 15:41:08 -08:00
parent 672f0f7884
commit ab7807cd51
5 changed files with 29 additions and 2 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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();

View File

@@ -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++) {

View File

@@ -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);