xf86-video-modesetting: src/drmmode_display.c src/drmmode_display.h

Dave Airlie airlied at kemper.freedesktop.org
Thu Sep 13 17:41:08 PDT 2012


 src/drmmode_display.c |    8 ++++++--
 src/drmmode_display.h |    2 ++
 2 files changed, 8 insertions(+), 2 deletions(-)

New commits:
commit fcf9ddf3c6ddb531020b532123118ab0216e6e65
Author: Alon Levy <alevy at redhat.com>
Date:   Tue Aug 28 11:46:47 2012 +1000

    modesetting: add virtual connector support
    
    [airlied: also make sure we don't crash in future.]
    
    Signed-off-by: Alon Levy <alevy at redhat.com>
    Signed-off-by: Dave Airlie <airlied at redhat.com>

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 5e38265..8d760c2 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -882,7 +882,8 @@ const char *output_names[] = { "None",
 			       "HDMI",
 			       "HDMI",
 			       "TV",
-			       "eDP"
+			       "eDP",
+			       "Virtual"
 };
 
 static void
@@ -913,7 +914,10 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int num, int *num_dv
 	}
 
 	/* need to do smart conversion here for compat with non-kms ATI driver */
-	snprintf(name, 32, "%s-%d", output_names[koutput->connector_type], koutput->connector_type_id - 1);
+	if (koutput->connector_type >= MS_ARRAY_SIZE(output_names))
+		snprintf(name, 32, "Unknown-%d", koutput->connector_type_id - 1);
+	else
+		snprintf(name, 32, "%s-%d", output_names[koutput->connector_type], koutput->connector_type_id - 1);
 
 	output = xf86OutputCreate (pScrn, &drmmode_output_funcs, name);
 	if (!output) {
diff --git a/src/drmmode_display.h b/src/drmmode_display.h
index 24f7960..1d5522b 100644
--- a/src/drmmode_display.h
+++ b/src/drmmode_display.h
@@ -139,5 +139,7 @@ void drmmode_get_default_bpp(ScrnInfoPtr pScrn, drmmode_ptr drmmmode, int *depth
 #define DRM_CAP_DUMB_PREFER_SHADOW 4
 #endif
 
+#define MS_ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
+
 
 #endif


More information about the xorg-commit mailing list