drm_hwcomposer: Tidy-up DrmConnector class
Implement DrmConnector instantiation through CreateInstance() static method,
which helps to reduce complexity of DrmDevice::Init() function.
Move Connector-to-CRTC binding information to the DrmDevice class.
Move drm/DrmConnector.h to Normal clang-tidy checks list by fixing
clang-tidy findings.
Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
diff --git a/hwc2_device/DrmHwcTwo.cpp b/hwc2_device/DrmHwcTwo.cpp
index 87cc238..698c1e5 100644
--- a/hwc2_device/DrmHwcTwo.cpp
+++ b/hwc2_device/DrmHwcTwo.cpp
@@ -165,42 +165,40 @@
void DrmHwcTwo::HandleInitialHotplugState(DrmDevice *drmDevice) {
for (const auto &conn : drmDevice->connectors()) {
- int display_id = conn->display();
+ int display_id = drmDevice->GetDisplayId(conn.get());
auto &display = displays_.at(display_id);
- if (conn->state() != DRM_MODE_CONNECTED && !display.IsInHeadlessMode())
+ if (!conn->IsConnected() && !display.IsInHeadlessMode())
continue;
- HandleDisplayHotplug(conn->display(), display.IsInHeadlessMode()
- ? DRM_MODE_CONNECTED
- : conn->state());
+ HandleDisplayHotplug(display_id, display.IsInHeadlessMode()
+ ? 1
+ : (conn->IsConnected() ? 1 : 0));
}
}
void DrmHwcTwo::HandleHotplugUEvent() {
for (const auto &drm : resource_manager_.GetDrmDevices()) {
for (const auto &conn : drm->connectors()) {
- drmModeConnection old_state = conn->state();
- drmModeConnection cur_state = conn->UpdateModes()
- ? DRM_MODE_UNKNOWNCONNECTION
- : conn->state();
+ int display_id = drm->GetDisplayId(conn.get());
+ bool old_state = conn->IsConnected();
+ bool cur_state = conn->UpdateModes() ? false : conn->IsConnected();
if (cur_state == old_state)
continue;
ALOGI("%s event for connector %u on display %d",
- cur_state == DRM_MODE_CONNECTED ? "Plug" : "Unplug", conn->id(),
- conn->display());
+ cur_state == DRM_MODE_CONNECTED ? "Plug" : "Unplug", conn->GetId(),
+ display_id);
- int display_id = conn->display();
auto &display = displays_.at(display_id);
display.ChosePreferredConfig();
- if (cur_state != DRM_MODE_CONNECTED) {
+ if (cur_state) {
display.ClearDisplay();
}
HandleDisplayHotplug(display_id, display.IsInHeadlessMode()
? DRM_MODE_CONNECTED
- : cur_state);
+ : (cur_state ? 1 : 0));
}
}
}
diff --git a/hwc2_device/HwcDisplay.cpp b/hwc2_device/HwcDisplay.cpp
index f18e00d..54cf867 100644
--- a/hwc2_device/HwcDisplay.cpp
+++ b/hwc2_device/HwcDisplay.cpp
@@ -69,7 +69,7 @@
}
std::stringstream ss;
- ss << "- Display on: " << connector_->name() << "\n"
+ ss << "- Display on: " << connector_->GetName() << "\n"
<< " Flattening state: " << flattening_state_str << "\n"
<< "Statistics since system boot:\n"
<< DumpDelta(total_stats_) << "\n\n"
@@ -363,7 +363,7 @@
HWC2::Error HwcDisplay::GetDisplayName(uint32_t *size, char *name) {
std::ostringstream stream;
- stream << "display-" << connector_->id();
+ stream << "display-" << connector_->GetId();
std::string string = stream.str();
size_t length = string.length();
if (!name) {
@@ -715,9 +715,9 @@
/* Primary display should be always internal,
* otherwise SF will be unhappy and will crash
*/
- if (connector_->internal() || handle_ == kPrimaryDisplay)
+ if (connector_->IsInternal() || handle_ == kPrimaryDisplay)
*outType = static_cast<uint32_t>(HWC2::DisplayConnectionType::Internal);
- else if (connector_->external())
+ else if (connector_->IsExternal())
*outType = static_cast<uint32_t>(HWC2::DisplayConnectionType::External);
else
return HWC2::Error::BadConfig;
@@ -785,7 +785,7 @@
} else {
*outDataSize = blob->length;
}
- *outPort = connector_->id();
+ *outPort = connector_->GetId();
return HWC2::Error::None;
}
diff --git a/hwc2_device/HwcDisplay.h b/hwc2_device/HwcDisplay.h
index 76456b7..3e8a548 100644
--- a/hwc2_device/HwcDisplay.h
+++ b/hwc2_device/HwcDisplay.h
@@ -209,8 +209,7 @@
* https://source.android.com/devices/graphics/hotplug#handling-common-scenarios
*/
bool IsInHeadlessMode() {
- return handle_ == kPrimaryDisplay &&
- connector_->state() != DRM_MODE_CONNECTED;
+ return handle_ == kPrimaryDisplay && !connector_->IsConnected();
}
private:
diff --git a/hwc2_device/HwcDisplayConfigs.cpp b/hwc2_device/HwcDisplayConfigs.cpp
index 16f1ed0..f6ccdb7 100644
--- a/hwc2_device/HwcDisplayConfigs.cpp
+++ b/hwc2_device/HwcDisplayConfigs.cpp
@@ -61,14 +61,14 @@
return HWC2::Error::BadDisplay;
}
- if (connector.modes().empty()) {
+ if (connector.GetModes().empty()) {
ALOGE("No modes reported by KMS");
return HWC2::Error::BadDisplay;
}
hwc_configs.clear();
- mm_width = connector.mm_width();
- mm_height = connector.mm_height();
+ mm_width = connector.GetMmWidth();
+ mm_height = connector.GetMmHeight();
preferred_config_id = 0;
int preferred_config_group_id = 0;
@@ -77,7 +77,7 @@
int last_group_id = 1;
/* Group modes */
- for (const auto &mode : connector.modes()) {
+ for (const auto &mode : connector.GetModes()) {
/* Find group for the new mode or create new group */
int group_found = 0;
for (auto &hwc_config : hwc_configs) {