mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-01-29 17:00:36 +01:00
Merge commit 'origin/server-1.6-branch' into xorg-server-1.6-apple
This commit is contained in:
commit
37db9928e7
22 changed files with 235 additions and 770 deletions
|
|
@ -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.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
|
||||
AC_INIT([xorg-server], 1.6.1.902, [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-5-8"
|
||||
RELEASE_DATE="2009-6-29"
|
||||
|
||||
dnl this gets generated by autoheader, and thus contains all the defines. we
|
||||
dnl don't ever actually use it, internally.
|
||||
|
|
|
|||
|
|
@ -216,6 +216,8 @@ AddInputDevice(ClientPtr client, DeviceProc deviceProc, Bool autoStart)
|
|||
|
||||
/* device grab defaults */
|
||||
dev->deviceGrab.grabTime = currentTime;
|
||||
dev->deviceGrab.ActivateGrab = ActivateKeyboardGrab;
|
||||
dev->deviceGrab.DeactivateGrab = DeactivateKeyboardGrab;
|
||||
|
||||
dev->coreEvents = TRUE;
|
||||
|
||||
|
|
|
|||
|
|
@ -219,7 +219,7 @@ turns on auto-repeat.
|
|||
starts the stipple with the classic stipple and cursor visible. The default
|
||||
is to start with a black root window, and to suppress display of the cursor
|
||||
until the first time an application calls XDefineCursor(). For the Xorg
|
||||
server, this also changes the default for the DontZap option to FALSE. For
|
||||
server, this also sets the default for the DontZap option to FALSE. For
|
||||
kdrive servers, this implies -zap.
|
||||
.TP 8
|
||||
.B \-s \fIminutes\fP
|
||||
|
|
|
|||
|
|
@ -427,7 +427,8 @@ exaCopyNtoN (DrawablePtr pSrcDrawable,
|
|||
xfree(rects);
|
||||
|
||||
if (!pGC || !exaGCReadsDestination(pDstDrawable, pGC->planemask,
|
||||
pGC->fillStyle, pGC->alu)) {
|
||||
pGC->fillStyle, pGC->alu,
|
||||
pGC->clientClipType)) {
|
||||
dstregion = REGION_CREATE(pScreen, NullBox, 0);
|
||||
REGION_COPY(pScreen, dstregion, srcregion);
|
||||
REGION_TRANSLATE(pScreen, dstregion, dst_off_x - dx - src_off_x,
|
||||
|
|
@ -698,7 +699,8 @@ exaPolySegment (DrawablePtr pDrawable, GCPtr pGC, int nseg,
|
|||
}
|
||||
|
||||
static Bool exaFillRegionSolid (DrawablePtr pDrawable, RegionPtr pRegion,
|
||||
Pixel pixel, CARD32 planemask, CARD32 alu);
|
||||
Pixel pixel, CARD32 planemask, CARD32 alu,
|
||||
unsigned int clientClipType);
|
||||
|
||||
static void
|
||||
exaPolyFillRect(DrawablePtr pDrawable,
|
||||
|
|
@ -751,10 +753,11 @@ exaPolyFillRect(DrawablePtr pDrawable,
|
|||
if (((pGC->fillStyle == FillSolid || pGC->tileIsPixel) &&
|
||||
exaFillRegionSolid(pDrawable, pReg, pGC->fillStyle == FillSolid ?
|
||||
pGC->fgPixel : pGC->tile.pixel, pGC->planemask,
|
||||
pGC->alu)) ||
|
||||
pGC->alu, pGC->clientClipType)) ||
|
||||
(pGC->fillStyle == FillTiled && !pGC->tileIsPixel &&
|
||||
exaFillRegionTiled(pDrawable, pReg, pGC->tile.pixmap, &pGC->patOrg,
|
||||
pGC->planemask, pGC->alu))) {
|
||||
pGC->planemask, pGC->alu,
|
||||
pGC->clientClipType))) {
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
|
@ -907,11 +910,8 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc)
|
|||
}
|
||||
|
||||
static Bool
|
||||
exaFillRegionSolid (DrawablePtr pDrawable,
|
||||
RegionPtr pRegion,
|
||||
Pixel pixel,
|
||||
CARD32 planemask,
|
||||
CARD32 alu)
|
||||
exaFillRegionSolid (DrawablePtr pDrawable, RegionPtr pRegion, Pixel pixel,
|
||||
CARD32 planemask, CARD32 alu, unsigned int clientClipType)
|
||||
{
|
||||
ExaScreenPriv(pDrawable->pScreen);
|
||||
PixmapPtr pPixmap = exaGetDrawablePixmap (pDrawable);
|
||||
|
|
@ -924,7 +924,8 @@ exaFillRegionSolid (DrawablePtr pDrawable,
|
|||
pixmaps[0].as_src = FALSE;
|
||||
pixmaps[0].pPix = pPixmap;
|
||||
pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillSolid,
|
||||
alu) ? NULL : pRegion;
|
||||
alu, clientClipType)
|
||||
? NULL : pRegion;
|
||||
|
||||
exaGetDrawableDeltas(pDrawable, pPixmap, &xoff, &yoff);
|
||||
REGION_TRANSLATE(pScreen, pRegion, xoff, yoff);
|
||||
|
|
@ -987,12 +988,9 @@ out:
|
|||
* Based on fbFillRegionTiled(), fbTile().
|
||||
*/
|
||||
Bool
|
||||
exaFillRegionTiled (DrawablePtr pDrawable,
|
||||
RegionPtr pRegion,
|
||||
PixmapPtr pTile,
|
||||
DDXPointPtr pPatOrg,
|
||||
CARD32 planemask,
|
||||
CARD32 alu)
|
||||
exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile,
|
||||
DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu,
|
||||
unsigned int clientClipType)
|
||||
{
|
||||
ExaScreenPriv(pDrawable->pScreen);
|
||||
PixmapPtr pPixmap;
|
||||
|
|
@ -1015,13 +1013,14 @@ exaFillRegionTiled (DrawablePtr pDrawable,
|
|||
if (tileWidth == 1 && tileHeight == 1)
|
||||
return exaFillRegionSolid(pDrawable, pRegion,
|
||||
exaGetPixmapFirstPixel (pTile), planemask,
|
||||
alu);
|
||||
alu, clientClipType);
|
||||
|
||||
pixmaps[0].as_dst = TRUE;
|
||||
pixmaps[0].as_src = FALSE;
|
||||
pixmaps[0].pPix = pPixmap = exaGetDrawablePixmap (pDrawable);
|
||||
pixmaps[0].pReg = exaGCReadsDestination(pDrawable, planemask, FillTiled,
|
||||
alu) ? NULL : pRegion;
|
||||
alu, clientClipType)
|
||||
? NULL : pRegion;
|
||||
pixmaps[1].as_dst = FALSE;
|
||||
pixmaps[1].as_src = TRUE;
|
||||
pixmaps[1].pPix = pTile;
|
||||
|
|
|
|||
|
|
@ -356,8 +356,14 @@ exaGlyphCacheHashRemove(ExaGlyphCachePtr cache,
|
|||
* is to use the UploadToScreen() driver hook; this allows us to
|
||||
* pipeline glyph uploads and to avoid creating offscreen pixmaps for
|
||||
* glyphs that we'll never use again.
|
||||
*
|
||||
* If we can't do it with UploadToScreen (because the glyph is offscreen, etc),
|
||||
* we fall back to CompositePicture.
|
||||
*
|
||||
* We need to damage the cache pixmap manually in either case because the damage
|
||||
* layer unwrapped the picture screen before calling exaGlyphs.
|
||||
*/
|
||||
static Bool
|
||||
static void
|
||||
exaGlyphCacheUploadGlyph(ScreenPtr pScreen,
|
||||
ExaGlyphCachePtr cache,
|
||||
int pos,
|
||||
|
|
@ -371,16 +377,16 @@ exaGlyphCacheUploadGlyph(ScreenPtr pScreen,
|
|||
ExaMigrationRec pixmaps[1];
|
||||
|
||||
if (!pExaScr->info->UploadToScreen || pExaScr->swappedOut || pExaPixmap->accel_blocked)
|
||||
return FALSE;
|
||||
goto composite;
|
||||
|
||||
/* If the glyph pixmap is already uploaded, no point in doing
|
||||
* things this way */
|
||||
if (exaPixmapIsOffscreen(pGlyphPixmap))
|
||||
return FALSE;
|
||||
goto composite;
|
||||
|
||||
/* UploadToScreen only works if bpp match */
|
||||
if (pGlyphPixmap->drawable.bitsPerPixel != pCachePixmap->drawable.bitsPerPixel)
|
||||
return FALSE;
|
||||
goto composite;
|
||||
|
||||
/* cache pixmap must be offscreen. */
|
||||
pixmaps[0].as_dst = TRUE;
|
||||
|
|
@ -390,26 +396,37 @@ exaGlyphCacheUploadGlyph(ScreenPtr pScreen,
|
|||
exaDoMigration (pixmaps, 1, TRUE);
|
||||
|
||||
if (!exaPixmapIsOffscreen(pCachePixmap))
|
||||
return FALSE;
|
||||
goto composite;
|
||||
|
||||
/* CACHE_{X,Y} are in pixmap coordinates, no need for cache{X,Y}off */
|
||||
if (!pExaScr->info->UploadToScreen(pCachePixmap,
|
||||
CACHE_X(pos),
|
||||
CACHE_Y(pos),
|
||||
pGlyph->info.width,
|
||||
pGlyph->info.height,
|
||||
(char *)pExaPixmap->sys_ptr,
|
||||
pExaPixmap->sys_pitch))
|
||||
return FALSE;
|
||||
if (pExaScr->info->UploadToScreen(pCachePixmap,
|
||||
CACHE_X(pos),
|
||||
CACHE_Y(pos),
|
||||
pGlyph->info.width,
|
||||
pGlyph->info.height,
|
||||
(char *)pExaPixmap->sys_ptr,
|
||||
pExaPixmap->sys_pitch))
|
||||
goto damage;
|
||||
|
||||
/* This pixmap should never be bound to a window, so no need to offset coordinates. */
|
||||
composite:
|
||||
CompositePicture (PictOpSrc,
|
||||
pGlyphPicture,
|
||||
None,
|
||||
cache->picture,
|
||||
0, 0,
|
||||
0, 0,
|
||||
CACHE_X(pos),
|
||||
CACHE_Y(pos),
|
||||
pGlyph->info.width,
|
||||
pGlyph->info.height);
|
||||
|
||||
damage:
|
||||
/* The cache pixmap isn't a window, so no need to offset coordinates. */
|
||||
exaPixmapDirty (pCachePixmap,
|
||||
CACHE_X(pos),
|
||||
CACHE_Y(pos),
|
||||
CACHE_X(pos) + pGlyph->info.width,
|
||||
CACHE_Y(pos) + pGlyph->info.height);
|
||||
|
||||
return TRUE;
|
||||
CACHE_X(pos) + cache->glyphWidth,
|
||||
CACHE_Y(pos) + cache->glyphHeight);
|
||||
}
|
||||
|
||||
static ExaGlyphCacheResult
|
||||
|
|
@ -478,23 +495,7 @@ exaGlyphCacheBufferGlyph(ScreenPtr pScreen,
|
|||
cache->evictionPosition = rand() % cache->size;
|
||||
}
|
||||
|
||||
/* Now actually upload the glyph into the cache picture; if
|
||||
* we can't do it with UploadToScreen (because the glyph is
|
||||
* offscreen, etc), we fall back to CompositePicture.
|
||||
*/
|
||||
if (!exaGlyphCacheUploadGlyph(pScreen, cache, pos, pGlyph)) {
|
||||
CompositePicture (PictOpSrc,
|
||||
GlyphPicture(pGlyph)[pScreen->myNum],
|
||||
None,
|
||||
cache->picture,
|
||||
0, 0,
|
||||
0, 0,
|
||||
CACHE_X(pos),
|
||||
CACHE_Y(pos),
|
||||
pGlyph->info.width,
|
||||
pGlyph->info.height);
|
||||
}
|
||||
|
||||
exaGlyphCacheUploadGlyph(pScreen, cache, pos, pGlyph);
|
||||
}
|
||||
|
||||
buffer->source = cache->picture;
|
||||
|
|
|
|||
|
|
@ -343,11 +343,12 @@ ExaCheckAddTraps (PicturePtr pPicture,
|
|||
|
||||
static _X_INLINE Bool
|
||||
exaGCReadsDestination(DrawablePtr pDrawable, unsigned long planemask,
|
||||
unsigned int fillStyle, unsigned char alu)
|
||||
unsigned int fillStyle, unsigned char alu,
|
||||
unsigned int clientClipType)
|
||||
{
|
||||
return ((alu != GXcopy && alu != GXclear &&alu != GXset &&
|
||||
return ((alu != GXcopy && alu != GXclear && alu != GXset &&
|
||||
alu != GXcopyInverted) || fillStyle == FillStippled ||
|
||||
!EXA_PM_IS_SOLID(pDrawable, planemask));
|
||||
clientClipType != CT_NONE || !EXA_PM_IS_SOLID(pDrawable, planemask));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -355,7 +356,8 @@ exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
|
|||
|
||||
Bool
|
||||
exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile,
|
||||
DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu);
|
||||
DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu,
|
||||
unsigned int clientClipType);
|
||||
|
||||
void
|
||||
exaGetImage (DrawablePtr pDrawable, int x, int y, int w, int h,
|
||||
|
|
|
|||
|
|
@ -905,7 +905,7 @@ exaComposite(CARD8 op,
|
|||
|
||||
ret = exaFillRegionTiled(pDst->pDrawable, ®ion,
|
||||
(PixmapPtr)pSrc->pDrawable,
|
||||
&patOrg, FB_ALLONES, GXcopy);
|
||||
&patOrg, FB_ALLONES, GXcopy, CT_NONE);
|
||||
|
||||
REGION_UNINIT(pDst->pDrawable->pScreen, ®ion);
|
||||
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ ExaCheckPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth,
|
|||
|
||||
EXA_FALLBACK(("to %p (%c)\n", pDrawable, exaDrawableLocation(pDrawable)));
|
||||
if (exaGCReadsDestination(pDrawable, pGC->planemask, pGC->fillStyle,
|
||||
pGC->alu))
|
||||
pGC->alu, pGC->clientClipType))
|
||||
exaPrepareAccess (pDrawable, EXA_PREPARE_DEST);
|
||||
else
|
||||
exaPrepareAccessReg (pDrawable, EXA_PREPARE_DEST, pExaPixmap->pDamage ?
|
||||
|
|
|
|||
|
|
@ -1142,6 +1142,7 @@ static void
|
|||
determineTextureTarget(XID glxDrawableID, CARD32 *attribs, CARD32 numAttribs)
|
||||
{
|
||||
GLenum target = 0;
|
||||
GLenum format = 0;
|
||||
int i;
|
||||
__GLXdrawable *pGlxDraw;
|
||||
|
||||
|
|
@ -1158,6 +1159,9 @@ determineTextureTarget(XID glxDrawableID, CARD32 *attribs, CARD32 numAttribs)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (attribs[2 * i] == GLX_TEXTURE_FORMAT_EXT)
|
||||
format = attribs[2 * i + 1];
|
||||
}
|
||||
|
||||
if (!target) {
|
||||
|
|
@ -1170,6 +1174,7 @@ determineTextureTarget(XID glxDrawableID, CARD32 *attribs, CARD32 numAttribs)
|
|||
}
|
||||
|
||||
pGlxDraw->target = target;
|
||||
pGlxDraw->format = format;
|
||||
}
|
||||
|
||||
int __glXDisp_CreateGLXPixmap(__GLXclientState *cl, GLbyte *pc)
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ struct __GLXdrawable {
|
|||
__GLXconfig *config;
|
||||
|
||||
GLenum target;
|
||||
GLenum format;
|
||||
|
||||
/*
|
||||
** Event mask
|
||||
|
|
|
|||
|
|
@ -222,9 +222,19 @@ __glXDRIbindTexImage(__GLXcontext *baseContext,
|
|||
if (texBuffer == NULL)
|
||||
return Success;
|
||||
|
||||
texBuffer->setTexBuffer(context->driContext,
|
||||
glxPixmap->target,
|
||||
drawable->driDrawable);
|
||||
#if __DRI_TEX_BUFFER_VERSION >= 2
|
||||
if (texBuffer->base.version >= 2 && texBuffer->setTexBuffer2 != NULL) {
|
||||
(*texBuffer->setTexBuffer2)(context->driContext,
|
||||
glxPixmap->target,
|
||||
glxPixmap->format,
|
||||
drawable->driDrawable);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
texBuffer->setTexBuffer(context->driContext,
|
||||
glxPixmap->target,
|
||||
drawable->driDrawable);
|
||||
}
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1021,6 +1021,8 @@ KdAddKeyboard (KdKeyboardInfo *ki)
|
|||
return !Success;
|
||||
}
|
||||
|
||||
ki->dixdev->deviceGrab.ActivateGrab = ActivateKeyboardGrab;
|
||||
ki->dixdev->deviceGrab.DeactivateGrab = DeactivateKeyboardGrab;
|
||||
RegisterOtherDevice(ki->dixdev);
|
||||
|
||||
#ifdef DEBUG
|
||||
|
|
@ -1090,6 +1092,8 @@ KdAddPointer (KdPointerInfo *pi)
|
|||
return BadDevice;
|
||||
}
|
||||
|
||||
pi->dixdev->deviceGrab.ActivateGrab = ActivatePointerGrab;
|
||||
pi->dixdev->deviceGrab.DeactivateGrab = DeactivatePointerGrab;
|
||||
RegisterOtherDevice(pi->dixdev);
|
||||
|
||||
for (prev = &kdPointers; *prev; prev = &(*prev)->next);
|
||||
|
|
|
|||
|
|
@ -742,7 +742,7 @@ static OptionInfoRec FlagOptions[] = {
|
|||
{ FLAG_DONTVTSWITCH, "DontVTSwitch", OPTV_BOOLEAN,
|
||||
{0}, FALSE },
|
||||
{ FLAG_DONTZAP, "DontZap", OPTV_BOOLEAN,
|
||||
{0}, TRUE },
|
||||
{0}, FALSE },
|
||||
{ FLAG_DONTZOOM, "DontZoom", OPTV_BOOLEAN,
|
||||
{0}, FALSE },
|
||||
{ FLAG_DISABLEVIDMODE, "DisableVidModeExtension", OPTV_BOOLEAN,
|
||||
|
|
@ -854,8 +854,7 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts)
|
|||
|
||||
xf86GetOptValBool(FlagOptions, FLAG_NOTRAPSIGNALS, &xf86Info.notrapSignals);
|
||||
xf86GetOptValBool(FlagOptions, FLAG_DONTVTSWITCH, &xf86Info.dontVTSwitch);
|
||||
if (!xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap))
|
||||
xf86Info.dontZap = !party_like_its_1989;
|
||||
xf86GetOptValBool(FlagOptions, FLAG_DONTZAP, &xf86Info.dontZap);
|
||||
xf86GetOptValBool(FlagOptions, FLAG_DONTZOOM, &xf86Info.dontZoom);
|
||||
|
||||
xf86GetOptValBool(FlagOptions, FLAG_IGNORE_ABI, &xf86Info.ignoreABI);
|
||||
|
|
|
|||
|
|
@ -230,7 +230,7 @@ print_established_timings(int scrnIndex, struct established_timings *t)
|
|||
unsigned char c;
|
||||
|
||||
if (t->t1 || t->t2 || t->t_manu)
|
||||
xf86DrvMsg(scrnIndex,X_INFO,"Supported VESA Video Modes:\n");
|
||||
xf86DrvMsg(scrnIndex,X_INFO,"Supported established timings:\n");
|
||||
c=t->t1;
|
||||
if (c&0x80) xf86DrvMsg(scrnIndex,X_INFO,"720x400@70Hz\n");
|
||||
if (c&0x40) xf86DrvMsg(scrnIndex,X_INFO,"720x400@88Hz\n");
|
||||
|
|
@ -262,7 +262,7 @@ print_std_timings(int scrnIndex, struct std_timings *t)
|
|||
for (i=0;i<STD_TIMINGS;i++) {
|
||||
if (t[i].hsize > 256) { /* sanity check */
|
||||
if (!done) {
|
||||
xf86DrvMsg(scrnIndex,X_INFO,"Supported Future Video Modes:\n");
|
||||
xf86DrvMsg(scrnIndex,X_INFO,"Supported standard timings:\n");
|
||||
done = 1;
|
||||
}
|
||||
xf86DrvMsg(scrnIndex,X_INFO,
|
||||
|
|
@ -295,7 +295,7 @@ print_detailed_timings(int scrnIndex, struct detailed_timings *t)
|
|||
{
|
||||
|
||||
if (t->clock > 15000000) { /* sanity check */
|
||||
xf86DrvMsg(scrnIndex,X_INFO,"Supported additional Video Mode:\n");
|
||||
xf86DrvMsg(scrnIndex,X_INFO,"Supported detailed timing:\n");
|
||||
xf86DrvMsg(scrnIndex,X_INFO,"clock: %.1f MHz ",t->clock/1000000.0);
|
||||
xf86ErrorF("Image Size: %i x %i mm\n",t->h_size,t->v_size);
|
||||
xf86DrvMsg(scrnIndex,X_INFO,
|
||||
|
|
|
|||
|
|
@ -464,12 +464,11 @@ Default: off.
|
|||
.TP 7
|
||||
.BI "Option \*qDontZap\*q \*q" boolean \*q
|
||||
This disallows the use of the
|
||||
.B Ctrl+Alt+Backspace
|
||||
sequence.
|
||||
That sequence is normally used to terminate the __xservername__ server.
|
||||
When this option is enabled (as per default), that key sequence has no
|
||||
special meaning.
|
||||
Default: on.
|
||||
.B Terminate_Server
|
||||
XKB action (usually on Ctrl+Alt+Backspace, depending on XKB options).
|
||||
This action is normally used to terminate the __xservername__ server.
|
||||
When this option is enabled, the action has no effect.
|
||||
Default: off.
|
||||
.TP 7
|
||||
.BI "Option \*qDontZoom\*q \*q" boolean \*q
|
||||
This disallows the use of the
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ exaDDXDriverInit(ScreenPtr pScreen)
|
|||
pExaScr->optimize_migration =
|
||||
xf86ReturnOptValBool(pScreenPriv->options,
|
||||
EXAOPT_OPTIMIZE_MIGRATION,
|
||||
TRUE);
|
||||
FALSE);
|
||||
}
|
||||
|
||||
if (xf86ReturnOptValBool(pScreenPriv->options,
|
||||
|
|
|
|||
|
|
@ -302,9 +302,9 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs,
|
|||
|
||||
|
||||
if (pCurs == NullCursor) { /* means we're supposed to remove the cursor */
|
||||
if (ScreenPriv->SWCursor || pDev != inputInfo.pointer)
|
||||
(*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor,
|
||||
x, y);
|
||||
if (ScreenPriv->SWCursor ||
|
||||
!(pDev == inputInfo.pointer || !pDev->isMaster && pDev->u.master == inputInfo.pointer))
|
||||
(*ScreenPriv->spriteFuncs->SetCursor)(pDev, pScreen, NullCursor, x, y);
|
||||
else if (ScreenPriv->isUp) {
|
||||
xf86SetCursor(pScreen, NullCursor, x, y);
|
||||
ScreenPriv->isUp = FALSE;
|
||||
|
|
|
|||
|
|
@ -117,11 +117,11 @@ SRRScreenChangeNotifyEvent(xRRScreenChangeNotifyEvent *from,
|
|||
cpswapl(from->root, to->root);
|
||||
cpswapl(from->window, to->window);
|
||||
cpswaps(from->sizeID, to->sizeID);
|
||||
cpswaps(from->subpixelOrder, to->subpixelOrder);
|
||||
cpswaps(from->widthInPixels, to->widthInPixels);
|
||||
cpswaps(from->heightInPixels, to->heightInPixels);
|
||||
cpswaps(from->widthInMillimeters, to->widthInMillimeters);
|
||||
cpswaps(from->heightInMillimeters, to->heightInMillimeters);
|
||||
cpswaps(from->subpixelOrder, to->subpixelOrder);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -135,8 +135,8 @@ SRRCrtcChangeNotifyEvent(xRRCrtcChangeNotifyEvent *from,
|
|||
cpswapl(from->window, to->window);
|
||||
cpswapl(from->crtc, to->crtc);
|
||||
cpswapl(from->mode, to->mode);
|
||||
cpswapl(from->window, to->window);
|
||||
cpswaps(from->rotation, to->rotation);
|
||||
/* pad1 */
|
||||
cpswaps(from->x, to->x);
|
||||
cpswaps(from->y, to->y);
|
||||
cpswaps(from->width, to->width);
|
||||
|
|
@ -157,6 +157,8 @@ SRROutputChangeNotifyEvent(xRROutputChangeNotifyEvent *from,
|
|||
cpswapl(from->crtc, to->crtc);
|
||||
cpswapl(from->mode, to->mode);
|
||||
cpswaps(from->rotation, to->rotation);
|
||||
to->connection = from->connection;
|
||||
to->subpixelOrder = from->subpixelOrder;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -170,6 +172,11 @@ SRROutputPropertyNotifyEvent(xRROutputPropertyNotifyEvent *from,
|
|||
cpswapl(from->output, to->output);
|
||||
cpswapl(from->atom, to->atom);
|
||||
cpswapl(from->timestamp, to->timestamp);
|
||||
to->state = from->state;
|
||||
/* pad1 */
|
||||
/* pad2 */
|
||||
/* pad3 */
|
||||
/* pad4 */
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -967,6 +967,7 @@ ProcRRSetCrtcConfig (ClientPtr client)
|
|||
goto sendReply;
|
||||
}
|
||||
rep.status = RRSetConfigSuccess;
|
||||
pScrPriv->lastSetTime = time;
|
||||
|
||||
sendReply:
|
||||
if (outputs)
|
||||
|
|
@ -976,7 +977,7 @@ sendReply:
|
|||
/* rep.status has already been filled in */
|
||||
rep.length = 0;
|
||||
rep.sequenceNumber = client->sequence;
|
||||
rep.newTimestamp = pScrPriv->lastConfigTime.milliseconds;
|
||||
rep.newTimestamp = pScrPriv->lastSetTime.milliseconds;
|
||||
|
||||
if (client->swapped)
|
||||
{
|
||||
|
|
@ -1126,6 +1127,8 @@ ProcRRSetPanning (ClientPtr client)
|
|||
if (! pScrPriv->rrSetPanning (pScreen, crtc, &total, &tracking, border))
|
||||
return BadMatch;
|
||||
|
||||
pScrPriv->lastSetTime = time;
|
||||
|
||||
rep.status = RRSetConfigSuccess;
|
||||
|
||||
sendReply:
|
||||
|
|
|
|||
|
|
@ -945,8 +945,10 @@ ProcRRSetScreenConfig (ClientPtr client)
|
|||
|
||||
if (!RRCrtcSet (crtc, mode, 0, 0, stuff->rotation, 1, &output))
|
||||
rep.status = RRSetConfigFailed;
|
||||
else
|
||||
else {
|
||||
pScrPriv->lastSetTime = time;
|
||||
rep.status = RRSetConfigSuccess;
|
||||
}
|
||||
|
||||
/*
|
||||
* XXX Configure other crtcs to mirror as much as possible
|
||||
|
|
|
|||
|
|
@ -1311,7 +1311,7 @@ XkbSizeVirtualModMap(XkbDescPtr xkb,xkbGetMapReply *rep)
|
|||
rep->totalVModMapKeys= 0;
|
||||
return 0;
|
||||
}
|
||||
for (nRtrn=i=0;i<rep->nVModMapKeys-1;i++) {
|
||||
for (nRtrn=i=0;i<rep->nVModMapKeys;i++) {
|
||||
if (xkb->server->vmodmap[i+rep->firstVModMapKey]!=0)
|
||||
nRtrn++;
|
||||
}
|
||||
|
|
@ -1330,7 +1330,7 @@ unsigned short * pMap;
|
|||
|
||||
wire= (xkbVModMapWireDesc *)buf;
|
||||
pMap= &xkb->server->vmodmap[rep->firstVModMapKey];
|
||||
for (i=0;i<rep->nVModMapKeys-1;i++,pMap++) {
|
||||
for (i=0;i<rep->nVModMapKeys;i++,pMap++) {
|
||||
if (*pMap!=0) {
|
||||
wire->key= i+rep->firstVModMapKey;
|
||||
wire->vmods= *pMap;
|
||||
|
|
@ -5673,7 +5673,7 @@ ProcXkbGetKbdByName(ClientPtr client)
|
|||
mrep.present = 0;
|
||||
mrep.totalSyms = mrep.totalActs =
|
||||
mrep.totalKeyBehaviors= mrep.totalKeyExplicit=
|
||||
mrep.totalModMapKeys= 0;
|
||||
mrep.totalModMapKeys= mrep.totalVModMapKeys= 0;
|
||||
if (rep.reported&(XkbGBN_TypesMask|XkbGBN_ClientSymbolsMask)) {
|
||||
mrep.present|= XkbKeyTypesMask;
|
||||
mrep.firstType = 0;
|
||||
|
|
@ -5699,6 +5699,8 @@ ProcXkbGetKbdByName(ClientPtr client)
|
|||
mrep.firstKeyExplicit = new->min_key_code;
|
||||
mrep.nKeyActs = mrep.nKeyBehaviors =
|
||||
mrep.nKeyExplicit = XkbNumKeys(new);
|
||||
mrep.firstVModMapKey= new->min_key_code;
|
||||
mrep.nVModMapKeys= XkbNumKeys(new);
|
||||
}
|
||||
else {
|
||||
mrep.virtualMods= 0;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue