* Thu Mar 13 2008 Adam Jackson <ajax@redhat.com> 1.4.99.901-8.20080310
- xserver-1.5.0-aspect-match.patch: Fix the RANDR 1.2 initial configuration heuristic for the case where the best possible mode is the first one in the first monitor's mode list.
This commit is contained in:
parent
aea2eff25e
commit
cae9d22d3e
@ -20,7 +20,7 @@
|
|||||||
Summary: X.Org X11 X server
|
Summary: X.Org X11 X server
|
||||||
Name: xorg-x11-server
|
Name: xorg-x11-server
|
||||||
Version: 1.4.99.901
|
Version: 1.4.99.901
|
||||||
Release: 7.%{gitdate}%{?dist}
|
Release: 8.%{gitdate}%{?dist}
|
||||||
URL: http://www.x.org
|
URL: http://www.x.org
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: User Interface/X
|
Group: User Interface/X
|
||||||
@ -66,6 +66,7 @@ Patch5005: xserver-1.5.0-unselinux.patch
|
|||||||
Patch5006: xserver-1.5.0-ia64.patch
|
Patch5006: xserver-1.5.0-ia64.patch
|
||||||
Patch5007: xserver-1.5.0-bad-fbdev-thats-mine.patch
|
Patch5007: xserver-1.5.0-bad-fbdev-thats-mine.patch
|
||||||
Patch5008: xserver-1.5.0-xaa-sucks.patch
|
Patch5008: xserver-1.5.0-xaa-sucks.patch
|
||||||
|
Patch5009: xserver-1.5.0-aspect-match.patch
|
||||||
|
|
||||||
%define moduledir %{_libdir}/xorg/modules
|
%define moduledir %{_libdir}/xorg/modules
|
||||||
%define drimoduledir %{_libdir}/dri
|
%define drimoduledir %{_libdir}/dri
|
||||||
@ -514,6 +515,11 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Mar 13 2008 Adam Jackson <ajax@redhat.com> 1.4.99.901-8.20080310
|
||||||
|
- xserver-1.5.0-aspect-match.patch: Fix the RANDR 1.2 initial configuration
|
||||||
|
heuristic for the case where the best possible mode is the first one in
|
||||||
|
the first monitor's mode list.
|
||||||
|
|
||||||
* Thu Mar 13 2008 Adam Jackson <ajax@redhat.com> 1.4.99.901-7.20080310
|
* Thu Mar 13 2008 Adam Jackson <ajax@redhat.com> 1.4.99.901-7.20080310
|
||||||
- xserver-1.5.0-xaa-sucks: Disable XAA offscreen pixmaps by default. They're
|
- xserver-1.5.0-xaa-sucks: Disable XAA offscreen pixmaps by default. They're
|
||||||
almost always a performance loss anyway. Use Option "XaaOffscreenPixmaps"
|
almost always a performance loss anyway. Use Option "XaaOffscreenPixmaps"
|
||||||
|
92
xserver-1.5.0-aspect-match.patch
Normal file
92
xserver-1.5.0-aspect-match.patch
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
From ee98a88b16133b1e2b8532678ea9e06868db7407 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Adam Jackson <ajax@redhat.com>
|
||||||
|
Date: Thu, 13 Mar 2008 14:06:18 -0400
|
||||||
|
Subject: [PATCH] Fix xf86TargetAspect() to, er, work.
|
||||||
|
|
||||||
|
nextAspectMode() was always skipping the first mode in the mode list, which
|
||||||
|
was problematic if that was the best possible mode...
|
||||||
|
---
|
||||||
|
hw/xfree86/modes/xf86Crtc.c | 51 ++++++++++++++++++++++--------------------
|
||||||
|
1 files changed, 27 insertions(+), 24 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
|
||||||
|
index 0bef5b4..2b07421 100644
|
||||||
|
--- a/hw/xfree86/modes/xf86Crtc.c
|
||||||
|
+++ b/hw/xfree86/modes/xf86Crtc.c
|
||||||
|
@@ -1674,14 +1674,19 @@ aspectMatch(float a, float b)
|
||||||
|
}
|
||||||
|
|
||||||
|
static DisplayModePtr
|
||||||
|
-nextAspectMode(DisplayModePtr start, float aspect)
|
||||||
|
+nextAspectMode(xf86OutputPtr o, DisplayModePtr last, float aspect)
|
||||||
|
{
|
||||||
|
- DisplayModePtr m = start;
|
||||||
|
+ DisplayModePtr m = NULL;
|
||||||
|
|
||||||
|
- if (!m)
|
||||||
|
+ if (!o)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
- for (m = m->next; m; m = m->next)
|
||||||
|
+ if (!last)
|
||||||
|
+ m = o->probed_modes;
|
||||||
|
+ else
|
||||||
|
+ m = last->next;
|
||||||
|
+
|
||||||
|
+ for (; m; m = m->next)
|
||||||
|
if (aspectMatch(aspect, (float)m->HDisplay / (float)m->VDisplay))
|
||||||
|
return m;
|
||||||
|
|
||||||
|
@@ -1691,31 +1696,29 @@ nextAspectMode(DisplayModePtr start, float aspect)
|
||||||
|
static DisplayModePtr
|
||||||
|
bestModeForAspect(xf86CrtcConfigPtr config, Bool *enabled, float aspect)
|
||||||
|
{
|
||||||
|
- int o, p;
|
||||||
|
- DisplayModePtr mode, test = NULL, match = NULL;
|
||||||
|
+ int o = -1, p;
|
||||||
|
+ DisplayModePtr mode = NULL, test = NULL, match = NULL;
|
||||||
|
|
||||||
|
- for (o = -1; nextEnabledOutput(config, enabled, &o); ) {
|
||||||
|
- mode = config->output[o]->probed_modes;
|
||||||
|
- while ((mode = nextAspectMode(mode, aspect))) {
|
||||||
|
- for (p = o; nextEnabledOutput(config, enabled, &p); ) {
|
||||||
|
- test = xf86OutputFindClosestMode(config->output[p], mode);
|
||||||
|
- if (!test)
|
||||||
|
- break;
|
||||||
|
- if (test->HDisplay != mode->HDisplay ||
|
||||||
|
+ nextEnabledOutput(config, enabled, &o);
|
||||||
|
+ while ((mode = nextAspectMode(config->output[o], mode, aspect))) {
|
||||||
|
+ for (p = o; nextEnabledOutput(config, enabled, &p); ) {
|
||||||
|
+ test = xf86OutputFindClosestMode(config->output[p], mode);
|
||||||
|
+ if (!test)
|
||||||
|
+ break;
|
||||||
|
+ if (test->HDisplay != mode->HDisplay ||
|
||||||
|
test->VDisplay != mode->VDisplay) {
|
||||||
|
- test = NULL;
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
+ test = NULL;
|
||||||
|
+ break;
|
||||||
|
}
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- /* if we didn't match it on all outputs, try the next one */
|
||||||
|
- if (!test)
|
||||||
|
- continue;
|
||||||
|
+ /* if we didn't match it on all outputs, try the next one */
|
||||||
|
+ if (!test)
|
||||||
|
+ continue;
|
||||||
|
|
||||||
|
- /* if it's bigger than the last one, save it */
|
||||||
|
- if (!match || (test->HDisplay > match->HDisplay))
|
||||||
|
- match = test;
|
||||||
|
- }
|
||||||
|
+ /* if it's bigger than the last one, save it */
|
||||||
|
+ if (!match || (test->HDisplay > match->HDisplay))
|
||||||
|
+ match = test;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* return the biggest one found */
|
||||||
|
--
|
||||||
|
1.5.4.3
|
||||||
|
|
Loading…
Reference in New Issue
Block a user