xserver: Branch 'server-1.6-branch' - 12 commits

Keith Packard keithp at kemper.freedesktop.org
Tue Dec 9 20:52:49 PST 2008


 Xi/exevents.c                        |    2 +-
 Xi/xiproperty.c                      |    2 +-
 configure.ac                         |   23 ++++++++++++++++++++++-
 dix/getevents.c                      |    6 +++---
 glx/Makefile.am                      |    4 ++--
 hw/dmx/input/dmxinputinit.c          |    2 +-
 hw/xfree86/common/xf86Config.c       |    5 +++--
 hw/xfree86/common/xf86InPriv.h       |    2 +-
 hw/xfree86/common/xf86Init.c         |    8 +++++---
 hw/xfree86/common/xf86Xinput.c       |   29 ++++++++++++++++++++++++-----
 hw/xfree86/common/xf86Xinput.h       |    4 +---
 hw/xfree86/doc/man/xorg.conf.man.pre |    2 +-
 hw/xfree86/modes/xf86Crtc.c          |   13 +++++++++++--
 hw/xfree86/modes/xf86Rotate.c        |    2 +-
 include/exevents.h                   |    2 +-
 randr/rrcrtc.c                       |    6 +++---
 randr/rrsdispatch.c                  |   29 ++++++++++++++++++++++-------
 xkb/ddxCtrls.c                       |   20 --------------------
 18 files changed, 103 insertions(+), 58 deletions(-)

New commits:
commit 0d27dd23cf08a2dc3581f9db81371c2cdb798db0
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Dec 8 16:28:00 2008 -0500

    Default to x86emu even on i386 linux
    
    vm86 mode is a bad idea anyway, and using the emulator everywhere
    means we get a consistent set of bugs.
    (cherry picked from commit 58a27d2932164e43c0db42b1286ec2f95250b420)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index f62f35f..81024e9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -312,7 +312,6 @@ case $host_cpu in
   i*86)
 	I386_VIDEO=yes
 	case $host_os in
-		*linux*)	DEFAULT_INT10=vm86 ;;
 		*freebsd*)	AC_DEFINE(USE_DEV_IO) ;;
 		*dragonfly*)	AC_DEFINE(USE_DEV_IO) ;;
 		*netbsd*)	AC_DEFINE(USE_I386_IOPL)
commit ff9b55d8cbc19e0e31a91034e332058acd967cd1
Author: Sascha Hlusiak <saschahlusiak at arcor.de>
Date:   Mon Dec 8 12:24:39 2008 +0100

    ddxCtrls.c: XkbDDXUsesSoftRepeat always returns 1 now
    
    We'd like to do soft repeat in the server for all keys. Remove obscure check, that'd
    prevent the server from autorepeating when delay is set to exactly 660ms and rate is
    set to exactly 25 (interval=40).
    
    Signed-off-by: Daniel Stone <daniel at fooishbar.org>
    (cherry picked from commit bbf811514d3cdf84790bad5b852942a4e636902b)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/xkb/ddxCtrls.c b/xkb/ddxCtrls.c
index 34ea0bd..be269c2 100644
--- a/xkb/ddxCtrls.c
+++ b/xkb/ddxCtrls.c
@@ -57,27 +57,7 @@ int realRepeat;
 int
 XkbDDXUsesSoftRepeat(DeviceIntPtr pXDev)
 {
-#ifndef XKB_ALWAYS_USES_SOFT_REPEAT
-    if (pXDev && pXDev->kbdfeed ) {
-	if (pXDev->kbdfeed->ctrl.autoRepeat) {
-	    if (pXDev->key && pXDev->key->xkbInfo) {
-		XkbDescPtr	xkb;
-		xkb= pXDev->key->xkbInfo->desc;
-		if ((xkb->ctrls->repeat_delay == 660) &&
-		    (xkb->ctrls->repeat_interval == 40) &&
-		    ((xkb->ctrls->enabled_ctrls&(XkbSlowKeysMask|
-						 XkbBounceKeysMask|
-						 XkbMouseKeysMask))==0)) {
-			return 0;
-		}
-		return ((xkb->ctrls->enabled_ctrls&XkbRepeatKeysMask)!=0);
-	    }
-	}
-    }
-    return 0;
-#else
     return 1;
-#endif
 }
 
 void
commit b0c64725526338cbc02708415e1aa9497cdc3a38
Author: Peter Hutterer <peter.hutterer at redhat.com>
Date:   Wed Nov 26 14:15:04 2008 +1000

    xfree86: don't FatalError on "too many input devices".
    
    Just ignore devices after MAXDEVICES has been reached, but warn the user that
    the devices are ignored.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at redhat.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/common/xf86InPriv.h b/hw/xfree86/common/xf86InPriv.h
index 62e4820..3838d69 100644
--- a/hw/xfree86/common/xf86InPriv.h
+++ b/hw/xfree86/common/xf86InPriv.h
@@ -38,7 +38,7 @@ extern InputDriverPtr *xf86InputDriverList;
 extern int xf86NumInputDrivers;
 
 /* xf86Xinput.c */
-void xf86ActivateDevice(InputInfoPtr pInfo);
+int xf86ActivateDevice(InputInfoPtr pInfo);
 
 /* xf86Helper.c */
 InputDriverPtr xf86LookupInputDriver(const char *name);
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 44e0392..236c00b 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -1324,7 +1324,9 @@ InitInput(argc, argv)
             strcpy((*pDev)->driver, "kbd");
         }
 
-        xf86NewInputDevice(*pDev, &dev, TRUE);
+        /* If one fails, the others will too */
+        if (xf86NewInputDevice(*pDev, &dev, TRUE) == BadAlloc)
+            break;
     }
 }
 
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index 2cb41e5..9558b77 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -287,12 +287,13 @@ xf86ProcessCommonOptions(LocalDevicePtr local,
 /***********************************************************************
  *
  * xf86ActivateDevice --
- * 
+ *
  *	Initialize an input device.
  *
+ * Returns TRUE on success, or FALSE otherwise.
  ***********************************************************************
  */
-_X_EXPORT void
+_X_EXPORT int
 xf86ActivateDevice(LocalDevicePtr local)
 {
     DeviceIntPtr	dev;
@@ -301,8 +302,13 @@ xf86ActivateDevice(LocalDevicePtr local)
         dev = AddInputDevice(serverClient, local->device_control, TRUE);
 
         if (dev == NULL)
-            FatalError("Too many input devices");
-        
+        {
+            xf86Msg(X_ERROR, "Too many input devices. Ignoring %s\n",
+                    local->name);
+            local->dev = NULL;
+            return FALSE;
+        }
+
         local->atom = MakeAtom(local->type_name,
                                strlen(local->type_name),
                                TRUE);
@@ -334,6 +340,8 @@ xf86ActivateDevice(LocalDevicePtr local)
             xf86Msg(X_INFO, "XINPUT: Adding extended input device \"%s\" (type: %s)\n",
                     local->name, local->type_name);
     }
+
+    return TRUE;
 }
 
 
@@ -470,6 +478,13 @@ AddOtherInputDevices()
 /**
  * Create a new input device, activate and enable it.
  *
+ * Possible return codes:
+ *    BadName .. a bad driver name was supplied.
+ *    BadImplementation ... The driver does not have a PreInit function. This
+ *                          is a driver bug.
+ *    BadMatch .. device initialization failed.
+ *    BadAlloc .. too many input devices
+ *
  * @param idev The device, already set up with identifier, driver, and the
  * options.
  * @param pdev Pointer to the new device, if Success was reported.
@@ -519,7 +534,11 @@ xf86NewInputDevice(IDevPtr idev, DeviceIntPtr *pdev, BOOL enable)
         goto unwind;
     }
 
-    xf86ActivateDevice(pInfo);
+    if (!xf86ActivateDevice(pInfo))
+    {
+        rval = BadAlloc;
+        goto unwind;
+    }
 
     dev = pInfo->dev;
     ActivateDevice(dev);
diff --git a/hw/xfree86/common/xf86Xinput.h b/hw/xfree86/common/xf86Xinput.h
index 28a3315..2ca2073 100644
--- a/hw/xfree86/common/xf86Xinput.h
+++ b/hw/xfree86/common/xf86Xinput.h
@@ -170,9 +170,7 @@ void xf86PostKeyEvent(DeviceIntPtr device, unsigned int key_code, int is_down,
 		      ...);
 void xf86PostKeyboardEvent(DeviceIntPtr device, unsigned int key_code,
                            int is_down);
-void xf86ActivateDevice(LocalDevicePtr local);
-Bool xf86CheckButton(int button, int down);
-void xf86SwitchCoreDevice(LocalDevicePtr device, DeviceIntPtr core);
+int xf86ActivateDevice(LocalDevicePtr local);
 LocalDevicePtr xf86FirstLocalDevice(void);
 int xf86ScaleAxis(int Cx, int Sxhigh, int Sxlow, int Rxhigh, int Rxlow);
 void xf86XInputSetScreen(LocalDevicePtr local, int screen_number, int x, int y);
commit db5abde7ea0e482041d16d7d5f3715cd4f6222d3
Author: Peter Hutterer <peter.hutterer at redhat.com>
Date:   Fri Dec 5 10:12:57 2008 +1000

    dix: fix calculation of valuator events.
    
    Follow-up to 4971315296cb. countValuatorEvents was copied from GKVE where it
    was obviously broken but nobody noticed. GPE had the correct version, but that
    one got lost during de-duplication. Restoring the correct calculation - if we
    have 6 valuators, we want 1 valuator event, not 2.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at redhat.com>
    (cherry picked from commit ee1a6c28418a6dad6c89f79a994f27bfbaa77368)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/dix/getevents.c b/dix/getevents.c
index 82be5e9..9592d4c 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -728,9 +728,9 @@ static int
 countValuatorEvents(int num_valuators)
 {
     if (num_valuators) {
-        if ((num_valuators / 6) + 1 > MAX_VALUATOR_EVENTS)
-            num_valuators = MAX_VALUATOR_EVENTS;
-        return (num_valuators / 6) + 1;
+        if (((num_valuators - 1) / 6) + 1 > MAX_VALUATOR_EVENTS)
+            num_valuators = MAX_VALUATOR_EVENTS * 6;
+        return ((num_valuators - 1)/ 6) + 1;
     } else
         return 0;
 }
commit d679cf70a79aa53e823f4fa51a7ab19837f26525
Author: Tom Jaeger <ThJaeger at gmail.com>
Date:   Mon Dec 8 11:38:12 2008 +1000

    Xi: XIGetDevice needs to ignore the MORE_EVENTS flag.
    
    Reported in X.Org Bug 18882, Comment 5.
    <http://bugs.freedesktop.org/show_bug.cgi?id=18882>
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 78a62d7713c708d067d8824ec41b0a0225c1997f)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/Xi/exevents.c b/Xi/exevents.c
index 00a6b21..a976802 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -150,7 +150,7 @@ XIGetDevice(xEvent* xE)
         int rc;
         int id;
 
-        id = ((deviceKeyButtonPointer*)xE)->deviceid;
+        id = ((deviceKeyButtonPointer*)xE)->deviceid & ~MORE_EVENTS;
 
         rc = dixLookupDevice(&pDev, id, serverClient, DixUnknownAccess);
         if (rc != Success)
commit 480caacbdd20d47770cc9a698be9f7c98e87783d
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Mon Dec 8 12:12:39 2008 +1000

    xfree86: init EQ before trying to initialise the devices (#18890)
    
    The kbd driver may send events during device initialisation, and these events
    need the EQ set up already.
    
    X.Org Bug 18890 <http://bugs.freedesktop.org/show_bug.cgi?id=18890>
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 39db182b637041255ed6dac739ff77c8e4e07c30)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 922e7b3..44e0392 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -1315,6 +1315,8 @@ InitInput(argc, argv)
 
     xf86Info.vtRequestsPending = FALSE;
 
+    mieqInit();
+
     /* Call the PreInit function for each input device instance. */
     for (pDev = xf86ConfigLayout.inputs; pDev && *pDev; pDev++) {
         /* Replace obsolete keyboard driver with kbd */
@@ -1324,8 +1326,6 @@ InitInput(argc, argv)
 
         xf86NewInputDevice(*pDev, &dev, TRUE);
     }
-
-    mieqInit();
 }
 
 /*
commit 991f0be6e2bfe3cc3df55b2fc75fe3900d5e0b94
Author: Maarten Maathuis <madman2003 at gmail.com>
Date:   Sat Nov 29 14:30:55 2008 +0100

    randr: Avoid needlessly creating a shadow framebuffer.
    
    - pScreen->width and height were zero, so it didn't "fit" the screen.
    (cherry picked from commit ffb484f7ef84099019b196ef97bfb2355eb6d52a)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c
index fe9d7b0..9ae173c 100644
--- a/hw/xfree86/modes/xf86Crtc.c
+++ b/hw/xfree86/modes/xf86Crtc.c
@@ -112,6 +112,8 @@ xf86CrtcCreate (ScrnInfoPtr		scrn,
     crtc->filter_width = 0;
     crtc->filter_height = 0;
     crtc->transform_in_use = FALSE;
+    crtc->transformPresent = FALSE;
+    crtc->desiredTransformPresent = FALSE;
     memset (&crtc->bounds, '\0', sizeof (crtc->bounds));
 
     if (xf86_config->crtc)
@@ -241,6 +243,8 @@ xf86CrtcSetModeTransform (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotati
 			  RRTransformPtr transform, int x, int y)
 {
     ScrnInfoPtr		scrn = crtc->scrn;
+    /* During ScreenInit() scrn->pScreen is still NULL */
+    ScreenPtr		pScreen = screenInfo.screens[scrn->scrnIndex];
     xf86CrtcConfigPtr   xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
     int			i;
     Bool		ret = FALSE;
@@ -254,9 +258,9 @@ xf86CrtcSetModeTransform (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotati
 
     if (crtc->funcs->set_mode_major)
 	return crtc->funcs->set_mode_major(crtc, mode, rotation, x, y);
-	
+
     crtc->enabled = xf86CrtcInUse (crtc);
-    
+
     if (!crtc->enabled)
     {
 	/* XXX disable crtc? */
@@ -290,6 +294,11 @@ xf86CrtcSetModeTransform (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotati
     } else
 	crtc->transformPresent = FALSE;
 
+    /* xf86CrtcFitsScreen() relies on these values being correct. */
+    /* This should ensure the values are always set at modeset time. */
+    pScreen->width = scrn->virtualX;
+    pScreen->height = scrn->virtualY;
+
     /* Shift offsets that move us out of virtual size */
     if (x + mode->HDisplay > xf86_config->maxWidth ||
 	y + mode->VDisplay > xf86_config->maxHeight)
diff --git a/hw/xfree86/modes/xf86Rotate.c b/hw/xfree86/modes/xf86Rotate.c
index 07189a5..d7f7b3b 100644
--- a/hw/xfree86/modes/xf86Rotate.c
+++ b/hw/xfree86/modes/xf86Rotate.c
@@ -464,7 +464,7 @@ xf86CrtcRotate (xf86CrtcPtr crtc)
 	    /* mark shadowed area as damaged so it will be repainted */
 	    xf86CrtcDamageShadow (crtc);
 	}
-	
+
 	if (!xf86_config->rotation_damage)
 	{
 	    /* Create damage structure */
commit d6129ebf8dad9cfbc13dc8db7c780b023bf9a60b
Author: Timo Aaltonen <tjaalton at cc.hut.fi>
Date:   Wed Dec 3 18:40:29 2008 +0200

    If AEI is on, disable 'vmmouse' in addition to 'kbd' and 'mouse'.
    
    Signed-off-by: Timo Aaltonen <tjaalton at cc.hut.fi>
    Signed-off-by: Peter Hutterer <peter.hutterer at redhat.com>
    (cherry picked from commit dd128ddcdcbe254a9cdd973590f6a979a7f0427e)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 9771008..f530ec4 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -2460,13 +2460,14 @@ checkInput(serverLayoutPtr layout, Bool implicit_layout) {
         while(*dev)
         {
             if (strcmp((*dev)->driver, "kbd") == 0 ||
-                strcmp((*dev)->driver, "mouse") == 0)
+                strcmp((*dev)->driver, "mouse") == 0 ||
+                strcmp((*dev)->driver, "vmmouse") == 0)
             {
                 IDevPtr *current;
                 if (!warned)
                 {
                     xf86Msg(X_WARNING, "AllowEmptyInput is on, devices using "
-                            "drivers 'kbd' or 'mouse' will be disabled.\n");
+                            "drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.\n");
                     warned = TRUE;
                 }
 
diff --git a/hw/xfree86/doc/man/xorg.conf.man.pre b/hw/xfree86/doc/man/xorg.conf.man.pre
index 4f1ba00..d9a4b35 100644
--- a/hw/xfree86/doc/man/xorg.conf.man.pre
+++ b/hw/xfree86/doc/man/xorg.conf.man.pre
@@ -662,7 +662,7 @@ the X server to load. Disabled by default.
 If enabled, don't add the standard keyboard and mouse drivers, if there are no
 input devices in the config file.  Enabled by default if AutoAddDevices and
 AutoEnableDevices is enabled, otherwise disabled.
-If AllowEmptyInput is on, devices using the kbd or mouse driver are ignored.
+If AllowEmptyInput is on, devices using the kbd, mouse or vmmouse driver are ignored.
 .TP 7
 .BI "Option \*qAutoAddDevices\*q \*q" boolean \*q
 If this option is disabled, then no devices will be added from HAL events.
commit 90900976ceee294fef4ae39e10869057c50f2021
Author: Julien Cristau <jcristau at debian.org>
Date:   Wed Nov 26 21:19:55 2008 +0100

    randr: add swapped dispatch for RR[GS]etCrtcTransform
    
    Fix a memory leak in ProcRRGetCrtcTransform() while I'm at it.
    
    Signed-off-by: Julien Cristau <jcristau at debian.org>
    Cc: Keith Packard <keithp at keithp.com>
    (cherry picked from commit 0b5ecabfb803cd820338fb0364521fe39b05578b)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/randr/rrcrtc.c b/randr/rrcrtc.c
index 5d270ce..90d93b5 100644
--- a/randr/rrcrtc.c
+++ b/randr/rrcrtc.c
@@ -1150,8 +1150,7 @@ transform_filter_encode (ClientPtr client, char *output,
     if (client->swapped) {
 	swaps (nbytesFilter, n);
 	swaps (nparamsFilter, n);
-	SwapLongs ((CARD32 *) (output + nbytes),
-		   nparams * sizeof (xFixed));
+	SwapLongs ((CARD32 *) (output + nbytes), nparams);
     }
     nbytes += nparams * sizeof (xFixed);
     return nbytes;
@@ -1162,7 +1161,7 @@ transform_encode (ClientPtr client, xRenderTransform *wire, PictTransform *pict)
 {
     xRenderTransform_from_PictTransform (wire, pict);
     if (client->swapped)
-	SwapLongs ((CARD32 *) wire, sizeof (xRenderTransform));
+	SwapLongs ((CARD32 *) wire, sizeof (xRenderTransform) >> 2);
 }
 
 int
@@ -1214,5 +1213,6 @@ ProcRRGetCrtcTransform (ClientPtr client)
 	swapl (&reply->length, n);
     }
     WriteToClient (client, sizeof (xRRGetCrtcTransformReply) + nextra, (char *) reply);
+    xfree(reply);
     return client->noClientException;
 }
diff --git a/randr/rrsdispatch.c b/randr/rrsdispatch.c
index 5a6dab5..d356ab0 100644
--- a/randr/rrsdispatch.c
+++ b/randr/rrsdispatch.c
@@ -367,21 +367,36 @@ SProcRRSetCrtcGamma (ClientPtr client)
 static int
 SProcRRSetCrtcTransform (ClientPtr client)
 {
+    int n, nparams;
+    char *filter;
+    CARD32 *params;
     REQUEST(xRRSetCrtcTransformReq);
-    
-    REQUEST_SIZE_MATCH(xRRSetCrtcTransformReq);
-    (void) stuff;
-    return BadImplementation; 
+
+    REQUEST_AT_LEAST_SIZE(xRRSetCrtcTransformReq);
+    swaps(&stuff->length, n);
+    swapl(&stuff->crtc, n);
+    SwapLongs((CARD32 *)&stuff->transform, (sizeof(xRenderTransform)) >> 2);
+    swaps(&stuff->nbytesFilter, n);
+    filter = (char *)(stuff + 1);
+    params = (CARD32 *) (filter + ((stuff->nbytesFilter + 3) & ~3));
+    nparams = ((CARD32 *) stuff + client->req_len) - params;
+    if (nparams < 0)
+	return BadLength;
+
+    SwapLongs(params, nparams);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 static int
 SProcRRGetCrtcTransform (ClientPtr client)
 {
+    int n;
     REQUEST(xRRGetCrtcTransformReq);
-    
+
     REQUEST_SIZE_MATCH(xRRGetCrtcTransformReq);
-    (void) stuff;
-    return BadImplementation; 
+    swaps(&stuff->length, n);
+    swapl(&stuff->crtc, n);
+    return (*ProcRandrVector[stuff->randrReqType]) (client);
 }
 
 int (*SProcRandrVector[RRNumberRequests])(ClientPtr) = {
commit de83a342f483fbf3cc841929876002a3c47e3496
Author: Kristian Høgsberg <krh at redhat.com>
Date:   Wed Dec 3 11:22:38 2008 -0500

    Test for DRI2 extension in dri_internal.h and only enable AIGLX DRI2 if found.
    (cherry picked from commit 110a71d11ab7a1a55a6a24d792457fdef0b0746d)
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 947a167..f62f35f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -874,6 +874,28 @@ if test "x$DRI" = xyes || test "x$DRI2" = xyes; then
 	AC_SUBST(LIBDRM_LIBS)
 fi
 
+if test "x$DRI2" = xyes; then
+	save_CFLAGS=$CFLAGS
+	CFLAGS="$GL_CFLAGS $LIBDRM_CFLAGS -Wall"
+	AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <GL/gl.h>
+#include <GL/internal/dri_interface.h>
+#ifndef __DRI_DRI2
+#error DRI2 extension not available.
+#endif]])],
+			  [HAVE_DRI2EXTENSION=yes],
+			  [HAVE_DRI2EXTENSION=no])
+	CFLAGS=$save_CFLAGS
+	if test "x$HAVE_DRI2EXTENSION" = xyes; then
+		AC_DEFINE(DRI2_AIGLX, 1, [Build DRI2 AIGLX loader])
+		DRI2_AIGLX=yes
+	else
+		AC_MSG_NOTICE([DRI2 AIGLX disabled, __DRI_DRI2 not defined in dri_interface.h.])
+		DRI2_AIGLX=no
+	fi
+fi
+AM_CONDITIONAL(DRI2_AIGLX, test "x$DRI2_AIGLX" == xyes)
+
+
 AM_CONDITIONAL(XINERAMA, [test "x$XINERAMA" = xyes])
 if test "x$XINERAMA" = xyes; then
 	AC_DEFINE(XINERAMA, 1, [Support Xinerama extension])
diff --git a/glx/Makefile.am b/glx/Makefile.am
index 8c705a7..bec35bf 100644
--- a/glx/Makefile.am
+++ b/glx/Makefile.am
@@ -24,7 +24,7 @@ INCLUDES = \
 	-I$(top_srcdir)/hw/xfree86/dri \
 	-I$(top_srcdir)/mi
 
-if DRI2
+if DRI2_AIGLX
 INCLUDES += -I$(top_srcdir)/hw/xfree86/dri2
 endif
 
@@ -53,7 +53,7 @@ libglxdri_la_SOURCES = \
         extension_string.c \
         extension_string.h
 
-if DRI2
+if DRI2_AIGLX
 libglxdri_la_SOURCES += glxdri2.c
 endif
 
commit 3df1db67e37094ef263134a86ee82a36fc52f990
Author: Peter Hutterer <peter.hutterer at redhat.com>
Date:   Wed Dec 3 11:31:48 2008 +1000

    Xi: change XIUnRegisterPropertyHandler to XIUnregisterPropertyHandler
    
    CamelCase can be taken too far, and AFAICT there's no consumers of that
    function yet anyway.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at redhat.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/Xi/xiproperty.c b/Xi/xiproperty.c
index 2ff5cae..01db856 100644
--- a/Xi/xiproperty.c
+++ b/Xi/xiproperty.c
@@ -121,7 +121,7 @@ XIRegisterPropertyHandler(DeviceIntPtr         dev,
 }
 
 void
-XIUnRegisterPropertyHandler(DeviceIntPtr dev, long id)
+XIUnregisterPropertyHandler(DeviceIntPtr dev, long id)
 {
     XIPropertyHandlerPtr curr, prev = NULL;
 
diff --git a/include/exevents.h b/include/exevents.h
index 8788295..7459b5c 100644
--- a/include/exevents.h
+++ b/include/exevents.h
@@ -240,7 +240,7 @@ extern long XIRegisterPropertyHandler(
                                Atom property)
 );
 
-extern void XIUnRegisterPropertyHandler(
+extern _X_EXPORT void XIUnregisterPropertyHandler(
         DeviceIntPtr          dev,
         long                  id
 );
commit ba666a969e938daa2176c12c4959393789b0a98d
Author: Keith Packard <keithp at keithp.com>
Date:   Tue Dec 9 20:36:41 2008 -0800

    Revert "dmx: claim we support XI 2."
    
    This reverts commit 8da8a0fec4b1b9d9208635dedb2f449dc99e0004.
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/hw/dmx/input/dmxinputinit.c b/hw/dmx/input/dmxinputinit.c
index a0eb80f..77f8ed5 100644
--- a/hw/dmx/input/dmxinputinit.c
+++ b/hw/dmx/input/dmxinputinit.c
@@ -865,7 +865,7 @@ static void dmxInputScanForExtensions(DMXInputInfo *dmxInput, int doXI)
     
     /* Print out information about the XInput Extension. */
     handler = XSetExtensionErrorHandler(dmxInputExtensionErrorHandler);
-    ext     = XQueryInputVersion(display, XI_2_Major, XI_2_Minor);
+    ext     = XGetExtensionVersion(display, INAME);
     XSetExtensionErrorHandler(handler);
     
     if (!ext || ext == (XExtensionVersion *)NoSuchExtension) {


More information about the xorg-commit mailing list