xorg-server: Changes to 'debian-unstable'
COPYING | 793 +---------
ChangeLog | 333 ++++
Xext/geext.c | 2
Xext/panoramiX.c | 6
configure.ac | 4
debian/changelog | 17
debian/patches/Change-default-for-ExaOptimizeMigration-to-false.diff | 38
debian/patches/series | 1
debian/serverminver | 2
dix/devices.c | 2
dix/events.c | 2
doc/Xserver.man.pre | 2
exa/exa_accel.c | 35
exa/exa_glyphs.c | 73
exa/exa_priv.h | 10
exa/exa_render.c | 2
exa/exa_unaccel.c | 2
glx/glxcmds.c | 44
glx/glxdrawable.h | 3
glx/glxdri.c | 2
glx/glxdri2.c | 51
hw/kdrive/src/kinput.c | 4
hw/xfree86/common/Makefile.am | 2
hw/xfree86/common/xf86Config.c | 5
hw/xfree86/ddc/print_edid.c | 6
hw/xfree86/doc/man/xorg.conf.man.pre | 11
hw/xfree86/dri2/dri2.c | 253 ++-
hw/xfree86/dri2/dri2.h | 21
hw/xfree86/dri2/dri2ext.c | 6
hw/xfree86/exa/examodule.c | 2
hw/xfree86/loader/loader.c | 2
hw/xfree86/parser/Makefile.am | 10
hw/xfree86/ramdac/xf86Cursor.c | 6
os/xdmcp.c | 4
randr/randr.c | 11
randr/rrcrtc.c | 5
randr/rrscreen.c | 4
xkb/xkb.c | 8
38 files changed, 867 insertions(+), 917 deletions(-)
New commits:
commit fb82f081f5e028c3edd8a74c716e1a222f8636e6
Author: Brice Goglin <bgoglin@debian.org>
Date: Mon Jul 13 23:35:17 2009 +0200
Prepare Changelog for upload
diff --git a/debian/changelog b/debian/changelog
index f520113..c05d3c5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xorg-server (2:1.6.2-1) UNRELEASED; urgency=low
+xorg-server (2:1.6.2-1) unstable; urgency=low
[ Brice Goglin ]
* New upstream release.
@@ -19,7 +19,7 @@ xorg-server (2:1.6.2-1) UNRELEASED; urgency=low
* xserver-xorg-core.bug.script: add a newline between X log and lshal
output.
- -- Brice Goglin <bgoglin@debian.org> Mon, 13 Jul 2009 23:25:22 +0200
+ -- Brice Goglin <bgoglin@debian.org> Mon, 13 Jul 2009 23:35:13 +0200
xorg-server (2:1.6.1.901-3) unstable; urgency=low
commit c0c0610b6ad2ff99284f61dfe42520b7d6a5dc69
Author: Brice Goglin <bgoglin@debian.org>
Date: Mon Jul 13 23:31:03 2009 +0200
New upstream release
diff --git a/ChangeLog b/ChangeLog
index ccf2e0f..c0b8045 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,336 @@
+commit 606f6dba16d42e3546a82a386d5a01087467b511
+Author: Adam Jackson <ajax@redhat.com>
+Date: Tue Apr 14 10:54:25 2009 -0400
+
+ xdmcp: Don't crash on X -query with more than 255 IP addresses. (#20675)
+
+ You could be more clever than this, but the wire protocol says this
+ really is an array of not more than 255 ARRAY8, so it's not just a
+ matter of changing the types.
+
+ (cherry picked from commit 0eb19f9437b7d8c19592e49eedb028771d300d80)
+
+commit 396d3a7762abd0dd84042833b75f2ebf9d100bb0
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Wed Jul 8 11:26:46 2009 -0700
+
+ Fix build of drivers with 1.6.2 when not using --install-libxf86config
+
+ c859b736d1d23c5dc2f53958b1e76660e6d45018 removed duplicate entries for
+ these from the Makefile, but removed a different set than was done in
+ master branch, causing xf86Parser.h to not be installed, which in turn
+ breaks the build of drivers like -ati, -intel & -nv that use xf86Modes.h,
+ which includes xf86Parser.h
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 6f1aff5a2b45bc2985081abc240a8fed37170386
+Author: Keith Packard <keithp@keithp.com>
+Date: Mon Jul 6 14:08:31 2009 -0700
+
+ Bump to version 1.6.2
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 499f9f62e408510ed4efb6f2321a3f851f535567
+Author: Keith Packard <keithp@keithp.com>
+Date: Wed Jul 1 14:01:57 2009 -0700
+
+ dri2: Preserve compatibility with 1.6 DRI2 API/ABI
+
+ The old DRI2 buffer allocation API wasn't great, but there's no reason to
+ make the server stop working with those drivers. This patch has the
+ X server adapting to the API provided by the driver, using the new API where
+ available and falling back to the old API as necessary. A warning will be
+ placed in the log file when the old API is in use.
+ (cherry picked from commit 2e2c5b216cc1c7a9bc26bd2c68226aaed5fc52ca)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit c859b736d1d23c5dc2f53958b1e76660e6d45018
+Author: Arkadiusz Miskiewicz <arekm@maven.pl>
+Date: Fri Jul 3 11:03:32 2009 +0200
+
+ xfree86: remove duplicate header entries in Makefile.am
+
+ fixes https://bugs.freedesktop.org/show_bug.cgi?id=22547
+
+ This bug was fixed in a big clean-up commit in master, which cannot be
+ backported (see commit b1dac41fb3853ca8182048ea57b88b6e84ecceb3)
+
+ Signed-off-by: Rémi Cardona <remi@gentoo.org>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 6f82ca0f8bfc074474407cb5ffe782c3c128f838
+Author: Alan Hourihane <alanh@vmware.com>
+Date: Mon Feb 16 11:39:34 2009 +0000
+
+ dri2: support glXWaitGL & glXWaitX by copying fake front to front and
+ vice-versa.
+ (cherry picked from commit 2a8b8077d8f6001eb57deba60e1009fc99c28668)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit d478bc948838d11b3abcf6d2cdd3a00dccb344c4
+Author: Eric Anholt <eric@anholt.net>
+Date: Tue Feb 17 09:59:17 2009 -0800
+
+ xinerama: Put the proto version in the code instead using proto headers.
+
+ Proto headers updating resulting in the server advertising new versions is
+ broken. This should be applied to every extension.
+
+ This fixes the build against slightly-older xineramaproto.
+ (cherry picked from commit b349a764e98f0d8f221190157ffa0904b91beca5)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit a7a93c12f91e0de72868f17a555215f1795d9e2f
+Author: Keith Packard <keithp@keithp.com>
+Date: Mon Jun 29 23:18:55 2009 -0700
+
+ Build against DRI_TEX_BUFFER_VERSION 1
+
+ setTexBuffer2 isn't present in this version of the structure, so don't try
+ to call it.
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 5b49aff4f8b5e4d15bc883f74509d93324f09f5f
+Author: Keith Packard <keithp@keithp.com>
+Date: Mon Jun 29 14:40:46 2009 -0700
+
+ Bump version to 1.6.1.902
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit e97cabce4abdaf6b83d1a442f7972d4c45979b33
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Wed Mar 25 12:55:42 2009 +1000
+
+ 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.
+
+ Backported from commit 66089e9129a821cfb1983d3d35f41b975a52de5e for
+ server-1.6-branch by Peter Hutterer
+
+ Reported-by: Gordon Yuan <GordonYuan@viatech.com.cn>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 17c5b2caf01deec1d1be9fc2ac68a3d636e64c44
+Author: Julien Cristau <jcristau@debian.org>
+Date: Mon May 18 19:01:46 2009 +0200
+
+ Change default for ExaOptimizeMigration to false
+
+ Quoting Michel Dänzer in <1234862541.4823.541.camel@thor>:
+
+ Unfortunately, there are still bugs left in EXA which prevent it from
+ working 100% correctly with the option enabled, see
+
+ http://bugs.freedesktop.org/show_bug.cgi?id=16416
+
+ http://bugs.freedesktop.org/show_bug.cgi?id=19940
+
+ So disable it for now to avoid corruption.
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 8d65439d5c950ea01ec8e1e4dd989aff0fb4c3f0
+Author: Keith Packard <keithp@keithp.com>
+Date: Thu May 28 14:43:27 2009 -0700
+
+ 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@keithp.com>
+ (cherry picked from commit 69a9545d1f8110841538410818df19fd960412c5)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit d98f2792d2f523d7397eac70cc021761e9561219
+Author: Federico Mena Quintero <federico@novell.com>
+Date: Tue Jun 9 13:28:28 2009 -0700
+
+ 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@novell.com>
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+ (cherry picked from commit e244a5991e2cc55f5aa2f6e5255f1dabf56f0235)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit f697b6c582095aa1eec3244fa05835922249425b
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Mon May 11 12:53:56 2009 +1000
+
+ kdrive: set Activate/Deactivate grab for input devices (#21591)
+
+ X.Org Bug 21591 <http://bugs.freedesktop.org/show_bug.cgi?id=21591>
+ (cherry picked from commit b1b5ec45c1cb650ccb8c659218f9481379c777d9)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit c91accd173b5f17af771bd9f4e60b5860af15718
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Mon May 11 12:51:40 2009 +1000
+
+ 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@who-t.net>
+ (cherry picked from commit 6f9e22049862ee9ac7f604411d005d8bb1b2dd1c)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit bd94c7c986aed4496cd4e8141bb30c3e4412f1f4
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date: Tue May 12 16:11:01 2009 -0700
+
+ Resync COPYING file with notices in code base as of xorg-server-1.6.1
+
+ Remove notices for code no longer in tree (Xprint, Xgl, kdrive, cfb, etc.)
+ Add/update notices for new/changed code in tree
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+ (cherry picked from commit b746a00cffca5c553b607a8e9c1074294a23b443)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 597747c6551cd67487069415297e5eb441038321
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date: Sat May 9 11:42:17 2009 -0700
+
+ Fix a couple off-by-one array boundary checks.
+
+ Error: Write outside array bounds at Xext/geext.c:406
+ in function 'GEWindowSetMask' [Symbolic analysis]
+ In array dereference of cli->nextSib[extension] with index 'extension'
+ Array size is 128 elements (of 4 bytes each), index <= 128
+
+ Error: Buffer overflow at dix/events.c:592
+ in function 'SetMaskForEvent' [Symbolic analysis]
+ In array dereference of filters[deviceid] with index 'deviceid'
+ Array size is 20 elements (of 512 bytes each), index >= 0 and index <= 20
+
+ Error: Read buffer overflow at hw/xfree86/loader/loader.c:226
+ in function 'LoaderOpen' [Symbolic analysis]
+ In array dereference of refCount[new_handle] with index 'new_handle'
+ Array size is 256 elements (of 4 bytes each), index >= 1 and index <= 256
+
+ These bugs were found using the Parfait source code analysis tool.
+ For more information see http://research.sun.com/projects/parfait
+
+ Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
+ Signed-off-by: Adam Jackson <ajax@redhat.com>
+ Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
+ (cherry picked from commit b680bda34da130ce408783f04214771471e41e8d)
+ (cherry picked from commit 04c9e80f083659e63cffec8969fb3a0cfc551a97)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 10c06ddeefccc195e70adfed664e9488eeb53804
+Author: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Thu Apr 9 15:40:24 2009 +1000
+
+ xfree86: restore default off for DontZap
+
+ Zapping is triggered by xkb these days, so note in the man page that it's the
+ Terminate_Server action. Since it's XKB, personal preferences towards or
+ against zapping should be achieved through xkb rulesets.
+ If Terminate_Server is not in the xkb actions, then we can't zap anyway and we
+ don't need a default of DontZap "on".
+
+ This patch restores the old meaning of DontZap - disallow zapping altogether,
+ regardless of XKB's current keymap.
+ Ideally, this patch should be accompanied by b0f64bdab00db652e in
+ xkeyboard-config.
+
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+ (cherry picked from commit 737b49199a05299486064e6e762cf2a2f6f95be6)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 966349f8e068fa120470549b0db9a8fcf88aca5b
+Author: Michel Dänzer <daenzer@vmware.com>
+Date: Fri May 15 15:48:37 2009 +0200
+
+ EXA: Always damage glyph cache pixmap manually after uploading a glyph.
+
+ Signed-off-by: Michel Dänzer <daenzer@vmware.com>
+ (cherry picked from commit 7c8327f0a75087a85864256a9cea80dd4b86def5)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit cc5e4b632aa99623ff577776039287c5950d921d
+Author: Michel Dänzer <daenzer@vmware.com>
+Date: Fri May 15 15:48:37 2009 +0200
+
+ EXA: Take GC client clip type into account for migration.
+
+ Fixes http://bugs.freedesktop.org/show_bug.cgi?id=18950 .
+
+ Signed-off-by: Michel Dänzer <daenzer@vmware.com>
+ (cherry picked from commit 850675d4de4373e5df95507dbf2cd9affaaf54bc)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit bbe0be1e459b0d5810a0e7b916cc890c440a4e21
+Author: Tomas Janousek <tomi@nomi.cz>
+Date: Wed May 20 15:03:01 2009 +0200
+
+ Bug #6428, #16458, #21464: Fix crash due to uninitialized VModMap fields.
+
+ In ProcXkbGetKbdByName, mrep.firstVModMapKey, .nVModMapKeys and
+ .totalVModMapKeys were not initialized, contained random values and caused
+ accesses to unallocated and later modified memory, causing
+ XkbSizeVirtualModMap and XkbWriteVirtualModMap to see different number of
+ nonzero values, resulting in writes past the end of an array in XkbSendMap.
+
+ This patch initializes those values sensibly and reverts commits 5c0a2088 and
+ 6dd4fc46, which have been plain non-sense.
+
+ Signed-off-by: Tomas Janousek <tomi@nomi.cz>
+ Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+ (cherry picked from commit 525aa17f804d37d1cfcbbf6b8e6cddb45e999b20)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 6056d429e7dcc37fe706dd7bc8d3429fdb635e14
+Author: Kristian Høgsberg <krh@redhat.com>
+Date: Wed Apr 1 17:42:33 2009 -0400
+
+ Support setTexBuffer2 in AIGLX.
+
+ Fixes broken GLX_tfp, specifically, lets compositors ignore un-defined
+ alpha channel for pixmaps.
+ (cherry picked from commit 91b697efdefba125348dbcaf584ee51a7f8c9bf6)
+
+ Signed-off-by: Keith Packard <keithp@keithp.com>
+
+commit 7cae08d21952b02ef664641af6588ef6bd727bf8
+Author: Adam Jackson <ajax@redhat.com>
+Date: Mon Jun 29 11:16:16 2009 -0400
+
+ EDID: Fix timing class names to match the spec
+ (cherry picked from commit 5c1afac5eea1d8327c74342d12d082b75f0cebde)
+
commit dbac41b624e4aa86a6a184b7ebb52bfdd367bbf0
Author: Adam Jackson <ajax@redhat.com>
Date: Fri Jun 19 12:42:07 2009 -0400
diff --git a/debian/changelog b/debian/changelog
index b22c1d0..f520113 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,14 +1,25 @@
-xorg-server (2:1.6.1.901-4) UNRELEASED; urgency=low
+xorg-server (2:1.6.2-1) UNRELEASED; urgency=low
- * Bump serverminver to 2:1.6.1.901-3 for the dri2 upstream changes in the
+ [ Brice Goglin ]
+ * New upstream release.
+ + Fixes dri2 madness introduced in previous upload
+ (closes: #534522, #536019, #534766, #534771, #534890).
+ + Fixes xkb bogus length in write keyboard desc, closes: #529625.
+ + Fixes SWCursor being multiply rendered, closes: #526260.
+ + Drop Change-default-for-ExaOptimizeMigration-to-false.diff,
+ applied upstream.
+ + Pull upstream server-1.6-branch up to commit 606f6dba.
+ * Bump serverminver to 2:1.6.2 for the dri2 upstream changes in the
previous upload.
+
+ [ Julien Cristau ]
* Bump xserver-xorg-dev's dependency on dri2proto to >= 2.1 for the same
reason.
* Don't set PCI_TXT_IDS_DIR, we don't use that anymore.
* xserver-xorg-core.bug.script: add a newline between X log and lshal
output.
- -- Julien Cristau <jcristau@debian.org> Wed, 24 Jun 2009 11:59:58 +0200
+ -- Brice Goglin <bgoglin@debian.org> Mon, 13 Jul 2009 23:25:22 +0200
xorg-server (2:1.6.1.901-3) unstable; urgency=low
diff --git a/debian/patches/Change-default-for-ExaOptimizeMigration-to-false.diff b/debian/patches/Change-default-for-ExaOptimizeMigration-to-false.diff
deleted file mode 100644
index 41930f9..0000000
--- a/debian/patches/Change-default-for-ExaOptimizeMigration-to-false.diff
+++ /dev/null
@@ -1,38 +0,0 @@
-From f9dd45e7b88a64892961a481678688dffd58c74c Mon Sep 17 00:00:00 2001
-From: Julien Cristau <jcristau@debian.org>
-Date: Mon, 18 May 2009 19:01:46 +0200
-Subject: [PATCH] Change default for ExaOptimizeMigration to false
-MIME-Version: 1.0
-Content-Type: text/plain; charset=utf-8
-Content-Transfer-Encoding: 8bit
-
-Quoting Michel Dänzer in <1234862541.4823.541.camel@thor>:
-
- Unfortunately, there are still bugs left in EXA which prevent it from
- working 100% correctly with the option enabled, see
-
- http://bugs.freedesktop.org/show_bug.cgi?id=16416
-
- http://bugs.freedesktop.org/show_bug.cgi?id=19940
-
-So disable it for now to avoid corruption.
----
- hw/xfree86/exa/examodule.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/hw/xfree86/exa/examodule.c b/hw/xfree86/exa/examodule.c
-index 601288c..27607a1 100644
---- a/hw/xfree86/exa/examodule.c
-+++ b/hw/xfree86/exa/examodule.c
-@@ -146,7 +146,7 @@ exaDDXDriverInit(ScreenPtr pScreen)
- pExaScr->optimize_migration =
- xf86ReturnOptValBool(pScreenPriv->options,
- EXAOPT_OPTIMIZE_MIGRATION,
-- TRUE);
-+ FALSE);
- }
-
- if (xf86ReturnOptValBool(pScreenPriv->options,
---
-1.6.2.4
-
diff --git a/debian/patches/series b/debian/patches/series
index 1af063f..e88aa73 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -4,7 +4,6 @@
kfreebsd-ftbfs.diff
0001-xorg.conf-5-refer-to-mousedrv-4-.-Debian-394058.patch
Turn-on-ModeDebug-by-default.patch
-Change-default-for-ExaOptimizeMigration-to-false.diff
Add-libgcrypt-as-an-option-for-sha1.diff
fedora-bad-fbdev-thats-mine.patch
fedora-pci-primary.diff
diff --git a/debian/serverminver b/debian/serverminver
index 1debf10..7e5df81 100644
--- a/debian/serverminver
+++ b/debian/serverminver
@@ -1 +1 @@
-2:1.6.1.901-3
+2:1.6.2
commit 606f6dba16d42e3546a82a386d5a01087467b511
Author: Adam Jackson <ajax@redhat.com>
Date: Tue Apr 14 10:54:25 2009 -0400
xdmcp: Don't crash on X -query with more than 255 IP addresses. (#20675)
You could be more clever than this, but the wire protocol says this
really is an array of not more than 255 ARRAY8, so it's not just a
matter of changing the types.
(cherry picked from commit 0eb19f9437b7d8c19592e49eedb028771d300d80)
diff --git a/os/xdmcp.c b/os/xdmcp.c
index 736cd3e..746f598 100644
--- a/os/xdmcp.c
+++ b/os/xdmcp.c
@@ -491,7 +491,9 @@ XdmcpRegisterConnection (
return;
}
}
- newAddress = (CARD8 *) xalloc (addrlen * sizeof (CARD8));
+ if (ConnectionAddresses.length + 1 == 256)
+ return;
+ newAddress = xalloc (addrlen * sizeof (CARD8));
if (!newAddress)
return;
if (!XdmcpReallocARRAY16 (&ConnectionTypes, ConnectionTypes.length + 1))
commit 396d3a7762abd0dd84042833b75f2ebf9d100bb0
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date: Wed Jul 8 11:26:46 2009 -0700
Fix build of drivers with 1.6.2 when not using --install-libxf86config
c859b736d1d23c5dc2f53958b1e76660e6d45018 removed duplicate entries for
these from the Makefile, but removed a different set than was done in
master branch, causing xf86Parser.h to not be installed, which in turn
breaks the build of drivers like -ati, -intel & -nv that use xf86Modes.h,
which includes xf86Parser.h
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
diff --git a/hw/xfree86/parser/Makefile.am b/hw/xfree86/parser/Makefile.am
index 6ed1814..a2774a4 100644
--- a/hw/xfree86/parser/Makefile.am
+++ b/hw/xfree86/parser/Makefile.am
@@ -1,8 +1,5 @@
if INSTALL_LIBXF86CONFIG
lib_LIBRARIES = libxf86config.a
-LIBHEADERS = \
- xf86Optrec.h \
- xf86Parser.h
else
noinst_LIBRARIES = libxf86config.a
endif
@@ -30,9 +27,8 @@ AM_CFLAGS = $(DIX_CFLAGS) $(XORG_CFLAGS)
EXTRA_DIST = \
Configint.h \
configProcs.h \
- xf86Optrec.h \
- xf86Parser.h \
xf86tokens.h
sdk_HEADERS = \
- $(LIBHEADERS)
+ xf86Optrec.h \
+ xf86Parser.h
commit 6f1aff5a2b45bc2985081abc240a8fed37170386
Author: Keith Packard <keithp@keithp.com>
Date: Mon Jul 6 14:08:31 2009 -0700
Bump to version 1.6.2
Signed-off-by: Keith Packard <keithp@keithp.com>
diff --git a/configure.ac b/configure.ac
index 339172f..71cc30c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,12 +26,12 @@ dnl
dnl Process this file with autoconf to create configure.
AC_PREREQ(2.57)
-AC_INIT([xorg-server], 1.6.1.902, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+AC_INIT([xorg-server], 1.6.2, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
AC_CONFIG_SRCDIR([Makefile.am])
AM_INIT_AUTOMAKE([dist-bzip2 foreign])
AM_MAINTAINER_MODE
-RELEASE_DATE="2009-6-29"
+RELEASE_DATE="2009-7-7"
dnl this gets generated by autoheader, and thus contains all the defines. we
dnl don't ever actually use it, internally.
commit 499f9f62e408510ed4efb6f2321a3f851f535567
Author: Keith Packard <keithp@keithp.com>
Date: Wed Jul 1 14:01:57 2009 -0700
dri2: Preserve compatibility with 1.6 DRI2 API/ABI
The old DRI2 buffer allocation API wasn't great, but there's no reason to
make the server stop working with those drivers. This patch has the
X server adapting to the API provided by the driver, using the new API where
available and falling back to the old API as necessary. A warning will be
placed in the log file when the old API is in use.
(cherry picked from commit 2e2c5b216cc1c7a9bc26bd2c68226aaed5fc52ca)
Signed-off-by: Keith Packard <keithp@keithp.com>
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index 385c5e8..580383d 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -53,7 +53,7 @@ typedef struct _DRI2Drawable {
unsigned int refCount;
int width;
int height;
- DRI2BufferPtr *buffers;
+ DRI2Buffer2Ptr *buffers;
int bufferCount;
unsigned int pendingSequence;
} DRI2DrawableRec, *DRI2DrawablePtr;
@@ -63,6 +63,10 @@ typedef struct _DRI2Screen {
const char *deviceName;
int fd;
unsigned int lastSequence;
+
+ DRI2CreateBuffersProcPtr CreateBuffers;
+ DRI2DestroyBuffersProcPtr DestroyBuffers;
+
DRI2CreateBufferProcPtr CreateBuffer;
DRI2DestroyBufferProcPtr DestroyBuffer;
DRI2CopyRegionProcPtr CopyRegion;
@@ -133,17 +137,17 @@ DRI2CreateDrawable(DrawablePtr pDraw)
}
static int
-find_attachment(DRI2BufferPtr *buffer_list, int count, unsigned attachment)
+find_attachment(DRI2DrawablePtr pPriv, unsigned attachment)
{
int i;
- if (buffer_list == NULL) {
+ if (pPriv->buffers == NULL) {
return -1;
}
- for (i = 0; i < count; i++) {
- if ((buffer_list[i] != NULL)
- && (buffer_list[i]->attachment == attachment)) {
+ for (i = 0; i < pPriv->bufferCount; i++) {
+ if ((pPriv->buffers[i] != NULL)
+ && (pPriv->buffers[i]->attachment == attachment)) {
return i;
}
}
@@ -151,16 +155,16 @@ find_attachment(DRI2BufferPtr *buffer_list, int count, unsigned attachment)
return -1;
}
-static DRI2BufferPtr
+static DRI2Buffer2Ptr
allocate_or_reuse_buffer(DrawablePtr pDraw, DRI2ScreenPtr ds,
DRI2DrawablePtr pPriv,
unsigned int attachment, unsigned int format,
int dimensions_match)
{
- DRI2BufferPtr buffer;
+ DRI2Buffer2Ptr buffer;
int old_buf;
- old_buf = find_attachment(pPriv->buffers, pPriv->bufferCount, attachment);
+ old_buf = find_attachment(pPriv, attachment);
if ((old_buf < 0)
|| !dimensions_match
@@ -174,14 +178,14 @@ allocate_or_reuse_buffer(DrawablePtr pDraw, DRI2ScreenPtr ds,
return buffer;
}
-static DRI2BufferPtr *
+static DRI2Buffer2Ptr *
do_get_buffers(DrawablePtr pDraw, int *width, int *height,
unsigned int *attachments, int count, int *out_count,
int has_format)
{
DRI2ScreenPtr ds = DRI2GetScreen(pDraw->pScreen);
DRI2DrawablePtr pPriv = DRI2GetDrawable(pDraw);
- DRI2BufferPtr *buffers;
+ DRI2Buffer2Ptr *buffers;
int need_real_front = 0;
int need_fake_front = 0;
int have_fake_front = 0;
@@ -193,68 +197,156 @@ do_get_buffers(DrawablePtr pDraw, int *width, int *height,
buffers = xalloc((count + 1) * sizeof(buffers[0]));
- for (i = 0; i < count; i++) {
- const unsigned attachment = *(attachments++);
- const unsigned format = (has_format) ? *(attachments++) : 0;
+ if (ds->CreateBuffer) {
+ /* Version 2 API with CreateBuffer */
+ for (i = 0; i < count; i++) {
+ const unsigned attachment = *(attachments++);
+ const unsigned format = (has_format) ? *(attachments++) : 0;
+
+ buffers[i] = allocate_or_reuse_buffer(pDraw, ds, pPriv, attachment,
+ format, dimensions_match);
+
+ /* If the drawable is a window and the front-buffer is requested,
+ * silently add the fake front-buffer to the list of requested
+ * attachments. The counting logic in the loop accounts for the case
+ * where the client requests both the fake and real front-buffer.
+ */
+ if (attachment == DRI2BufferBackLeft) {
+ need_real_front++;
+ front_format = format;
+ }
+
+ if (attachment == DRI2BufferFrontLeft) {
+ need_real_front--;
+ front_format = format;
+
+ if (pDraw->type == DRAWABLE_WINDOW) {
+ need_fake_front++;
+ }
+ }
- buffers[i] = allocate_or_reuse_buffer(pDraw, ds, pPriv, attachment,
- format, dimensions_match);
+ if (pDraw->type == DRAWABLE_WINDOW) {
+ if (attachment == DRI2BufferFakeFrontLeft) {
+ need_fake_front--;
+ have_fake_front = 1;
+ }
+ }
+ }
+ if (need_real_front > 0) {
+ buffers[i++] = allocate_or_reuse_buffer(pDraw, ds, pPriv,
+ DRI2BufferFrontLeft,
+ front_format, dimensions_match);
+ }
- /* If the drawable is a window and the front-buffer is requested,
- * silently add the fake front-buffer to the list of requested
- * attachments. The counting logic in the loop accounts for the case
- * where the client requests both the fake and real front-buffer.
- */
- if (attachment == DRI2BufferBackLeft) {
- need_real_front++;
- front_format = format;
+ if (need_fake_front > 0) {
+ buffers[i++] = allocate_or_reuse_buffer(pDraw, ds, pPriv,
+ DRI2BufferFakeFrontLeft,
+ front_format, dimensions_match);
+ have_fake_front = 1;
}
- if (attachment == DRI2BufferFrontLeft) {
- need_real_front--;
- front_format = format;
+ *out_count = i;
- if (pDraw->type == DRAWABLE_WINDOW) {
- need_fake_front++;
+
+ if (pPriv->buffers != NULL) {
+ for (i = 0; i < pPriv->bufferCount; i++) {
+ if (pPriv->buffers[i] != NULL) {
+ (*ds->DestroyBuffer)(pDraw, pPriv->buffers[i]);
+ }
}
+
+ xfree(pPriv->buffers);
+ }
+ } else {
+ DRI2BufferPtr buffers1;
+ unsigned int temp_buf[32];
+ unsigned int *temp = temp_buf;
+ int i;
+ int buffers_match = 1;
+
+ /* Version 1 API with CreateBuffers */
+
+ if ((count + 1) > 32) {
+ temp = xalloc((count + 1) * sizeof(temp[0]));
}
- if (pDraw->type == DRAWABLE_WINDOW) {
- if (attachment == DRI2BufferFakeFrontLeft) {
+ for (i = 0; i < count; i++) {
+ const unsigned attachment = *(attachments++);
+
+ /* Version 1 doesn't deal with the format at all */
+ if (has_format)
+ attachments++;
+
+ /*
+ * Make sure the client also gets the front buffer when
+ * it asks for a back buffer
+ */
+ if (attachment == DRI2BufferBackLeft)
+ need_real_front++;
+
+ /*
+ * If the drawable is a window and the front-buffer is requested,
+ * silently add the fake front-buffer to the list of requested
+ * attachments. The counting logic in the loop accounts for the
+ * case where the client requests both the fake and real
+ * front-buffer.
+ */
+ if (attachment == DRI2BufferFrontLeft) {
+ need_real_front--;
+ if (pDraw->type == DRAWABLE_WINDOW)
+ need_fake_front++;
+ }
+ if (pDraw->type == DRAWABLE_WINDOW &&
+ attachment == DRI2BufferFakeFrontLeft)
+ {
need_fake_front--;
have_fake_front = 1;
}
+
+ temp[i] = attachment;
}
- }
- if (need_real_front > 0) {
- buffers[i++] = allocate_or_reuse_buffer(pDraw, ds, pPriv,
- DRI2BufferFrontLeft,
- front_format, dimensions_match);
- }
+ if (need_real_front > 0)
+ temp[count++] = DRI2BufferFrontLeft;
- if (need_fake_front > 0) {
- buffers[i++] = allocate_or_reuse_buffer(pDraw, ds, pPriv,
- DRI2BufferFakeFrontLeft,
- front_format, dimensions_match);
- have_fake_front = 1;
- }
+ if (need_fake_front > 0) {
+ temp[count++] = DRI2BufferFakeFrontLeft;
+ have_fake_front = 1;
+ }
+
+ if (count != pPriv->bufferCount)
+ buffers_match = 0;
+ else {
+ for (i = 0; i < count; i++)
+ if (pPriv->buffers[i]->attachment != temp[i]) {
+ buffers_match = 0;
+ break;
+ }
+ }
+ if (pPriv->buffers == NULL || !dimensions_match || !buffers_match)
+ {
+ buffers1 = (*ds->CreateBuffers)(pDraw, temp, count);
+ if (pPriv->buffers != NULL)
+ (*ds->DestroyBuffers)(pDraw, (DRI2BufferPtr) pPriv->buffers[0],
+ pPriv->bufferCount);
+ }
+ else
+ buffers1 = (DRI2BufferPtr) pPriv->buffers[0];
- *out_count = i;
+ for (i = 0; i < count; i++)
+ buffers[i] = (DRI2Buffer2Ptr) &buffers1[i];
+ *out_count = count;
- if (pPriv->buffers != NULL) {
- for (i = 0; i < pPriv->bufferCount; i++) {
- if (pPriv->buffers[i] != NULL) {
- (*ds->DestroyBuffer)(pDraw, pPriv->buffers[i]);
- }
- }
+ if (pPriv->buffers)
+ xfree (pPriv->buffers);
- xfree(pPriv->buffers);
+ if (temp != temp_buf) {
+ xfree(temp);
+ }
}
-
pPriv->buffers = buffers;
pPriv->bufferCount = *out_count;
pPriv->width = pDraw->width;
@@ -284,7 +376,7 @@ do_get_buffers(DrawablePtr pDraw, int *width, int *height,
return pPriv->buffers;
}
-DRI2BufferPtr *
+DRI2Buffer2Ptr *
DRI2GetBuffers(DrawablePtr pDraw, int *width, int *height,
unsigned int *attachments, int count, int *out_count)
{
@@ -292,7 +384,7 @@ DRI2GetBuffers(DrawablePtr pDraw, int *width, int *height,
out_count, FALSE);
}
-DRI2BufferPtr *
+DRI2Buffer2Ptr *
DRI2GetBuffersWithFormat(DrawablePtr pDraw, int *width, int *height,
unsigned int *attachments, int count, int *out_count)
{
@@ -318,13 +410,13 @@ DRI2CopyRegion(DrawablePtr pDraw, RegionPtr pRegion,
for (i = 0; i < pPriv->bufferCount; i++)
{
if (pPriv->buffers[i]->attachment == dest)
- pDestBuffer = pPriv->buffers[i];
+ pDestBuffer = (DRI2BufferPtr) pPriv->buffers[i];
if (pPriv->buffers[i]->attachment == src)
- pSrcBuffer = pPriv->buffers[i];
+ pSrcBuffer = (DRI2BufferPtr) pPriv->buffers[i];
}
if (pSrcBuffer == NULL || pDestBuffer == NULL)
return BadValue;
-
+
(*ds->CopyRegion)(pDraw, pRegion, pDestBuffer, pSrcBuffer);
return Success;
@@ -341,7 +433,7 @@ DRI2DestroyDrawable(DrawablePtr pDraw)
pPriv = DRI2GetDrawable(pDraw);
if (pPriv == NULL)
return;
-
+
pPriv->refCount--;
if (pPriv->refCount > 0)
return;
@@ -349,8 +441,13 @@ DRI2DestroyDrawable(DrawablePtr pDraw)
if (pPriv->buffers != NULL) {
int i;
- for (i = 0; i < pPriv->bufferCount; i++) {
- (*ds->DestroyBuffer)(pDraw, pPriv->buffers[i]);
+ if (ds->DestroyBuffer) {
+ for (i = 0; i < pPriv->bufferCount; i++) {
+ (*ds->DestroyBuffer)(pDraw, pPriv->buffers[i]);
+ }
+ } else {
+ (*ds->DestroyBuffers)(pDraw, (DRI2BufferPtr) pPriv->buffers[0],
+ pPriv->bufferCount);
}
xfree(pPriv->buffers);
@@ -409,18 +506,36 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info)
if (!ds)
return FALSE;
- if ((info->version < 2)
- || (info->CreateBuffer == NULL)
- || (info->DestroyBuffer == NULL)) {
- return FALSE;
- }
-
-
ds->fd = info->fd;
ds->driverName = info->driverName;
ds->deviceName = info->deviceName;
- ds->CreateBuffer = info->CreateBuffer;
- ds->DestroyBuffer = info->DestroyBuffer;
+
+ /* Prefer the new one-at-a-time buffer API */
+ if (info->version >= 2 && info->CreateBuffer && info->DestroyBuffer) {
+ ds->CreateBuffer = info->CreateBuffer;
+ ds->DestroyBuffer = info->DestroyBuffer;
+ ds->CreateBuffers = NULL;
+ ds->DestroyBuffers = NULL;
+ } else if (info->CreateBuffers && info->DestroyBuffers) {
+ xf86DrvMsg(pScreen->myNum, X_WARNING,
+ "[DRI2] Version 1 API (broken front buffer rendering)\n");
+ ds->CreateBuffer = NULL;
+ ds->DestroyBuffer = NULL;
+ ds->CreateBuffers = info->CreateBuffers;
+ ds->DestroyBuffers = info->DestroyBuffers;
+ } else {
+ xf86DrvMsg(pScreen->myNum, X_ERROR,
+ "[DRI2] Missing buffer management functions\n");
+ xfree(ds);
+ return FALSE;
Reply to: