xf86-video-intel: src/sna/sna_display.c
Chris Wilson
ickle at kemper.freedesktop.org
Wed Jul 23 22:37:47 PDT 2014
src/sna/sna_display.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
New commits:
commit cac1548a9c48db4707fc3c885b1ea568ae2fbc54
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Thu Jul 24 06:29:54 2014 +0100
sna: Sort the outputs to provide a stable listing order
Make xrandr look neater by grouping the outputs together by type and
then by port ordering.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 26f35ec..135d03a 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -3759,6 +3759,25 @@ static void sna_output_del(xf86OutputPtr output)
to_sna(scrn)->mode.num_real_output--;
}
+static int output_rank(const void *A, const void *B)
+{
+ const xf86OutputPtr *a = A;
+ const xf86OutputPtr *b = B;
+ struct sna_output *sa = to_sna_output(*a);
+ struct sna_output *sb = to_sna_output(*b);
+
+ if (sa->is_panel != sb->is_panel)
+ return sb->is_panel - sa->is_panel;
+
+ return strcmp((*a)->name, (*b)->name);
+}
+
+static void sort_config_outputs(struct sna *sna)
+{
+ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(sna->scrn);
+ qsort(config->output, sna->mode.num_real_output, sizeof(*config->output), output_rank);
+}
+
static void sort_randr_outputs(struct sna *sna, ScreenPtr screen)
{
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(sna->scrn);
@@ -3879,6 +3898,7 @@ void sna_mode_discover(struct sna *sna)
sna_mode_compute_possible_outputs(sna);
/* Reorder user visible listing */
+ sort_config_outputs(sna);
sort_randr_outputs(sna, screen);
if (changed & 2)
@@ -5522,6 +5542,7 @@ bool sna_mode_pre_init(ScrnInfoPtr scrn, struct sna *sna)
sna->mode.num_real_output = xf86_config->num_output;
sna_mode_compute_possible_outputs(sna);
+ sort_config_outputs(sna);
sna->mode.max_crtc_width = res->max_width;
sna->mode.max_crtc_height = res->max_height;
More information about the xorg-commit
mailing list