summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/igt_kms.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index e9c89617..7d533603 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -865,16 +865,6 @@ static bool _kmstest_connector_config(int drm_fd, uint32_t connector_id,
if (!connector)
goto err2;
- if (connector->connection != DRM_MODE_CONNECTED)
- goto err3;
-
- if (!connector->count_modes) {
- igt_warn("connector %d/%s-%d has no modes\n", connector_id,
- kmstest_connector_type_str(connector->connector_type),
- connector->connector_type_id);
- goto err3;
- }
-
if (connector->connector_id != connector_id) {
igt_warn("connector id doesn't match (%d != %d)\n",
connector->connector_id, connector_id);
@@ -888,8 +878,10 @@ static bool _kmstest_connector_config(int drm_fd, uint32_t connector_id,
*/
_kmstest_connector_config_crtc_mask(drm_fd, connector, config);
- if (!kmstest_get_connector_default_mode(drm_fd, connector,
- &config->default_mode))
+ if (!connector->count_modes)
+ memset(&config->default_mode, 0, sizeof(config->default_mode));
+ else if (!kmstest_get_connector_default_mode(drm_fd, connector,
+ &config->default_mode))
goto err3;
config->connector = connector;
@@ -904,8 +896,17 @@ static bool _kmstest_connector_config(int drm_fd, uint32_t connector_id,
config->encoder = _kmstest_connector_config_find_encoder(drm_fd, connector, config->pipe);
config->crtc = drmModeGetCrtc(drm_fd, resources->crtcs[config->pipe]);
- drmModeFreeResources(resources);
+ if (connector->connection != DRM_MODE_CONNECTED)
+ goto err2;
+
+ if (!connector->count_modes) {
+ igt_warn("connector %d/%s-%d has no modes\n", connector_id,
+ kmstest_connector_type_str(connector->connector_type),
+ connector->connector_type_id);
+ goto err2;
+ }
+ drmModeFreeResources(resources);
return true;
err3:
drmModeFreeConnector(connector);