diff options
author | Robert Foss <robert.foss@collabora.com> | 2016-01-12 15:41:53 -0600 |
---|---|---|
committer | Robert Foss <robert.foss@collabora.com> | 2017-03-22 14:38:44 -0400 |
commit | 38ce0ff6bba9d00e48c2061b29de4d95cf35e7a4 (patch) | |
tree | 74eb2ccecb4bd8910cf65dabcbc7a17acc627c33 | |
parent | e0fc29fef0a721e8e0f22810acde6cf2d28f8f03 (diff) | |
download | drm_hwcomposer-38ce0ff6bba9d00e48c2061b29de4d95cf35e7a4.tar.gz drm_hwcomposer-38ce0ff6bba9d00e48c2061b29de4d95cf35e7a4.tar.xz |
drm_hwcomposer: Add HDMI connector as a valid type
Accept DRM_MODE_CONNECTOR_HDMIA connector type.
Look for primary DrmConnector amongst external connectors
after looking for primary amongst internal ones first.
Change-Id: I494bc5759cc699a83611374d3650d0c8625fedfb
Signed-off-by: Robert Foss <robert.foss@collabora.com>
-rw-r--r-- | drmconnector.cpp | 10 | ||||
-rw-r--r-- | drmconnector.h | 4 | ||||
-rw-r--r-- | drmresources.cpp | 16 |
3 files changed, 26 insertions, 4 deletions
diff --git a/drmconnector.cpp b/drmconnector.cpp index 38b4f9b..a71683f 100644 --- a/drmconnector.cpp +++ b/drmconnector.cpp @@ -67,11 +67,19 @@ void DrmConnector::set_display(int display) { display_ = display; } -bool DrmConnector::built_in() const { +bool DrmConnector::internal() const { return type_ == DRM_MODE_CONNECTOR_LVDS || type_ == DRM_MODE_CONNECTOR_eDP || type_ == DRM_MODE_CONNECTOR_DSI || type_ == DRM_MODE_CONNECTOR_VIRTUAL; } +bool DrmConnector::external() const { + return type_ == DRM_MODE_CONNECTOR_HDMIA; +} + +bool DrmConnector::valid_type() const { + return internal() || external(); +} + int DrmConnector::UpdateModes() { int fd = drm_->fd(); diff --git a/drmconnector.h b/drmconnector.h index e1488bb..5601e06 100644 --- a/drmconnector.h +++ b/drmconnector.h @@ -44,7 +44,9 @@ class DrmConnector { int display() const; void set_display(int display); - bool built_in() const; + bool internal() const; + bool external() const; + bool valid_type() const; int UpdateModes(); diff --git a/drmresources.cpp b/drmresources.cpp index 0578cc6..17c912a 100644 --- a/drmresources.cpp +++ b/drmresources.cpp @@ -154,16 +154,28 @@ int DrmResources::Init() { break; } - if (conn->built_in() && !found_primary) { + connectors_.emplace_back(std::move(conn)); + } + + // First look for primary amongst internal connectors + for (auto &conn : connectors_) { + if (conn->internal() && !found_primary) { conn->set_display(0); found_primary = true; } else { conn->set_display(display_num); ++display_num; } + } - connectors_.emplace_back(std::move(conn)); + // Then look for primary amongst external connectors + for (auto &conn : connectors_) { + if (conn->external() && !found_primary) { + conn->set_display(0); + found_primary = true; + } } + if (res) drmModeFreeResources(res); |