Module Name:    xsrc
Committed By:   mrg
Date:           Sun Jul 24 01:33:36 UTC 2011

Modified Files:
        xsrc/external/mit/xorg-server/dist/Xext: sync.c
        xsrc/external/mit/xorg-server/dist/dix: getevents.c window.c
        xsrc/external/mit/xorg-server/dist/exa: exa_accel.c
        xsrc/external/mit/xorg-server/dist/glx: glxcmds.c glxdri.c
        xsrc/external/mit/xorg-server/dist/hw/xfree86/modes: xf86Cursors.c
        xsrc/external/mit/xorg-server/dist/os: utils.c
Removed Files:
        xsrc/external/mit/xorg-server/dist/hw/xquartz: quartzAudio.c
            quartzAudio.h

Log Message:
merge xorg-server 1.9.5


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 xsrc/external/mit/xorg-server/dist/Xext/sync.c
cvs rdiff -u -r1.4 -r1.5 xsrc/external/mit/xorg-server/dist/dix/getevents.c
cvs rdiff -u -r1.7 -r1.8 xsrc/external/mit/xorg-server/dist/dix/window.c
cvs rdiff -u -r1.3 -r1.4 xsrc/external/mit/xorg-server/dist/exa/exa_accel.c
cvs rdiff -u -r1.2 -r1.3 xsrc/external/mit/xorg-server/dist/glx/glxcmds.c
cvs rdiff -u -r1.3 -r1.4 xsrc/external/mit/xorg-server/dist/glx/glxdri.c
cvs rdiff -u -r1.4 -r1.5 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/modes/xf86Cursors.c
cvs rdiff -u -r1.1.1.2 -r0 \
    xsrc/external/mit/xorg-server/dist/hw/xquartz/quartzAudio.c \
    xsrc/external/mit/xorg-server/dist/hw/xquartz/quartzAudio.h
cvs rdiff -u -r1.3 -r1.4 xsrc/external/mit/xorg-server/dist/os/utils.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/xorg-server/dist/Xext/sync.c
diff -u xsrc/external/mit/xorg-server/dist/Xext/sync.c:1.7 xsrc/external/mit/xorg-server/dist/Xext/sync.c:1.8
--- xsrc/external/mit/xorg-server/dist/Xext/sync.c:1.7	Tue Nov 23 06:37:52 2010
+++ xsrc/external/mit/xorg-server/dist/Xext/sync.c	Sun Jul 24 01:33:35 2011
@@ -67,6 +67,7 @@
 #include "opaque.h"
 #include <X11/extensions/syncproto.h>
 #include "syncsrv.h"
+#include "protocol-versions.h"
 
 #include <stdio.h>
 #if !defined(WIN32)
@@ -959,6 +960,17 @@
 	    {
 		psci->bracket_less = pTrigger->test_value;
 		pnewltval = &psci->bracket_less;
+	    } else if (XSyncValueEqual(pCounter->value, pTrigger->test_value) &&
+		       XSyncValueLessThan(pTrigger->test_value,
+					  psci->bracket_greater))
+	    {
+	        /*
+		 * The value is exactly equal to our threshold.  We want one
+		 * more event in the positive direction to ensure we pick up
+		 * when the value *exceeds* this threshold.
+		 */
+	        psci->bracket_greater = pTrigger->test_value;
+		pnewgtval = &psci->bracket_greater;
 	    }
 	}
         else if (pTrigger->test_type == XSyncPositiveTransition &&
@@ -969,6 +981,17 @@
 	    {
 		psci->bracket_greater = pTrigger->test_value;
 		pnewgtval = &psci->bracket_greater;
+	    } else if (XSyncValueEqual(pCounter->value, pTrigger->test_value) &&
+		       XSyncValueGreaterThan(pTrigger->test_value,
+					     psci->bracket_less))
+	    {
+	        /*
+		 * The value is exactly equal to our threshold.  We want one
+		 * more event in the negative direction to ensure we pick up
+		 * when the value is less than this threshold.
+		 */
+	        psci->bracket_less = pTrigger->test_value;
+		pnewltval = &psci->bracket_less;
 	    }
 	}
     } /* end for each trigger */
@@ -1129,8 +1152,8 @@
     memset(&rep, 0, sizeof(xSyncInitializeReply));
     rep.type = X_Reply;
     rep.sequenceNumber = client->sequence;
-    rep.majorVersion = SYNC_MAJOR_VERSION;
-    rep.minorVersion = SYNC_MINOR_VERSION;
+    rep.majorVersion = SERVER_SYNC_MAJOR_VERSION;
+    rep.minorVersion = SERVER_SYNC_MINOR_VERSION;
     rep.length = 0;
 
     if (client->swapped)
@@ -2300,6 +2323,14 @@
 		break;
 	    }
 	}
+	/* 
+	 * We've been called exactly on the idle time, but we have a
+	 * NegativeTransition trigger which requires a transition from an
+	 * idle time greater than this.  Schedule a wakeup for the next
+	 * millisecond so we won't miss a transition.
+	 */
+	if (XSyncValueEqual (idle, *pIdleTimeValueLess))
+	    AdjustWaitForDelay(wt, 1);
     }
     else if (pIdleTimeValueGreater)
     {

Index: xsrc/external/mit/xorg-server/dist/dix/getevents.c
diff -u xsrc/external/mit/xorg-server/dist/dix/getevents.c:1.4 xsrc/external/mit/xorg-server/dist/dix/getevents.c:1.5
--- xsrc/external/mit/xorg-server/dist/dix/getevents.c:1.4	Tue Nov 23 06:37:53 2010
+++ xsrc/external/mit/xorg-server/dist/dix/getevents.c	Sun Jul 24 01:33:35 2011
@@ -111,12 +111,12 @@
 Bool
 button_is_down(DeviceIntPtr pDev, int button, int type)
 {
-    int ret = 0;
+    Bool ret = FALSE;
 
     if (type & BUTTON_PROCESSED)
-        ret |= !!BitIsOn(pDev->button->down, button);
+        ret = ret || BitIsOn(pDev->button->down, button);
     if (type & BUTTON_POSTED)
-        ret |= !!BitIsOn(pDev->button->postdown, button);
+        ret = ret || BitIsOn(pDev->button->postdown, button);
 
     return ret;
 }
@@ -142,12 +142,12 @@
 Bool
 key_is_down(DeviceIntPtr pDev, int key_code, int type)
 {
-    int ret = 0;
+    Bool ret = FALSE;
 
     if (type & KEY_PROCESSED)
-        ret |= !!BitIsOn(pDev->key->down, key_code);
+        ret = ret || BitIsOn(pDev->key->down, key_code);
     if (type & KEY_POSTED)
-        ret |= !!BitIsOn(pDev->key->postdown, key_code);
+        ret = ret || BitIsOn(pDev->key->postdown, key_code);
 
     return ret;
 }
@@ -210,7 +210,7 @@
     }
 
     memcpy(&event->valuators.data[first_valuator],
-           valuators, num_valuators * sizeof(uint32_t));
+           valuators, num_valuators * sizeof(int32_t));
 
 }
 
@@ -1034,19 +1034,21 @@
 }
 
 static void
-transformAbsolute(DeviceIntPtr dev, int v[MAX_VALUATORS])
+transformAbsolute(DeviceIntPtr dev, int first, int num, int *valuators)
 {
-    struct pixman_f_vector p;
+    struct pixman_f_vector p = { .v = {0.0, 0.0, 1.0} };
 
     /* p' = M * p in homogeneous coordinates */
-    p.v[0] = v[0];
-    p.v[1] = v[1];
-    p.v[2] = 1.0;
+    if (num >= 1 && first == 0)
+        p.v[0] = *(valuators + 0);
+
+    if (first <= 1 && num >= (2 - first))
+        p.v[1] = *(valuators + 1 - first);
 
     pixman_f_transform_point(&dev->transform, &p);
 
-    v[0] = lround(p.v[0]);
-    v[1] = lround(p.v[1]);
+    valuators[0] = lround(p.v[0]);
+    valuators[1] = lround(p.v[1]);
 }
 
 /**
@@ -1124,7 +1126,7 @@
                         scr->height);
         }
 
-        transformAbsolute(pDev, valuators);
+        transformAbsolute(pDev, first_valuator, num_valuators, valuators);
         moveAbsolute(pDev, &x, &y, first_valuator, num_valuators, valuators);
     } else {
         if (flags & POINTER_ACCELERATE) {

Index: xsrc/external/mit/xorg-server/dist/dix/window.c
diff -u xsrc/external/mit/xorg-server/dist/dix/window.c:1.7 xsrc/external/mit/xorg-server/dist/dix/window.c:1.8
--- xsrc/external/mit/xorg-server/dist/dix/window.c:1.7	Tue Nov 23 06:37:53 2010
+++ xsrc/external/mit/xorg-server/dist/dix/window.c	Sun Jul 24 01:33:35 2011
@@ -3660,9 +3660,9 @@
                     &pParentNode, &pParentPrev))
         {
             /* if there is a node in the list, the win has a dev cursor */
-            if (!pParentNode->cursor) /* inherited. loop needs to cont. */
-            {
-            } else if (pParentNode->cursor == pCursor) /* inherit */
+            if (!pParentNode->cursor) /* inherited. */
+                pParent = pParent->parent;
+            else if (pParentNode->cursor == pCursor) /* inherit */
                 return TRUE;
             else  /* different cursor */
                 return FALSE;

Index: xsrc/external/mit/xorg-server/dist/exa/exa_accel.c
diff -u xsrc/external/mit/xorg-server/dist/exa/exa_accel.c:1.3 xsrc/external/mit/xorg-server/dist/exa/exa_accel.c:1.4
--- xsrc/external/mit/xorg-server/dist/exa/exa_accel.c:1.3	Tue Nov 23 06:37:54 2010
+++ xsrc/external/mit/xorg-server/dist/exa/exa_accel.c	Sun Jul 24 01:33:36 2011
@@ -1057,6 +1057,8 @@
 		*(CARD16*)pExaPixmap->sys_ptr = pixel;
 		break;
 	    case 8:
+	    case 4:
+	    case 1:
 		*(CARD8*)pExaPixmap->sys_ptr = pixel;
 	    }
 

Index: xsrc/external/mit/xorg-server/dist/glx/glxcmds.c
diff -u xsrc/external/mit/xorg-server/dist/glx/glxcmds.c:1.2 xsrc/external/mit/xorg-server/dist/glx/glxcmds.c:1.3
--- xsrc/external/mit/xorg-server/dist/glx/glxcmds.c:1.2	Fri Mar 18 09:51:00 2011
+++ xsrc/external/mit/xorg-server/dist/glx/glxcmds.c	Sun Jul 24 01:33:36 2011
@@ -57,7 +57,7 @@
     /*
     ** Check if screen exists.
     */
-    if (screen >= screenInfo.numScreens) {
+    if (screen < 0 || screen >= screenInfo.numScreens) {
 	client->errorValue = screen;
 	*err = BadValue;
 	return FALSE;

Index: xsrc/external/mit/xorg-server/dist/glx/glxdri.c
diff -u xsrc/external/mit/xorg-server/dist/glx/glxdri.c:1.3 xsrc/external/mit/xorg-server/dist/glx/glxdri.c:1.4
--- xsrc/external/mit/xorg-server/dist/glx/glxdri.c:1.3	Tue Nov 23 06:37:54 2010
+++ xsrc/external/mit/xorg-server/dist/glx/glxdri.c	Sun Jul 24 01:33:36 2011
@@ -834,9 +834,7 @@
 
     RegionInit(&region, (BoxPtr) rects, num_rects);
     RegionTranslate(&region, pDraw->x, pDraw->y);
-    DamageRegionAppend(pDraw, &region);
-    /* This is wrong, this needs a seperate function. */
-    DamageRegionProcessPending(pDraw);
+    DamageDamageRegion(pDraw, &region);
     RegionUninit(&region);
 
     __glXleaveServer(GL_FALSE);

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/modes/xf86Cursors.c
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/modes/xf86Cursors.c:1.4 xsrc/external/mit/xorg-server/dist/hw/xfree86/modes/xf86Cursors.c:1.5
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/modes/xf86Cursors.c:1.4	Tue Nov 23 06:38:09 2010
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/modes/xf86Cursors.c	Sun Jul 24 01:33:36 2011
@@ -1,5 +1,6 @@
 /*
  * Copyright © 2007 Keith Packard
+ * Copyright © 2010 Aaron Plattner
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -126,12 +127,33 @@
     *y_src = y_dst;
 }
 
+struct cursor_bit {
+    CARD8 *byte;
+    char bitpos;
+};
+
 /*
  * Convert an x coordinate to a position within the cursor bitmap
  */
-static int
-cursor_bitpos (int flags, int x, Bool mask)
-{
+static struct cursor_bit
+cursor_bitpos (CARD8 *image, xf86CursorInfoPtr cursor_info, int x, int y,
+	       Bool mask)
+{
+    const int flags = cursor_info->Flags;
+    const Bool interleaved =
+	!!(flags & (HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_1 |
+		    HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_8 |
+		    HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_16 |
+		    HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_32 |
+		    HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64));
+    const int width = cursor_info->MaxWidth;
+    const int height = cursor_info->MaxHeight;
+    const int stride = interleaved ? width / 4 : width / 8;
+
+    struct cursor_bit ret;
+
+    image += y * stride;
+
     if (flags & HARDWARE_CURSOR_SWAP_SOURCE_AND_MASK)
 	mask = !mask;
     if (flags & HARDWARE_CURSOR_NIBBLE_SWAPPED)
@@ -149,29 +171,33 @@
 	x = ((x & ~31) << 1) | (mask << 5) | (x & 31);
     else if (flags & HARDWARE_CURSOR_SOURCE_MASK_INTERLEAVE_64)
 	x = ((x & ~63) << 1) | (mask << 6) | (x & 63);
-    return x;
+    else if (mask)
+	image += stride * height;
+
+    ret.byte = image + (x / 8);
+    ret.bitpos = x & 7;
+
+    return ret;
 }
 
 /*
  * Fetch one bit from a cursor bitmap
  */
 static CARD8
-get_bit (CARD8 *image, int stride, int flags, int x, int y, Bool mask)
+get_bit (CARD8 *image, xf86CursorInfoPtr cursor_info, int x, int y, Bool mask)
 {
-    x = cursor_bitpos (flags, x, mask);
-    image += y * stride;
-    return (image[(x >> 3)] >> (x & 7)) & 1;
+    struct cursor_bit bit = cursor_bitpos(image, cursor_info, x, y, mask);
+    return (*bit.byte >> bit.bitpos) & 1;
 }
 
 /*
  * Set one bit in a cursor bitmap
  */
 static void
-set_bit (CARD8 *image, int stride, int flags, int x, int y, Bool mask)
+set_bit (CARD8 *image, xf86CursorInfoPtr cursor_info, int x, int y, Bool mask)
 {
-    x = cursor_bitpos (flags, x, mask);
-    image += y * stride;
-    image[(x >> 3)] |= 1 << (x & 7);
+    struct cursor_bit bit = cursor_bitpos(image, cursor_info, x, y, mask);
+    *bit.byte |= 1 << bit.bitpos;
 }
     
 /*
@@ -186,7 +212,6 @@
     CARD32		*cursor_image = (CARD32 *) xf86_config->cursor_image;
     int			x, y;
     int			xin, yin;
-    int			stride = cursor_info->MaxWidth >> 2;
     int			flags = cursor_info->Flags;
     CARD32		bits;
 
@@ -201,10 +226,10 @@
 				    cursor_info->MaxWidth,
 				    cursor_info->MaxHeight,
 				    x, y, &xin, &yin);
-	    if (get_bit (src, stride, flags, xin, yin, TRUE) ==
+	    if (get_bit (src, cursor_info, xin, yin, TRUE) ==
 		((flags & HARDWARE_CURSOR_INVERT_MASK) == 0))
 	    {
-		if (get_bit (src, stride, flags, xin, yin, FALSE))
+		if (get_bit (src, cursor_info, xin, yin, FALSE))
 		    bits = xf86_config->cursor_fg;
 		else
 		    bits = xf86_config->cursor_bg;
@@ -411,7 +436,6 @@
         int x, y;
     	int xin, yin;
 	int stride = cursor_info->MaxWidth >> 2;
-	int flags = cursor_info->Flags;
 	
 	cursor_image = xf86_config->cursor_image;
 	memset(cursor_image, 0, cursor_info->MaxHeight * stride);
@@ -423,10 +447,10 @@
 					cursor_info->MaxWidth,
 					cursor_info->MaxHeight,
 					x, y, &xin, &yin);
-		if (get_bit(src, stride, flags, xin, yin, FALSE))
-		    set_bit(cursor_image, stride, flags, x, y, FALSE);
-		if (get_bit(src, stride, flags, xin, yin, TRUE))
-		    set_bit(cursor_image, stride, flags, x, y, TRUE);
+		if (get_bit(src, cursor_info, xin, yin, FALSE))
+		    set_bit(cursor_image, cursor_info, x, y, FALSE);
+		if (get_bit(src, cursor_info, xin, yin, TRUE))
+		    set_bit(cursor_image, cursor_info, x, y, TRUE);
 	    }
     }
     crtc->funcs->load_cursor_image (crtc, cursor_image);

Index: xsrc/external/mit/xorg-server/dist/os/utils.c
diff -u xsrc/external/mit/xorg-server/dist/os/utils.c:1.3 xsrc/external/mit/xorg-server/dist/os/utils.c:1.4
--- xsrc/external/mit/xorg-server/dist/os/utils.c:1.3	Tue Nov 23 06:38:14 2010
+++ xsrc/external/mit/xorg-server/dist/os/utils.c	Sun Jul 24 01:33:36 2011
@@ -427,7 +427,21 @@
 
 #ifdef MONOTONIC_CLOCK
     struct timespec tp;
-    if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
+    static clockid_t clockid;
+    if (!clockid) {
+#ifdef CLOCK_MONOTONIC_COARSE
+        if (clock_getres(CLOCK_MONOTONIC_COARSE, &tp) == 0 &&
+            (tp.tv_nsec / 1000) <= 1000 &&
+            clock_gettime(CLOCK_MONOTONIC_COARSE, &tp) == 0)
+            clockid = CLOCK_MONOTONIC_COARSE;
+        else
+#endif
+        if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0)
+            clockid = CLOCK_MONOTONIC;
+        else
+            clockid = ~0L;
+    }
+    if (clockid != ~0L && clock_gettime(clockid, &tp) == 0)
         return (tp.tv_sec * 1000) + (tp.tv_nsec / 1000000L);
 #endif
 

Reply via email to