[PATCH weston] compositor-drm: rename outputs to follow kernel style

Pekka Paalanen ppaalanen at gmail.com
Wed Aug 19 05:54:30 PDT 2015


From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>

The problem with the old table of names is that it contains duplicates.
It is possible to end up with multiple outputs with the same name. In
that case you cannot write individual configurations for these outputs
in weston.ini, because they are matched by the name.

Change all names to follow the kernel naming scheme set in
drivers/gpu/drm/drm_crtc.c. The snprintf format now follows the kernel
style, too. Use the DRM_MODE_CONNECTOR_* macros rather than implicit
table ordering.

Completely new entries in the table are "Virtual" and "DSI".

There should not be any gaps in the macro values, but if there are, deal
with a NULL entry.

Also change "UNKNOWN" to "UNNAMED" so it's easier to distinguish from
"Unknown" by the kernel.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89361
Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
---
 src/compositor-drm.c | 42 +++++++++++++++++++++++-------------------
 1 file changed, 23 insertions(+), 19 deletions(-)

diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 26f0012..400bc0c 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -1745,34 +1745,38 @@ drm_set_dpms(struct weston_output *output_base, enum dpms_enum level)
 }
 
 static const char * const connector_type_names[] = {
-	"None",
-	"VGA",
-	"DVI",
-	"DVI",
-	"DVI",
-	"Composite",
-	"TV",
-	"LVDS",
-	"CTV",
-	"DIN",
-	"DP",
-	"HDMI",
-	"HDMI",
-	"TV",
-	"eDP",
+	[DRM_MODE_CONNECTOR_Unknown]     = "Unknown",
+	[DRM_MODE_CONNECTOR_VGA]         = "VGA",
+	[DRM_MODE_CONNECTOR_DVII]        = "DVI-I",
+	[DRM_MODE_CONNECTOR_DVID]        = "DVI-D",
+	[DRM_MODE_CONNECTOR_DVIA]        = "DVI-A",
+	[DRM_MODE_CONNECTOR_Composite]   = "Composite",
+	[DRM_MODE_CONNECTOR_SVIDEO]      = "SVIDEO",
+	[DRM_MODE_CONNECTOR_LVDS]        = "LVDS",
+	[DRM_MODE_CONNECTOR_Component]   = "Component",
+	[DRM_MODE_CONNECTOR_9PinDIN]     = "DIN",
+	[DRM_MODE_CONNECTOR_DisplayPort] = "DP",
+	[DRM_MODE_CONNECTOR_HDMIA]       = "HDMI-A",
+	[DRM_MODE_CONNECTOR_HDMIB]       = "HDMI-B",
+	[DRM_MODE_CONNECTOR_TV]          = "TV",
+	[DRM_MODE_CONNECTOR_eDP]         = "eDP",
+	[DRM_MODE_CONNECTOR_VIRTUAL]     = "Virtual",
+	[DRM_MODE_CONNECTOR_DSI]         = "DSI",
 };
 
 static char *
 make_connector_name(const drmModeConnector *con)
 {
 	char name[32];
-	const char *type_name;
+	const char *type_name = NULL;
 
 	if (con->connector_type < ARRAY_LENGTH(connector_type_names))
 		type_name = connector_type_names[con->connector_type];
-	else
-		type_name = "UNKNOWN";
-	snprintf(name, sizeof name, "%s%d", type_name, con->connector_type_id);
+
+	if (!type_name)
+		type_name = "UNNAMED";
+
+	snprintf(name, sizeof name, "%s-%d", type_name, con->connector_type_id);
 
 	return strdup(name);
 }
-- 
2.4.6



More information about the wayland-devel mailing list