xserver: Branch 'server-1.6-branch' - 11 commits
Keith Packard
keithp at kemper.freedesktop.org
Fri May 8 15:23:38 PDT 2009
Xi/exevents.c | 3 ++-
dix/events.c | 17 +++++++++++++++++
dix/protocol.txt | 12 ++++++++++++
exa/exa.c | 13 +++++++++++++
exa/exa.h | 14 ++++++++++++++
exa/exa_migration.c | 2 ++
exa/exa_unaccel.c | 25 ++++++++++++++++++++++++-
hw/xfree86/common/xf86Xinput.c | 4 ++++
hw/xfree86/dri2/dri2ext.c | 4 ++--
hw/xfree86/modes/xf86Crtc.c | 11 ++++++++---
hw/xfree86/modes/xf86EdidModes.c | 10 ++++++++++
11 files changed, 108 insertions(+), 7 deletions(-)
New commits:
commit 3b1ff33587458bad45777b8eb74b81c3e55987ad
Author: Pierre Ossman <pierre at ossman.eu>
Date: Tue Apr 28 12:29:07 2009 +0200
Xi: don't send XKB mapping notifications when XKB is disabled
Signed-off-by: Pierre Ossman <pierre at ossman.eu>
Signed-off-by: Keith Packard <keithp at keithp.com>
diff --git a/Xi/exevents.c b/Xi/exevents.c
index 482041f..398a26b 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -1778,7 +1778,8 @@ SendDeviceMappingNotify(ClientPtr client, CARD8 request,
}
#ifdef XKB
- if (request == MappingKeyboard || request == MappingModifier)
+ if (!noXkbExtension && (request == MappingKeyboard ||
+ request == MappingModifier))
XkbApplyMappingChange(dev, request, firstKeyCode, count, client);
#endif
commit 4b702526dec35f5cfe5c6baec6a77c02c95c2867
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date: Wed Mar 25 13:08:27 2009 +1000
dix: ignore non-pointer events in XineramaCheckMotion (#20557)
Note that deviceKeyButtonPointer and keyButtonPointer have the same wire
layout, so we only need to check for event types.
X.Org Bug 20557 <http://bugs.freedesktop.org/show_bug.cgi?id=20557>
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
Signed-off-by: Keith Packard <keithp at keithp.com>
diff --git a/dix/events.c b/dix/events.c
index 6743cae..63b0674 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -625,6 +625,23 @@ XineramaCheckMotion(xEvent *xE, DeviceIntPtr pDev)
if (xE && !syncEvents.playingEvents)
{
+ /* GetPointerEvents() guarantees that pointer events have the correct
+ rootX/Y set already. */
+ switch(xE->u.u.type)
+ {
+ case ButtonPress:
+ case ButtonRelease:
+ case MotionNotify:
+ break;
+ default:
+ if (xE->u.u.type == DeviceButtonPress ||
+ xE->u.u.type == DeviceButtonRelease ||
+ xE->u.u.type == DeviceMotionNotify)
+ break;
+ /* all other events return FALSE */
+ return FALSE;
+ }
+
/* Motion events entering DIX get translated to Screen 0
coordinates. Replayed events have already been
translated since they've entered DIX before */
commit fdbb6fd3d3c0ce7078f8faaf089af51cc36cbcb3
Author: Jesse Barnes <jbarnes at virtuousgeek.org>
Date: Mon May 4 15:38:22 2009 -0700
Don't prepare outputs & crtcs if set_mode_major is present
A driver with this hook will take care of preparing the outputs & crtcs,
so calling the prepare functions will just cause unnecessary flicker.
Fixes bug #21077
(cherry picked from commit 94648bb797d94b025746c60679c584e5be2fae28)
Signed-off-by: Keith Packard <keithp at keithp.com>
diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index 1c2ee49..84d3cac 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -2444,18 +2444,23 @@ _X_EXPORT Bool
xf86SetDesiredModes (ScrnInfoPtr scrn)
{
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
+ xf86CrtcPtr crtc = config->crtc[0];
int c;
- xf86PrepareOutputs(scrn);
- xf86PrepareCrtcs(scrn);
+ /* A driver with this hook will take care of this */
+ if (!crtc->funcs->set_mode_major) {
+ xf86PrepareOutputs(scrn);
+ xf86PrepareCrtcs(scrn);
+ }
for (c = 0; c < config->num_crtc; c++)
{
- xf86CrtcPtr crtc = config->crtc[c];
xf86OutputPtr output = NULL;
int o;
RRTransformPtr transform;
+ crtc = config->crtc[c];
+
/* Skip disabled CRTCs */
if (!crtc->enabled)
continue;
commit eac2b3658aacc8a64dc3c0fd7cc8fd77abcc59af
Author: Julien Cristau <jcristau at debian.org>
Date: Wed Apr 22 20:01:49 2009 +0200
Bug#21324: Add quirk for Iiyama Vision Master 450
Reported-by: Jeremy Henty <onepoint at starurchin.org>
Signed-off-by: Julien Cristau <jcristau at debian.org>
(cherry picked from commit 0dfb97f15f591f85e079f5829c77d0c328d00464)
Signed-off-by: Keith Packard <keithp at keithp.com>
diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c
index 92eb196..54f2c65 100644
--- a/hw/xfree86/modes/xf86EdidModes.c
+++ b/hw/xfree86/modes/xf86EdidModes.c
@@ -170,6 +170,11 @@ static Bool quirk_detailed_use_maximum_size (int scrnIndex, xf86MonPtr DDC)
(DDC->vendor.prod_id == 0 || DDC->vendor.prod_id == 0x2a00))
return TRUE;
+ /* Bug #21324: Iiyama Vision Master 450 */
+ if (memcmp (DDC->vendor.name, "IVM", 4) == 0 &&
+ DDC->vendor.prod_id == 6400)
+ return TRUE;
+
return FALSE;
}
commit b3c42e6450b0af97ead4f410983c803a959e1d04
Author: Tormod Volden <debian.tormod at gmail.com>
Date: Wed Apr 1 19:32:21 2009 +0200
xfree86: edid quirk for Philips LCD LP154W01-TLAJ
This panel reports its vertical size in cm.
X.Org bug#21000 <http://bugs.freedesktop.org/show_bug.cgi?id=21000>
Signed-off-by: Tormod Volden <debian.tormod at gmail.com>
Signed-off-by: Julien Cristau <jcristau at debian.org>
(cherry picked from commit b1dab580bdfb4acfe3feddeda6e760098ec4922a)
Signed-off-by: Keith Packard <keithp at keithp.com>
diff --git a/hw/xfree86/modes/xf86EdidModes.c b/hw/xfree86/modes/xf86EdidModes.c
index 5ed61c1..92eb196 100644
--- a/hw/xfree86/modes/xf86EdidModes.c
+++ b/hw/xfree86/modes/xf86EdidModes.c
@@ -155,6 +155,11 @@ static Bool quirk_detailed_v_in_cm (int scrnIndex, xf86MonPtr DDC)
DDC->vendor.prod_id == 13600)
return TRUE;
+ /* Bug #21000: LGPhilipsLCD LP154W01-TLAJ */
+ if (memcmp (DDC->vendor.name, "LPL", 4) == 0 &&
+ DDC->vendor.prod_id == 47360)
+ return TRUE;
+
return FALSE;
}
commit 96eede556ac9f95204fa54287f74794acdbf3a2b
Author: Julien Cristau <jcristau at debian.org>
Date: Wed Dec 24 14:17:27 2008 +0100
Add RandR 1.3 requests to protocol.txt
(cherry picked from commit 4f86ee61a4abf7a29e565d095aa08abd0ca9dc66)
Signed-off-by: Keith Packard <keithp at keithp.com>
diff --git a/dix/protocol.txt b/dix/protocol.txt
index 985f67b..364f13e 100644
--- a/dix/protocol.txt
+++ b/dix/protocol.txt
@@ -296,6 +296,13 @@ R021 RANDR:SetCrtcConfig
R022 RANDR:GetCrtcGammaSize
R023 RANDR:GetCrtcGamma
R024 RANDR:SetCrtcGamma
+R025 RANDR:GetScreenResourcesCurrent
+R026 RANDR:SetCrtcTransform
+R027 RANDR:GetCrtcTransform
+R028 RANDR:GetPanning
+R029 RANDR:SetPanning
+R030 RANDR:SetOutputPrimary
+R031 RANDR:GetOutputPrimary
V000 RANDR:ScreenChangeNotify
V001 RANDR:Notify
E000 RANDR:BadRROutput
commit b7b520e3a93fde5579c48eabb9b8c694a7dfbcb1
Author: Julien Cristau <jcristau at debian.org>
Date: Wed Dec 24 14:23:37 2008 +0100
Add XI 1.5 event and requests to protocol.txt
(cherry picked from commit 063833f3a6d9f8f657e3de309c8d6d5c3d606513)
Signed-off-by: Keith Packard <keithp at keithp.com>
diff --git a/dix/protocol.txt b/dix/protocol.txt
index c085fde..985f67b 100644
--- a/dix/protocol.txt
+++ b/dix/protocol.txt
@@ -937,6 +937,10 @@ R032 XInputExtension:DeviceBell
R033 XInputExtension:SetDeviceValuators
R034 XInputExtension:GetDeviceControl
R035 XInputExtension:ChangeDeviceControl
+R036 XInputExtension:ListDeviceProperties
+R037 XInputExtension:ChangeDeviceProperty
+R038 XInputExtension:DeleteDeviceProperty
+R039 XInputExtension:GetDeviceProperty
V000 XInputExtension:DeviceValuator
V001 XInputExtension:DeviceKeyPress
V002 XInputExtension:DeviceKeyRelease
@@ -953,6 +957,7 @@ V012 XInputExtension:ChangeDeviceNotify
V013 XInputExtension:DeviceKeystateNotify
V014 XInputExtension:DeviceButtonstateNotify
V015 XInputExtension:DevicePresenceNotify
+V016 XInputExtension:DevicePropertyNotify
E000 XInputExtension:BadDevice
E001 XInputExtension:BadEvent
E002 XInputExtension:BadMode
commit 0df12a3f01c953c0908b4b53a93fd3a5c704f69b
Author: Ander Conselvan de Oliveira <ander at mandriva.com.br>
Date: Mon Apr 6 16:01:20 2009 -0300
xfree86: Remove device from inputInfo.devices if ActivateDevice failed.
After the call to xf86ActivateDevice, the new device will be added to
inputInfo.devices. However, if the subsequent call to ActivateDevice
fails, the correponding InputInfoRec for the device is deleted but an
entry still remains in inputInfo.devices. This might lead to a server
crash later on (on InitAndStartDevices for instance) when the device
control proc would be called for an invalid device.
(cherry picked from commit efa31092d6703397121a0ada4f7205a8ecad3d3d)
Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
Signed-off-by: Keith Packard <keithp at keithp.com>
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index 96352a4..1f41234 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -543,7 +543,11 @@ xf86NewInputDevice(IDevPtr idev, DeviceIntPtr *pdev, BOOL enable)
dev = pInfo->dev;
rval = ActivateDevice(dev);
if (rval != Success)
+ {
+ xf86Msg(X_ERROR, "Couldn't init device \"%s\"\n", idev->identifier);
+ RemoveDevice(dev);
goto unwind;
+ }
/* Enable it if it's properly initialised and we're currently in the VT */
if (enable && dev->inited && dev->startup && xf86Screens[0]->vtSema)
commit 24dc7694a2ba72d45cda7720aeaec8350930edc3
Author: Michel Dänzer <daenzer at vmware.com>
Date: Fri Feb 6 11:37:53 2009 +0100
EXA: Guard empty pending region warning by DEBUG_MIGRATE.
It isn't very useful yet while the damage layer calls us for empty operations,
mostly confuses users.
(cherry picked from commit 3948b523893d3d44b6a088340c4252e969613769)
Signed-off-by: Keith Packard <keithp at keithp.com>
diff --git a/exa/exa_migration.c b/exa/exa_migration.c
index 571650c..4623ecc 100644
--- a/exa/exa_migration.c
+++ b/exa/exa_migration.c
@@ -162,6 +162,7 @@ exaCopyDirty(ExaMigrationPtr migrate, RegionPtr pValidDst, RegionPtr pValidSrc,
if (pExaScr->optimize_migration) {
RegionPtr pending_damage = DamagePendingRegion(pExaPixmap->pDamage);
+#if DEBUG_MIGRATE
if (REGION_NIL(pending_damage)) {
static Bool firsttime = TRUE;
@@ -170,6 +171,7 @@ exaCopyDirty(ExaMigrationPtr migrate, RegionPtr pValidDst, RegionPtr pValidSrc,
firsttime = FALSE;
}
}
+#endif
REGION_INTERSECT(pScreen, &CopyReg, &CopyReg, pending_damage);
}
commit 5198ff6f86e4796819c0d1f742de57a69228c93b
Author: Michel Dänzer <daenzer at vmware.com>
Date: Fri Feb 27 16:37:28 2009 +0100
EXA: Handle separate alpha maps properly in Composite fallback, take two.
Preserve the EXA ABI by introducing a new driver flag EXA_SUPPORTS_PREPARE_AUX.
If the driver doesn't set this flag, we have to assume any Prepare/FinishAccess
driver hooks can't handle the EXA_PREPARE_AUX* indices, so we move out such
pixmaps at PrepareAccess time.
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=18710 .
Signed-off-by: Michel Dänzer <daenzer at vmware.com>
(cherry picked from commit 4cfb36f6ad2df01215028fec48d99239a0e4496b)
Signed-off-by: Keith Packard <keithp at keithp.com>
diff --git a/exa/exa.c b/exa/exa.c
index 9b7091d..2708107 100644
--- a/exa/exa.c
+++ b/exa/exa.c
@@ -511,6 +511,12 @@ ExaDoPrepareAccess(DrawablePtr pDrawable, int index)
if (pExaScr->info->PrepareAccess == NULL)
return;
+ if (index >= EXA_PREPARE_AUX0 &&
+ !(pExaScr->info->flags & EXA_SUPPORTS_PREPARE_AUX)) {
+ exaMoveOutPixmap (pPixmap);
+ return;
+ }
+
if (!(*pExaScr->info->PrepareAccess) (pPixmap, index)) {
ExaPixmapPriv (pPixmap);
if (pExaPixmap->score == EXA_PIXMAP_SCORE_PINNED)
@@ -570,6 +576,13 @@ exaFinishAccess(DrawablePtr pDrawable, int index)
if (!exaPixmapIsOffscreen (pPixmap))
return;
+ if (index >= EXA_PREPARE_AUX0 &&
+ !(pExaScr->info->flags & EXA_SUPPORTS_PREPARE_AUX)) {
+ ErrorF("EXA bug: Trying to call driver FinishAccess hook with "
+ "unsupported index EXA_PREPARE_AUX*\n");
+ return;
+ }
+
(*pExaScr->info->FinishAccess) (pPixmap, index);
}
diff --git a/exa/exa.h b/exa/exa.h
index 5982e1a..4a96cc6 100644
--- a/exa/exa.h
+++ b/exa/exa.h
@@ -672,6 +672,13 @@ typedef struct _ExaDriver {
* from.
*/
#define EXA_PREPARE_MASK 2
+ /**
+ * EXA_PREPARE_AUX* are additional indices for other purposes, e.g.
+ * separate alpha maps with Composite operations.
+ */
+ #define EXA_PREPARE_AUX0 3
+ #define EXA_PREPARE_AUX1 4
+ #define EXA_PREPARE_AUX2 5
/** @} */
/**
@@ -742,6 +749,13 @@ typedef struct _ExaDriver {
*/
#define EXA_HANDLES_PIXMAPS (1 << 3)
+/**
+ * EXA_SUPPORTS_PREPARE_AUX indicates to EXA that the driver can handle the
+ * EXA_PREPARE_AUX* indices in the Prepare/FinishAccess hooks. If there are no
+ * such hooks, this flag has no effect.
+ */
+#define EXA_SUPPORTS_PREPARE_AUX (1 << 4)
+
/** @} */
/* in exa.c */
diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
index c030486..2beeb44 100644
--- a/exa/exa_unaccel.c
+++ b/exa/exa_unaccel.c
@@ -309,6 +309,15 @@ ExaCheckComposite (CARD8 op,
REGION_NULL(pScreen, ®ion);
+ /* We need to prepare access to any separate alpha maps first, in case the
+ * driver doesn't support EXA_PREPARE_AUX*, in which case EXA_PREPARE_SRC
+ * may be used for moving them out.
+ */
+ if (pSrc->alphaMap && pSrc->alphaMap->pDrawable)
+ exaPrepareAccess(pSrc->alphaMap->pDrawable, EXA_PREPARE_AUX2);
+ if (pMask && pMask->alphaMap && pMask->alphaMap->pDrawable)
+ exaPrepareAccess(pMask->alphaMap->pDrawable, EXA_PREPARE_AUX1);
+
if (!exaOpReadsDestination(op)) {
if (!miComputeCompositeRegion (®ion, pSrc, pMask, pDst,
xSrc, ySrc, xMask, yMask, xDst, yDst,
@@ -321,9 +330,17 @@ ExaCheckComposite (CARD8 op,
REGION_TRANSLATE(pScreen, ®ion, xoff, yoff);
+ if (pDst->alphaMap && pDst->alphaMap->pDrawable)
+ exaPrepareAccessReg(pDst->alphaMap->pDrawable, EXA_PREPARE_AUX0,
+ ®ion);
+
exaPrepareAccessReg (pDst->pDrawable, EXA_PREPARE_DEST, ®ion);
- } else
+ } else {
+ if (pDst->alphaMap && pDst->alphaMap->pDrawable)
+ exaPrepareAccess(pDst->alphaMap->pDrawable, EXA_PREPARE_AUX0);
+
exaPrepareAccess (pDst->pDrawable, EXA_PREPARE_DEST);
+ }
EXA_FALLBACK(("from picts %p/%p to pict %p\n",
pSrc, pMask, pDst));
@@ -346,9 +363,15 @@ ExaCheckComposite (CARD8 op,
height);
if (pMask && pMask->pDrawable != NULL)
exaFinishAccess (pMask->pDrawable, EXA_PREPARE_MASK);
+ if (pMask && pMask->alphaMap && pMask->alphaMap->pDrawable)
+ exaFinishAccess(pMask->alphaMap->pDrawable, EXA_PREPARE_AUX1);
if (pSrc->pDrawable != NULL)
exaFinishAccess (pSrc->pDrawable, EXA_PREPARE_SRC);
+ if (pSrc->alphaMap && pSrc->alphaMap->pDrawable)
+ exaFinishAccess(pSrc->alphaMap->pDrawable, EXA_PREPARE_AUX2);
exaFinishAccess (pDst->pDrawable, EXA_PREPARE_DEST);
+ if (pDst->alphaMap && pDst->alphaMap->pDrawable)
+ exaFinishAccess(pDst->alphaMap->pDrawable, EXA_PREPARE_AUX0);
REGION_UNINIT(pScreen, ®ion);
}
commit 199bb367152d68e784dfbec79ab9b70540d83fc2
Author: Ian Romanick <ian.d.romanick at intel.com>
Date: Mon Apr 20 18:20:52 2009 -0700
DRI2: Send the version the code actually supports
This prevents building an older server with a new dri2proto.h from
resulting in a DRI2 extension module that lies about the version it
supports.
Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
(cherry picked from commit 44227ef1b77467c76147b9bf79bdd0e6305a522a)
Signed-off-by: Keith Packard <keithp at keithp.com>
diff --git a/hw/xfree86/dri2/dri2ext.c b/hw/xfree86/dri2/dri2ext.c
index 0a1dce4..1409777 100644
--- a/hw/xfree86/dri2/dri2ext.c
+++ b/hw/xfree86/dri2/dri2ext.c
@@ -80,8 +80,8 @@ ProcDRI2QueryVersion(ClientPtr client)
rep.type = X_Reply;
rep.length = 0;
rep.sequenceNumber = client->sequence;
- rep.majorVersion = DRI2_MAJOR;
- rep.minorVersion = DRI2_MINOR;
+ rep.majorVersion = 1;
+ rep.minorVersion = 0;
if (client->swapped) {
swaps(&rep.sequenceNumber, n);
More information about the xorg-commit
mailing list