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(®ion, (BoxPtr) rects, num_rects);
RegionTranslate(®ion, pDraw->x, pDraw->y);
- DamageRegionAppend(pDraw, ®ion);
- /* This is wrong, this needs a seperate function. */
- DamageRegionProcessPending(pDraw);
+ DamageDamageRegion(pDraw, ®ion);
RegionUninit(®ion);
__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