Blob Blame History Raw
This fixes ClanLib picking 1368x768 when an app asks for 1024x768 and the
mode list includes both 1368x768 and 1024x768.
diff -ur ClanLib-0.6.5.new/Sources/Display/Display/X11/display_xwindow.cpp ClanLib-0.6.5/Sources/Display/Display/X11/display_xwindow.cpp
--- ClanLib-0.6.5.new/Sources/Display/Display/X11/display_xwindow.cpp	2019-11-05 15:30:21.875867133 +0100
+++ ClanLib-0.6.5/Sources/Display/Display/X11/display_xwindow.cpp	2019-11-05 16:31:56.920319672 +0100
@@ -377,9 +377,12 @@
 {
 	XF86VidModeModeInfo *a = *(XF86VidModeModeInfo**)va;
 	XF86VidModeModeInfo *b = *(XF86VidModeModeInfo**)vb;
-	if(a->hdisplay > b->hdisplay)
-		return -1;
-	return b->vdisplay - a->vdisplay;
+	int diff = 0;
+
+	// Prioritize vertical difference over horizontal ones
+	diff += (b->vdisplay - a->vdisplay) * 1000;
+	diff += (b->hdisplay - a->hdisplay);
+	return diff;
 }
 #endif
 
diff -ur ClanLib-0.6.5.new/Sources/Display/Display/X11/x11_resolution.cpp ClanLib-0.6.5/Sources/Display/Display/X11/x11_resolution.cpp
--- ClanLib-0.6.5.new/Sources/Display/Display/X11/x11_resolution.cpp	2019-11-05 12:17:12.069830146 +0100
+++ ClanLib-0.6.5/Sources/Display/Display/X11/x11_resolution.cpp	2019-11-05 16:27:10.609124412 +0100
@@ -142,9 +142,12 @@
 {
 	XF86VidModeModeInfo *a = *(XF86VidModeModeInfo**)va;
 	XF86VidModeModeInfo *b = *(XF86VidModeModeInfo**)vb;
-	if(a->hdisplay > b->hdisplay)
-		return -1;
-	return b->vdisplay - a->vdisplay;
+	int diff = 0;
+
+	// Prioritize vertical difference over horizontal ones
+	diff += (b->vdisplay - a->vdisplay) * 1000;
+	diff += (b->hdisplay - a->hdisplay);
+	return diff;
 }
 
 XF86VidModeModeInfo CL_X11Resolution::get_best_mode(int width, int height)