diff options
Diffstat (limited to 'drm-lease-manager/lease-manager.c')
-rw-r--r-- | drm-lease-manager/lease-manager.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/drm-lease-manager/lease-manager.c b/drm-lease-manager/lease-manager.c index 177a241..3834631 100644 --- a/drm-lease-manager/lease-manager.c +++ b/drm-lease-manager/lease-manager.c @@ -356,11 +356,27 @@ static struct lease *lease_create(struct lm *lm, for (int i = 0; i < nconnectors; i++) { uint32_t cid; + struct connector_config *con_config = NULL; - if (config->nconnectors > 0) { - char *connector_name = config->connectors[i].name; + if (config->nconnectors > 0) + con_config = &config->connectors[i]; - if (!drm_find_connector(lm, connector_name, &cid)) { + if (con_config) { + char *connector_name = con_config->name; + bool optional = con_config->optional; + + bool found = + drm_find_connector(lm, connector_name, &cid); + + bool missing_mandatory = !found && !optional; + bool missing_optional = !found && optional; + + if (missing_mandatory) { + ERROR_LOG("Lease: %s, " + "mandatory connector %s not found\n", + config->lease_name, connector_name); + goto err; + } else if (missing_optional) { WARN_LOG("Lease: %s, " "unknown DRM connector: %s\n", config->lease_name, connector_name); |