Merge commit 'origin/server-1.6-branch' into xorg-server-1.6-apple

This commit is contained in:
Jeremy Huddleston 2009-05-27 10:08:36 -07:00
commit 45128ae020
23 changed files with 154 additions and 75 deletions

View file

@ -1349,15 +1349,6 @@ ProcSELinuxSetCreateContext(ClientPtr client, unsigned offset)
goto out;
privPtr = &serverClient->devPrivates;
}
else if (offset == USE_SEL) {
/* Selection use context currently requires no selections owned */
Selection *pSel;
for (pSel = CurrentSelections; pSel; pSel = pSel->next)
if (pSel->client == client) {
rc = BadMatch;
goto out;
}
}
ptr = dixLookupPrivate(privPtr, subjectKey);
pSid = (security_id_t *)(ptr + offset);

View file

@ -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

View file

@ -602,13 +602,6 @@ ProcXListDeviceProperties (ClientPtr client)
rep.length = (numProps * sizeof(Atom)) >> 2;
rep.sequenceNumber = client->sequence;
rep.nAtoms = numProps;
if (client->swapped)
{
int n;
swaps (&rep.sequenceNumber, n);
swapl (&rep.length, n);
swaps (&rep.nAtoms, n);
}
temppAtoms = pAtoms;
for (prop = dev->properties.properties; prop; prop = prop->next)
*temppAtoms++ = prop->propertyName;
@ -650,7 +643,7 @@ ProcXChangeDeviceProperty (ClientPtr client)
return BadValue;
}
len = stuff->nUnits;
if (len > ((0xffffffff - sizeof(xChangePropertyReq)) >> 2))
if (len > ((0xffffffff - sizeof(xChangeDevicePropertyReq)) >> 2))
return BadLength;
sizeInBytes = format>>3;
totalSize = len * sizeInBytes;

View file

@ -26,12 +26,12 @@ dnl
dnl Process this file with autoconf to create configure.
AC_PREREQ(2.57)
AC_INIT([xorg-server], 1.6.1, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
AC_INIT([xorg-server], 1.6.1.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
AC_CONFIG_SRCDIR([Makefile.am])
AM_INIT_AUTOMAKE([dist-bzip2 foreign])
AM_MAINTAINER_MODE
RELEASE_DATE="2009-4-14"
RELEASE_DATE="2009-5-8"
dnl this gets generated by autoheader, and thus contains all the defines. we
dnl don't ever actually use it, internally.

View file

@ -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 */
@ -4203,10 +4220,10 @@ CoreFocusEvent(DeviceIntPtr dev, int type, int mode, int detail, WindowPtr pWin)
{
xKeymapEvent ke;
ClientPtr client = clients[CLIENT_ID(pWin->drawable.id)];
if (XaceHook(XACE_DEVICE_ACCESS, client, dev, FALSE))
memmove((char *)&ke.map[0], (char *)&dev->key->down[1], 31);
else
if (XaceHook(XACE_DEVICE_ACCESS, client, dev, DixReadAccess))
bzero((char *)&ke.map[0], 31);
else
memmove((char *)&ke.map[0], (char *)&dev->key->down[1], 31);
ke.type = KeymapNotify;
(void)DeliverEventsToWindow(dev, pWin, (xEvent *)&ke, 1,

View file

@ -820,11 +820,15 @@ GetKeyboardValuatorEvents(EventList *events, DeviceIntPtr pDev, int type,
if (noXkbExtension)
#endif
{
numEvents += GetKeyboardValuatorEvents(events, pDev,
KeyRelease, key_code,
first_valuator, num_valuators,
valuators);
events += numEvents;
int numReleaseEvents;
numReleaseEvents = GetKeyboardValuatorEvents(events, pDev,
KeyRelease, key_code,
first_valuator,
num_valuators,
valuators);
numEvents += numReleaseEvents;
events += numReleaseEvents;
}
}

View file

@ -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
@ -937,6 +944,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 +964,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

View file

@ -117,10 +117,6 @@ sets key-click volume (allowable range: 0-100).
sets the visual class for the root window of color screens.
The class numbers are as specified in the X protocol.
Not obeyed by all servers.
.TP 8
.B \-co \fIfilename\fP
sets name of RGB color database. The default is
.IR __projectroot__/share/X11/rgb .
.ig
.TP 8
.B \-config \fIfilename\fP
@ -564,9 +560,6 @@ Bitmap font directories
.IR __projectroot__/lib/X11/fonts/TTF , __projectroot__/lib/X11/fonts/Type1
Outline font directories
.TP 30
.I __projectroot__/share/X11/rgb.txt
Color database
.TP 30
.I /tmp/.X11-unix/X\fBn\fP
Unix domain socket for display number \fBn\fP
.TP 30

View file

@ -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);
}

View file

@ -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 */

View file

@ -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);
}

View file

@ -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);
}

View file

@ -601,7 +601,9 @@ configFiles(XF86ConfFilesPtr fileconf)
defaultFontPath = Xprintf("%s%s%s",
fileconf->file_fontpath,
*temp_path ? "," : "", temp_path);
must_copy = FALSE;
if (defaultFontPath != NULL) {
must_copy = FALSE;
}
}
else
defaultFontPath = fileconf->file_fontpath;
@ -617,7 +619,14 @@ configFiles(XF86ConfFilesPtr fileconf)
!((start == temp_path || start[-1] == ',') && (!*end || *end == ','))) {
defaultFontPath = Xprintf("%s%sbuilt-ins",
temp_path, *temp_path ? "," : "");
must_copy = FALSE;
if (must_copy == TRUE) {
if (defaultFontPath != NULL) {
must_copy = FALSE;
}
} else {
/* already made a copy of the font path */
xfree(temp_path);
}
}
/* xf86ValidateFontPath modifies its argument, but returns a copy of it. */
temp_path = must_copy ? XNFstrdup(defaultFontPath) : defaultFontPath;

View file

@ -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)

View file

@ -1543,6 +1543,7 @@ ProcXF86VidModeGetGammaRamp(ClientPtr client)
{
CARD16 *ramp = NULL;
int n, length, i;
size_t ramplen;
xXF86VidModeGetGammaRampReply rep;
REQUEST(xXF86VidModeGetGammaRampReq);
@ -1557,7 +1558,8 @@ ProcXF86VidModeGetGammaRamp(ClientPtr client)
length = (stuff->size + 1) & ~1;
if(stuff->size) {
if(!(ramp = xalloc(length * 3 * sizeof(CARD16))))
ramplen = length * 3 * sizeof(CARD16);
if (!(ramp = xalloc(ramplen)))
return BadAlloc;
if (!VidModeGetGammaRamp(stuff->screen, stuff->size,
@ -1575,13 +1577,12 @@ ProcXF86VidModeGetGammaRamp(ClientPtr client)
swaps(&rep.sequenceNumber, n);
swapl(&rep.length, n);
swaps(&rep.size, n);
for(i = 0; i < length * 3; i++)
swaps(&ramp[i],n);
SwapShorts(ramp, length * 3);
}
WriteToClient(client, sizeof(xXF86VidModeGetGammaRampReply), (char *)&rep);
if(stuff->size) {
WriteToClient(client, rep.length << 2, (char*)ramp);
WriteToClient(client, ramplen, (char*)ramp);
xfree(ramp);
}
@ -2062,7 +2063,6 @@ SProcXF86VidModeGetGamma(ClientPtr client)
static int
SProcXF86VidModeSetGammaRamp(ClientPtr client)
{
CARD16 *ramp;
int length, n;
REQUEST(xXF86VidModeSetGammaRampReq);
swaps(&stuff->length, n);
@ -2071,11 +2071,7 @@ SProcXF86VidModeSetGammaRamp(ClientPtr client)
swaps(&stuff->screen, n);
length = ((stuff->size + 1) & ~1) * 6;
REQUEST_FIXED_SIZE(xXF86VidModeSetGammaRampReq, length);
ramp = (CARD16*)&stuff[1];
while(length--) {
swaps(ramp, n);
ramp++;
}
SwapRestS(stuff);
return ProcXF86VidModeSetGammaRamp(client);
}

View file

@ -542,9 +542,6 @@ Libraries.
.B __projectroot__/lib/X11/fonts/\(**
Fonts.
.TP 30
.B __projectroot__/share/X11/rgb.txt
Color names to RGB mapping.
.TP 30
.B __projectroot__/share/X11/XErrorDB
Client error message database.
.TP 30

View file

@ -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);

View file

@ -867,7 +867,8 @@ doLoadModule(const char *module, const char *path, const char **subdirlist,
if (!strcmp (m, *cim))
{
xf86MsgVerb(X_INFO, 3, "Module \"%s\" already built-in\n", m);
return (ModuleDescPtr) 1;
ret = (ModuleDescPtr) 1;
goto LoadModule_exit;
}
if (!name) {

View file

@ -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;

View file

@ -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;
}
@ -165,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;
}

View file

@ -752,8 +752,8 @@ _X_EXPORT Bool
xf86RandR12CreateScreenResources (ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);
XF86RandRInfoPtr randrp = XF86RANDRINFO(pScreen);
xf86CrtcConfigPtr config;
XF86RandRInfoPtr randrp;
int c;
int width, height;
int mmWidth, mmHeight;
@ -763,6 +763,8 @@ xf86RandR12CreateScreenResources (ScreenPtr pScreen)
return TRUE;
#endif
config = XF86_CRTC_CONFIG_PTR(pScrn);
randrp = XF86RANDRINFO(pScreen);
/*
* Compute size of screen
*/

View file

@ -312,7 +312,7 @@ _X_EXPORT void
LogVMessageVerb(MessageType type, int verb, const char *format, va_list args)
{
const char *s = X_UNKNOWN_STRING;
char *tmpBuf = NULL;
char tmpBuf[1024];
/* Ignore verbosity for X_ERROR */
if (logVerbosity >= verb || logFileVerbosity >= verb || type == X_ERROR) {
@ -354,21 +354,11 @@ LogVMessageVerb(MessageType type, int verb, const char *format, va_list args)
break;
}
/*
* Prefix the format string with the message type. We do it this way
* so that LogVWrite() is only called once per message.
*/
if (s) {
tmpBuf = malloc(strlen(format) + strlen(s) + 1 + 1);
/* Silently return if malloc fails here. */
if (!tmpBuf)
return;
sprintf(tmpBuf, "%s ", s);
strcat(tmpBuf, format);
LogVWrite(verb, tmpBuf, args);
free(tmpBuf);
} else
LogVWrite(verb, format, args);
/* if s is not NULL we need a space before format */
snprintf(tmpBuf, sizeof(tmpBuf), "%s%s%s", s ? s : "",
s ? " " : "",
format);
LogVWrite(verb, tmpBuf, args);
}
}

View file

@ -3438,6 +3438,7 @@ ProcXkbSetNamedIndicator(ClientPtr client)
for (other = inputInfo.devices; other; other = other->next)
{
if ((other != dev) && !other->isMaster && (other->u.master == dev) &&
(other->kbdfeed || other->leds) &&
(XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success))
{
rc = _XkbCreateIndicatorMap(other, stuff->indicator,
@ -3461,6 +3462,7 @@ ProcXkbSetNamedIndicator(ClientPtr client)
for (other = inputInfo.devices; other; other = other->next)
{
if ((other != dev) && !other->isMaster && (other->u.master == dev) &&
(other->kbdfeed || other->leds) &&
(XaceHook(XACE_DEVICE_ACCESS, client, other, DixSetAttrAccess) == Success))
{
_XkbSetNamedIndicator(client, other, stuff);