#include <xf86drm.h>
#include <xf86drmMode.h>
-#include <cutils/log.h>
+#include <log/log.h>
#include <cutils/properties.h>
namespace android {
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->state() == DRM_MODE_CONNECTED && 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->state() == DRM_MODE_CONNECTED && conn->external() && !found_primary) {
+ conn->set_display(0);
+ found_primary = true;
+ }
}
+
if (res)
drmModeFreeResources(res);
return NULL;
}
+const std::vector<std::unique_ptr<DrmCrtc>> & DrmResources::crtcs() const {
+ return crtcs_;
+}
+
uint32_t DrmResources::next_mode_id() {
return ++mode_id_;
}
int DrmResources::CreateDisplayPipe(DrmConnector *connector) {
int display = connector->display();
+
+ // skip not connected
+ if (connector->state() == DRM_MODE_DISCONNECTED)
+ return 0;
+
/* Try to use current setup first */
if (connector->encoder()) {
int ret = TryEncoderForDisplay(display, connector->encoder());