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, &region);
 
+    /* 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 (&region, pSrc, pMask, pDst,
 				       xSrc, ySrc, xMask, yMask, xDst, yDst,
@@ -321,9 +330,17 @@ ExaCheckComposite (CARD8      op,
 
 	REGION_TRANSLATE(pScreen, &region, xoff, yoff);
 
+	if (pDst->alphaMap && pDst->alphaMap->pDrawable)
+	    exaPrepareAccessReg(pDst->alphaMap->pDrawable, EXA_PREPARE_AUX0,
+				&region);
+
 	exaPrepareAccessReg (pDst->pDrawable, EXA_PREPARE_DEST, &region);
-    } 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, &region);
 }
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