From 7784c0d0aa32f7d3a565f915c86a25d453e03328 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= Date: Thu, 9 May 2024 11:06:38 +0200 Subject: [PATCH] kms/connector: Allow to force connectors for lease Add an environment variable (MUTTER_DEBUG_LEASE_CONNECTORS) that allows set a ":" separated list of connector names as available for lease. The names of the connectors can be found in "/sys/class/drm". To illustrate it with an example, the names of the connectors and its status can be fetched with this command: $ for p in /sys/class/drm/*/status; do con=${p%/status}; echo -n "${con#*/card?-}: "; cat $p; done DP-1: disconnected DP-2: disconnected DP-3: disconnected DP-4: disconnected DP-5: connected DP-6: connected DP-7: disconnected eDP-1: connected HDMI-A-1: disconnected And, to set "DP-5" and "DP-6" available for lease, the environment variable can be set like: MUTTER_DEBUG_LEASE_CONNECTORS=DP-5:DP-6 Part-of: --- src/backends/native/meta-kms-connector.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/backends/native/meta-kms-connector.c b/src/backends/native/meta-kms-connector.c index 590b5869a..437eef11f 100644 --- a/src/backends/native/meta-kms-connector.c +++ b/src/backends/native/meta-kms-connector.c @@ -167,7 +167,26 @@ meta_kms_connector_get_current_state (MetaKmsConnector *connector) gboolean meta_kms_connector_is_for_lease (MetaKmsConnector *connector) { - return connector->current_state && connector->current_state->non_desktop; + const char *lease_connectors_str; + + if (!connector->current_state) + return FALSE; + + lease_connectors_str = getenv ("MUTTER_DEBUG_LEASE_CONNECTORS"); + if (lease_connectors_str && *lease_connectors_str != '\0') + { + int n; + g_auto (GStrv) names; + + names = g_strsplit (lease_connectors_str, ":", -1); + for (n = 0; n < g_strv_length (names); n++) + { + if (g_str_equal (meta_kms_connector_get_name (connector), names[n])) + return TRUE; + } + } + + return connector->current_state->non_desktop; } static gboolean