summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPekka Paalanen <pekka.paalanen@collabora.co.uk>2015-08-19 15:25:57 +0300
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2015-08-21 14:46:41 +0300
commit89c49b3060a115e846ba1e7fbef94d14894244f2 (patch)
tree80bbb36b3432b2be6424ef91fb4e68a98ead2142
parentcf34dc2334729a152a9a952b65c3b05f3cc0454e (diff)
compositor-drm: rename outputs to follow kernel style
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@collabora.co.uk> Reviewed-by: Derek Foreman <derekf@osg.samsung.com> Tested-by: Drew DeVault <sir@cmpwn.com>
-rw-r--r--src/compositor-drm.c42
1 files changed, 23 insertions, 19 deletions
diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index c647fcd8..c85a4625 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);
}