[arch-commits] Commit in xorg-server/repos (4 files)
Jan de Groot
jgc at archlinux.org
Sun Jun 28 11:27:00 UTC 2009
Date: Sunday, June 28, 2009 @ 07:27:00
Author: jgc
Revision: 43672
Merged revisions 40682,43588,43620 via svnmerge from
svn+ssh://svn.archlinux.org/srv/svn-packages/xorg-server/trunk
........
r40682 | jgc | 2009-05-29 19:55:34 +0200 (Fri, 29 May 2009) | 2 lines
Fix FS#14408
........
r43588 | jgc | 2009-06-25 17:24:21 +0200 (Thu, 25 Jun 2009) | 2 lines
upgpkg: xorg-server 1.6.1.901-3
Include new patches, merge the fedora patch to the pending patchset, build with mesa 7.4.4 and driproto 2.1
........
r43620 | jgc | 2009-06-25 20:37:51 +0200 (Thu, 25 Jun 2009) | 1 line
upgpkg: xorg-server 1.6.1.901-3
........
Modified:
xorg-server/repos/extra-i686/ (properties)
xorg-server/repos/extra-i686/PKGBUILD
xorg-server/repos/extra-i686/pending-1.6.2.patch
xorg-server/repos/extra-i686/server-1.6-branch.patch
-------------------------+
PKGBUILD | 30 ++--
pending-1.6.2.patch | 215 ++++++++++++++++++++++++++++++++
server-1.6-branch.patch | 304 ++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 534 insertions(+), 15 deletions(-)
Property changes on: xorg-server/repos/extra-i686
___________________________________________________________________
Modified: svnmerge-integrated
- /xorg-server/trunk:1-40344
+ /xorg-server/trunk:1-43671
Modified: extra-i686/PKGBUILD
===================================================================
--- extra-i686/PKGBUILD 2009-06-28 11:18:51 UTC (rev 43671)
+++ extra-i686/PKGBUILD 2009-06-28 11:27:00 UTC (rev 43672)
@@ -4,26 +4,26 @@
pkgname=xorg-server
pkgver=1.6.1.901
-pkgrel=1
+pkgrel=3
pkgdesc="X.Org X servers"
arch=('i686' 'x86_64')
license=('custom')
url="http://xorg.freedesktop.org"
depends=('hal>=0.5.11' 'libgl' 'libxfont>=1.4.0' 'openssl>=0.9.8j' 'libpciaccess>=0.10.5' 'libxv>=1.0.4' 'pixman>=0.14.0' 'xcursor-themes' 'xkeyboard-config>=1.6' 'xorg-server-utils' 'xorg-fonts-misc' 'xbitmaps' 'diffutils' 'xf86-input-evdev>=2.2.2')
-makedepends=('libx11>=1.2.1' 'mesa>=7.4.2' 'xf86driproto>=2.0.4' 'xtrans>=1.2.3' 'libxkbfile>=1.0.5' 'randrproto>=1.3.0' 'renderproto>=0.9.3' 'xcmiscproto>=1.1.2' 'bigreqsproto>=1.0.2' 'resourceproto>=1.0.2' 'videoproto>=2.2.2' 'compositeproto>=0.4' 'scrnsaverproto>=1.1.0' 'libxinerama>=1.0.3' 'xf86dgaproto>=2.0.3' 'recordproto>=1.13.2' 'libgl>=7.4.2' 'glproto>=1.4.9')
+makedepends=('libx11>=1.2.1' 'mesa>=7.4.4' 'xf86driproto>=2.0.4' 'xtrans>=1.2.3' 'libxkbfile>=1.0.5' 'randrproto>=1.3.0' 'renderproto>=0.9.3' 'xcmiscproto>=1.1.2' 'bigreqsproto>=1.0.2' 'resourceproto>=1.0.2' 'videoproto>=2.2.2' 'compositeproto>=0.4' 'scrnsaverproto>=1.1.0' 'libxinerama>=1.0.3' 'xf86dgaproto>=2.0.3' 'recordproto>=1.13.2' 'libgl>=7.4.4' 'glproto>=1.4.9')
conflicts=('catalyst-utils<=9.2')
options=('!libtool')
provides=('x-server')
groups=('xorg')
install=xorg-server.install
source=(${url}/releases/individual/xserver/${pkgname}-${pkgver}.tar.bz2
- xorg-redhat-die-ugly-pattern-die-die-die.patch
- server-1.6-branch.patch
- pending-1.6.2.patch)
+ xorg-redhat-die-ugly-pattern-die-die-die.patch
+ server-1.6-branch.patch
+ pending-1.6.2.patch)
md5sums=('e6cba1f07006143daa95ce3f11d999b2'
'1a336eb22e27cbf443ec5a2ecddfa93c'
- '99cd540797beb6245ecb7c9f3a7e0eb6'
- '3c99aff6d7253e6828924f1b9d2fae8e')
+ '4137ebc011080b0d7afa271376653ab7'
+ '06f41b42664b6dc9b56abdc0858901e4')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
@@ -31,10 +31,10 @@
patch -Np3 -i "${srcdir}/xorg-redhat-die-ugly-pattern-die-die-die.patch" || return 1
# Upstream updates from server-1.6 branch
+ # DRI2 parts removed
patch -Np1 -i "${srcdir}/server-1.6-branch.patch" || return 1
# Pending updates for 1.6.2 - http://wiki.x.org/wiki/Server16Branch
- # Excludes suggested DRI2 patches
patch -Np1 -i "${srcdir}/pending-1.6.2.patch" || return 1
# Fix dbus config path
@@ -49,16 +49,16 @@
--enable-composite \
--enable-xcsecurity \
--enable-xorg \
- --enable-xephyr \
+ --enable-xephyr \
--enable-glx-tls \
- --enable-kdrive \
+ --enable-kdrive \
--enable-install-setuid \
--enable-config-hal \
- --enable-config-dbus \
- --enable-record \
- --disable-xfbdev \
- --disable-xfake \
- --disable-xsdl \
+ --enable-config-dbus \
+ --enable-record \
+ --disable-xfbdev \
+ --disable-xfake \
+ --disable-xsdl \
--disable-static \
--sysconfdir=/etc/X11 \
--localstatedir=/var \
Modified: extra-i686/pending-1.6.2.patch
===================================================================
--- extra-i686/pending-1.6.2.patch 2009-06-28 11:18:51 UTC (rev 43671)
+++ extra-i686/pending-1.6.2.patch 2009-06-28 11:27:00 UTC (rev 43672)
@@ -1590,3 +1590,218 @@
--
1.6.2.4
+cgit v0.8.2
+From 6f9e22049862ee9ac7f604411d005d8bb1b2dd1c Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Mon, 11 May 2009 02:51:40 +0000
+Subject: dix: ensure Activate/DeactivateGrab has a valid value.
+
+Xephyr doesn't manually set Activate/DeactivateGrab for new devices,
+resulting in a NULL-pointer dereference later when a grab is activated.
+Avoid the segfault by ensuring that the pointer is always valid.
+
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+---
+diff --git a/dix/devices.c b/dix/devices.c
+index afe340b..6f464e7 100644
+--- a/dix/devices.c
++++ b/dix/devices.c
+@@ -224,6 +224,8 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
+
+ /* device grab defaults */
+ dev->deviceGrab.grabTime = currentTime;
++ dev->deviceGrab.ActivateGrab = ActivateKeyboardGrab;
++ dev->deviceGrab.DeactivateGrab = DeactivateKeyboardGrab;
+
+ dev->coreEvents = TRUE;
+
+--
+cgit v0.8.2
+From b1b5ec45c1cb650ccb8c659218f9481379c777d9 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Mon, 11 May 2009 02:53:56 +0000
+Subject: kdrive: set Activate/Deactivate grab for input devices (#21591)
+
+X.Org Bug 21591 <http://bugs.freedesktop.org/show_bug.cgi?id=21591>
+---
+diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
+index 7ed3601..0d216a9 100644
+--- a/hw/kdrive/src/kinput.c
++++ b/hw/kdrive/src/kinput.c
+@@ -915,6 +915,8 @@ KdAddKeyboard (KdKeyboardInfo *ki)
+ return !Success;
+ }
+
++ ki->dixdev->deviceGrab.ActivateGrab = ActivateKeyboardGrab;
++ ki->dixdev->deviceGrab.DeactivateGrab = DeactivateKeyboardGrab;
+ RegisterOtherDevice(ki->dixdev);
+
+ #ifdef DEBUG
+@@ -984,6 +986,8 @@ KdAddPointer (KdPointerInfo *pi)
+ return BadDevice;
+ }
+
++ pi->dixdev->deviceGrab.ActivateGrab = ActivatePointerGrab;
++ pi->dixdev->deviceGrab.DeactivateGrab = DeactivatePointerGrab;
+ RegisterOtherDevice(pi->dixdev);
+
+ for (prev = &kdPointers; *prev; prev = &(*prev)->next);
+--
+cgit v0.8.2
+From e244a5991e2cc55f5aa2f6e5255f1dabf56f0235 Mon Sep 17 00:00:00 2001
+From: Federico Mena Quintero <federico at novell.com>
+Date: Tue, 09 Jun 2009 20:28:28 +0000
+Subject: dix/randr: Add missing fields to SRR*NotifyEvent()
+
+Also, remove redundant field swaps and make others match the order in which
+they are declared in the xRR*NotifyEvent structs.
+
+Signed-off-by: Federico Mena Quintero <federico at novell.com>
+Signed-off-by: Keith Packard <keithp at keithp.com>
+---
+diff --git a/randr/randr.c b/randr/randr.c
+index fd0a30a..1c1d0c4 100644
+--- a/randr/randr.c
++++ b/randr/randr.c
+@@ -115,11 +115,11 @@ SRRScreenChangeNotifyEvent(xRRScreenChangeNotifyEvent *from,
+ cpswapl(from->root, to->root);
+ cpswapl(from->window, to->window);
+ cpswaps(from->sizeID, to->sizeID);
++ cpswaps(from->subpixelOrder, to->subpixelOrder);
+ cpswaps(from->widthInPixels, to->widthInPixels);
+ cpswaps(from->heightInPixels, to->heightInPixels);
+ cpswaps(from->widthInMillimeters, to->widthInMillimeters);
+ cpswaps(from->heightInMillimeters, to->heightInMillimeters);
+- cpswaps(from->subpixelOrder, to->subpixelOrder);
+ }
+
+ static void
+@@ -133,8 +133,8 @@ SRRCrtcChangeNotifyEvent(xRRCrtcChangeNotifyEvent *from,
+ cpswapl(from->window, to->window);
+ cpswapl(from->crtc, to->crtc);
+ cpswapl(from->mode, to->mode);
+- cpswapl(from->window, to->window);
+ cpswaps(from->rotation, to->rotation);
++ /* pad1 */
+ cpswaps(from->x, to->x);
+ cpswaps(from->y, to->y);
+ cpswaps(from->width, to->width);
+@@ -155,6 +155,8 @@ SRROutputChangeNotifyEvent(xRROutputChangeNotifyEvent *from,
+ cpswapl(from->crtc, to->crtc);
+ cpswapl(from->mode, to->mode);
+ cpswaps(from->rotation, to->rotation);
++ to->connection = from->connection;
++ to->subpixelOrder = from->subpixelOrder;
+ }
+
+ static void
+@@ -168,6 +170,11 @@ SRROutputPropertyNotifyEvent(xRROutputPropertyNotifyEvent *from,
+ cpswapl(from->output, to->output);
+ cpswapl(from->atom, to->atom);
+ cpswapl(from->timestamp, to->timestamp);
++ to->state = from->state;
++ /* pad1 */
++ /* pad2 */
++ /* pad3 */
++ /* pad4 */
+ }
+
+ static void
+--
+cgit v0.8.2
+From 69a9545d1f8110841538410818df19fd960412c5 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp at keithp.com>
+Date: Thu, 28 May 2009 21:43:27 +0000
+Subject: Make RANDR 'set' timestamps follow client specified time. Bug 21987.
+
+The lastSetTime value which indicates when the configuration within the
+server was last changed was not getting set in the appropriate RandR
+requests.
+
+Signed-off-by: Keith Packard <keithp at keithp.com>
+---
+diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
+index 287c211..32a0992 100644
+--- a/randr/rrcrtc.c
++++ b/randr/rrcrtc.c
+@@ -978,6 +978,7 @@ ProcRRSetCrtcConfig (ClientPtr client)
+ goto sendReply;
+ }
+ rep.status = RRSetConfigSuccess;
++ pScrPriv->lastSetTime = time;
+
+ sendReply:
+ if (outputs)
+@@ -987,7 +988,7 @@ sendReply:
+ /* rep.status has already been filled in */
+ rep.length = 0;
+ rep.sequenceNumber = client->sequence;
+- rep.newTimestamp = pScrPriv->lastConfigTime.milliseconds;
++ rep.newTimestamp = pScrPriv->lastSetTime.milliseconds;
+
+ if (client->swapped)
+ {
+@@ -1130,6 +1131,8 @@ ProcRRSetPanning (ClientPtr client)
+ if (! pScrPriv->rrSetPanning (pScreen, crtc, &total, &tracking, border))
+ return BadMatch;
+
++ pScrPriv->lastSetTime = time;
++
+ rep.status = RRSetConfigSuccess;
+
+ sendReply:
+diff --git a/randr/rrscreen.c b/randr/rrscreen.c
+index 46890bf..a919ffd 100644
+--- a/randr/rrscreen.c
++++ b/randr/rrscreen.c
+@@ -946,8 +946,10 @@ ProcRRSetScreenConfig (ClientPtr client)
+
+ if (!RRCrtcSet (crtc, mode, 0, 0, stuff->rotation, 1, &output))
+ rep.status = RRSetConfigFailed;
+- else
++ else {
++ pScrPriv->lastSetTime = time;
+ rep.status = RRSetConfigSuccess;
++ }
+
+ /*
+ * XXX Configure other crtcs to mirror as much as possible
+--
+cgit v0.8.2
+From 3323f7ac880d5a8261d5b22059374fc9de8ca683 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer at who-t.net>
+Date: Wed, 25 Mar 2009 12:55:42 +1000
+Subject: [PATCH] xfree86: fix SWCursor check in xf86CursorSetCursor.
+
+Wrong check for inputInfo.pointer resulted in a SW cursor being rendered when
+the pointer left the screen (in a Xinerama setup).
+We must call the sprite rendering function if
+- SW cursors are enabled, or
+- The current device is not the VCP and not attached to the VCP.
+
+Reported-by: Gordon Yuan <GordonYuan at viatech.com.cn>
+Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
+---
+ hw/xfree86/ramdac/xf86Cursor.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/hw/xfree86/ramdac/xf86Cursor.c b/hw/xfree86/ramdac/xf86Cursor.c
+index 2b73b16..896ed37 100644
+--- a/hw/xfree86/ramdac/xf86Cursor.c
++++ b/hw/xfree86/ramdac/xf86Cursor.c
+@@ -302,9 +302,9 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs,
+
+
+ if (pCurs == NullCursor) { /* means we're supposed to remove the cursor */
+- if (ScreenPriv->SWCursor || pDev != inputInfo.pointer)
+- (*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor,
+- x, y);
++ if (ScreenPriv->SWCursor ||
++ !(pDev == inputInfo.pointer || !pDev->isMaster && pDev->u.master == inputInfo.pointer))
++ (*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor, x, y);
+ else if (ScreenPriv->isUp) {
+ xf86SetCursor(pScreen, NullCursor, x, y);
+ ScreenPriv->isUp = FALSE;
+--
+1.6.0.6
+
Modified: extra-i686/server-1.6-branch.patch
===================================================================
--- extra-i686/server-1.6-branch.patch 2009-06-28 11:18:51 UTC (rev 43671)
+++ extra-i686/server-1.6-branch.patch 2009-06-28 11:27:00 UTC (rev 43672)
@@ -471,3 +471,307 @@
(void)DeliverEventsToWindow(dev, pWin, (xEvent *)&ke, 1,
--
cgit v0.8.2
+From c643d24cdeaade8d7839691a3113c4d2d17be61e Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax at redhat.com>
+Date: Fri, 29 May 2009 22:07:48 +0000
+Subject: vfb: Fix depth setup.
+
+Initialize the depth corresponding to the root window before the
+pixmap-only depths. Otherwise you end up with the root window depth in
+the depth list twice, which is mildly confusing for clients and
+catastrophically confusing for PanoramiXConsolidate().
+(cherry picked from commit 45530d16097459a756696e255ab4e72d6e51fbc4)
+---
+diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c
+index 6bf6a33..fd383e1 100644
+--- a/hw/vfb/InitOutput.c
++++ b/hw/vfb/InitOutput.c
+@@ -862,8 +862,6 @@ vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
+ pbits = vfbAllocateFramebufferMemory(pvfb);
+ if (!pbits) return FALSE;
+
+- miSetPixmapDepths ();
+-
+ switch (pvfb->depth) {
+ case 8:
+ miSetVisualTypesAndMasks (8,
+@@ -875,20 +873,6 @@ vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
+ (1 << DirectColor)),
+ 8, PseudoColor, 0, 0, 0);
+ break;
+-#if 0
+- /* 12bit PseudoColor with 12bit color resolution
+- * (to simulate SGI hardware and the 12bit PseudoColor emulation layer) */
+- case 12:
+- miSetVisualTypesAndMasks (12,
+- ((1 << StaticGray) |
+- (1 << GrayScale) |
+- (1 << StaticColor) |
+- (1 << PseudoColor) |
+- (1 << TrueColor) |
+- (1 << DirectColor)),
+- 12, PseudoColor, 0, 0, 0);
+- break;
+-#endif
+ case 15:
+ miSetVisualTypesAndMasks (15,
+ ((1 << TrueColor) |
+@@ -907,18 +891,10 @@ vfbScreenInit(int index, ScreenPtr pScreen, int argc, char **argv)
+ (1 << DirectColor)),
+ 8, TrueColor, 0xff0000, 0x00ff00, 0x0000ff);
+ break;
+-#if 0
+- /* 30bit TrueColor (to simulate Sun's XVR-1000/-4000 high quality
+- * framebuffer series) */
+- case 30:
+- miSetVisualTypesAndMasks (30,
+- ((1 << TrueColor) |
+- (1 << DirectColor)),
+- 10, TrueColor, 0x3ff00000, 0x000ffc00, 0x000003ff);
+- break;
+-#endif
+ }
+-
++
++ miSetPixmapDepths ();
++
+ ret = fbScreenInit(pScreen, pbits, pvfb->width, pvfb->height,
+ dpix, dpiy, pvfb->paddedWidth,pvfb->bitsPerPixel);
+ #ifdef RENDER
+--
+cgit v0.8.2
+From ebca49e0fedcc1c536f1dee7c58cae9903e74fa2 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax at redhat.com>
+Date: Thu, 21 May 2009 14:20:48 +0000
+Subject: EDID: Be more cautious about finding vendor blocks.
+
+Many old monitors zero-fill the detailed descriptors, so check for that
+to avoid a useless warning like:
+
+(WW) RADEON(0): Unknown vendor-specific block 0
+(cherry picked from commit a2c5ee36b21c2ee5c0468f1b251e74c1412dbecb)
+---
+diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c
+index c4d8963..191e900 100644
+--- a/hw/xfree86/ddc/interpret_edid.c
++++ b/hw/xfree86/ddc/interpret_edid.c
+@@ -284,6 +284,8 @@ get_std_timing_section(Uchar *c, struct std_timings *r,
+ }
+ }
+
++static const unsigned char empty_block[18];
++
+ static void
+ get_dt_md_section(Uchar *c, struct edid_version *ver,
+ struct detailed_monitor_section *det_mon)
+@@ -335,10 +337,10 @@ get_dt_md_section(Uchar *c, struct edid_version *ver,
+ det_mon[i].type = DS_UNKOWN;
+ break;
+ }
+- if (c[3] <= 0x0F) {
++ if (c[3] <= 0x0F && memcmp(c, empty_block, sizeof(empty_block))) {
+ det_mon[i].type = DS_VENDOR + c[3];
+ }
+- } else {
++ } else {
+ det_mon[i].type = DT;
+ get_detailed_timing_section(c,&det_mon[i].section.d_timings);
+ }
+--
+cgit v0.8.2
+From db61eff891675aeaf2466c3529424de4621005dc Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax at redhat.com>
+Date: Fri, 22 May 2009 16:01:55 +0000
+Subject: EDID: Add modes from Established Timings III descriptor to mode pool
+
+EDID 1.4, section 3.10.3.9
+(cherry picked from commit 99e22b86c5f1a3653f3caaf01368a777d2b208d0)
+---
+diff --git a/hw/xfree86/ddc/edid.h b/hw/xfree86/ddc/edid.h
+index 45caf6e..3ca402f 100644
+--- a/hw/xfree86/ddc/edid.h
++++ b/hw/xfree86/ddc/edid.h
+@@ -527,7 +527,7 @@ struct detailed_monitor_section {
+ struct whitePoints wp[2]; /* 32 */
+ /* color management data */
+ struct cvt_timings cvt[4]; /* 64 */
+- /* established timings III */
++ Uchar est_iii[6]; /* 6 */
+ } section; /* max: 80 */
+ };
+
+diff --git a/hw/xfree86/ddc/interpret_edid.c b/hw/xfree86/ddc/interpret_edid.c
+index 191e900..310606c 100644
+--- a/hw/xfree86/ddc/interpret_edid.c
++++ b/hw/xfree86/ddc/interpret_edid.c
+@@ -329,6 +329,7 @@ get_dt_md_section(Uchar *c, struct edid_version *ver,
+ break;
+ case ADD_EST_TIMINGS:
+ det_mon[i].type = DS_EST_III;
++ memcpy(det_mon[i].section.est_iii, c + 6, 6);
+ break;
+ case ADD_DUMMY:
+ det_mon[i].type = DS_DUMMY;
+diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c
+index 54f2c65..087f663 100644
+--- a/hw/xfree86/modes/xf86EdidModes.c
++++ b/hw/xfree86/modes/xf86EdidModes.c
+@@ -628,6 +628,85 @@ DDCModesFromCVT(int scrnIndex, struct cvt_timings *t)
+ }
+ #endif
+
++static const struct {
++ short w;
++ short h;
++ short r;
++ short rb;
++} EstIIIModes[] = {
++ /* byte 6 */
++ { 640, 350, 85, 0 },
++ { 640, 400, 85, 0 },
++ { 720, 400, 85, 0 },
++ { 640, 480, 85, 0 },
++ { 848, 480, 60, 0 },
++ { 800, 600, 85, 0 },
++ { 1024, 768, 85, 0 },
++ { 1152, 864, 75, 0 },
++ /* byte 7 */
++ { 1280, 768, 60, 1 },
++ { 1280, 768, 60, 0 },
++ { 1280, 768, 75, 0 },
++ { 1280, 768, 85, 0 },
++ { 1280, 960, 60, 0 },
++ { 1280, 960, 85, 0 },
++ { 1280, 1024, 60, 0 },
++ { 1280, 1024, 85, 0 },
++ /* byte 8 */
++ { 1360, 768, 60, 0 },
++ { 1440, 900, 60, 1 },
++ { 1440, 900, 60, 0 },
++ { 1440, 900, 75, 0 },
++ { 1440, 900, 85, 0 },
++ { 1400, 1050, 60, 1 },
++ { 1400, 1050, 60, 0 },
++ { 1400, 1050, 75, 0 },
++ /* byte 9 */
++ { 1400, 1050, 85, 0 },
++ { 1680, 1050, 60, 1 },
++ { 1680, 1050, 60, 0 },
++ { 1680, 1050, 75, 0 },
++ { 1680, 1050, 85, 0 },
++ { 1600, 1200, 60, 0 },
++ { 1600, 1200, 65, 0 },
++ { 1600, 1200, 70, 0 },
++ /* byte 10 */
++ { 1600, 1200, 75, 0 },
++ { 1600, 1200, 85, 0 },
++ { 1792, 1344, 60, 0 },
++ { 1792, 1344, 85, 0 },
++ { 1856, 1392, 60, 0 },
++ { 1856, 1392, 75, 0 },
++ { 1920, 1200, 60, 1 },
++ { 1920, 1200, 60, 0 },
++ /* byte 11 */
++ { 1920, 1200, 75, 0 },
++ { 1920, 1200, 85, 0 },
++ { 1920, 1440, 60, 0 },
++ { 1920, 1440, 75, 0 },
++};
++
++static DisplayModePtr
++DDCModesFromEstIII(unsigned char *est)
++{
++ DisplayModePtr modes = NULL;
++ int i, j, m;
++
++ for (i = 0; i < 6; i++) {
++ for (j = 7; j > 0; j--) {
++ if (est[i] & (1 << j)) {
++ m = (i * 8) + (7 - j);
++ modes = xf86ModesAdd(modes,
++ FindDMTMode(EstIIIModes[m].w,
++ EstIIIModes[m].h,
++ EstIIIModes[m].r,
++ EstIIIModes[m].rb));
++ }
++ }
++ }
++
++ return modes;
++}
+
+ /*
+ * This is only valid when the sink claims to be continuous-frequency
+@@ -798,6 +877,7 @@ xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC)
+ for (i = 0; i < DET_TIMINGS; i++) {
+ struct detailed_monitor_section *det_mon = &DDC->det_mon[i];
+
++ Mode = NULL;
+ switch (det_mon->type) {
+ case DT:
+ Mode = DDCModeFromDetailedTiming(scrnIndex,
+@@ -805,22 +885,23 @@ xf86DDCGetModes(int scrnIndex, xf86MonPtr DDC)
+ preferred,
+ quirks);
+ preferred = FALSE;
+- Modes = xf86ModesAdd(Modes, Mode);
+ break;
+ case DS_STD_TIMINGS:
+ Mode = DDCModesFromStandardTiming(det_mon->section.std_t,
+ quirks, timing_level, rb);
+- Modes = xf86ModesAdd(Modes, Mode);
+ break;
+ #if XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(7,0,0,0,0)
+ case DS_CVT:
+ Mode = DDCModesFromCVT(scrnIndex, det_mon->section.cvt);
+- Modes = xf86ModesAdd(Modes, Mode);
+ break;
+ #endif
++ case DS_EST_III:
++ Mode = DDCModesFromEstIII(det_mon->section.est_iii);
++ break;
+ default:
+ break;
+ }
++ Modes = xf86ModesAdd(Modes, Mode);
+ }
+
+ /* Add established timings */
+--
+cgit v0.8.2
+From dbac41b624e4aa86a6a184b7ebb52bfdd367bbf0 Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax at redhat.com>
+Date: Fri, 19 Jun 2009 16:42:07 +0000
+Subject: pci: Dump vendor/devices ids in the printed device list
+
+(cherry picked from commit eb35402d0a5290e8a73d7d1e92f173294c364cc2)
+---
+diff --git a/hw/xfree86/common/xf86pciBus.c b/hw/xfree86/common/xf86pciBus.c
+index 467a0c3..5b29a15 100644
+--- a/hw/xfree86/common/xf86pciBus.c
++++ b/hw/xfree86/common/xf86pciBus.c
+@@ -417,18 +417,16 @@ xf86PciProbe(void)
+ if (xf86IsPrimaryPci(info))
+ prim = "*";
+
+- xf86Msg( X_PROBED, "PCI:%s(%u@%u:%u:%u) ", prim, info->domain,
+- info->bus, info->dev, info->func );
++ xf86Msg(X_PROBED, "PCI:%s(%u:%u:%u:%u) %04x:%04x:%04x:%04x ", prim,
++ info->domain, info->bus, info->dev, info->func,
++ info->vendor_id, info->device_id,
++ info->subvendor_id, info->subdevice_id);
+
+ if (vendorname)
+ xf86ErrorF("%s ", vendorname);
+- else
+- xf86ErrorF("unknown vendor (0x%04x) ", info->vendor_id);
+
+ if (chipname)
+ xf86ErrorF("%s ", chipname);
+- else
+- xf86ErrorF("unknown chipset (0x%04x) ", info->device_id);
+
+ xf86ErrorF("rev %d", info->revision);
+
+--
+cgit v0.8.2
More information about the arch-commits
mailing list