Merge "sdm: Fix memory leak in connector modes"
diff --git a/libdrmutils/drm_interface.h b/libdrmutils/drm_interface.h
index 5dc5e4b..ca2f6ff 100644
--- a/libdrmutils/drm_interface.h
+++ b/libdrmutils/drm_interface.h
@@ -407,8 +407,7 @@
uint32_t mmWidth;
uint32_t mmHeight;
uint32_t type;
- uint32_t num_modes;
- drmModeModeInfo *modes;
+ std::vector<drmModeModeInfo> modes;
DRMTopology topology;
std::string panel_name;
DRMPanelMode panel_mode;
diff --git a/sdm/libs/core/drm/hw_tv_drm.cpp b/sdm/libs/core/drm/hw_tv_drm.cpp
index 0262915..67485f1 100644
--- a/sdm/libs/core/drm/hw_tv_drm.cpp
+++ b/sdm/libs/core/drm/hw_tv_drm.cpp
@@ -104,7 +104,7 @@
}
DisplayError HWTVDRM::GetNumDisplayAttributes(uint32_t *count) {
- *count = connector_info_.num_modes;
+ *count = UINT32(connector_info_.modes.size());
if (*count <= 0) {
return kErrorHardware;
}
@@ -118,7 +118,7 @@
}
DisplayError HWTVDRM::SetDisplayAttributes(uint32_t index) {
- if (index >= connector_info_.num_modes) {
+ if (index >= connector_info_.modes.size()) {
return kErrorNotSupported;
}
@@ -162,7 +162,7 @@
format = UINT32(stoi(str4.substr(str4.find(':') + 1)));
}
- for (size_t idex = 0; idex < connector_info_.num_modes; idex ++) {
+ for (size_t idex = 0; idex < connector_info_.modes.size(); idex ++) {
if ((height == connector_info_.modes[idex].vdisplay) &&
(width == connector_info_.modes[idex].hdisplay) &&
(fps == connector_info_.modes[idex].vrefresh)) {
diff --git a/sdm/libs/core/drm/hw_virtual_drm.cpp b/sdm/libs/core/drm/hw_virtual_drm.cpp
index 8513e82..5ea76b0 100644
--- a/sdm/libs/core/drm/hw_virtual_drm.cpp
+++ b/sdm/libs/core/drm/hw_virtual_drm.cpp
@@ -121,7 +121,7 @@
}
void HWVirtualDRM::DumpConfigs() {
- for (uint32_t i = 0; i < (uint32_t)connector_info_.num_modes; i++) {
+ for (uint32_t i = 0; i < (uint32_t)connector_info_.modes.size(); i++) {
DLOGI(
"Name: %s\tvref: %d\thdisp: %d\t hsync_s: %d\thsync_e:%d\thtotal: %d\t"
"vdisp: %d\tvsync_s: %d\tvsync_e: %d\tvtotal: %d\n",