Merge branch 'master' of ssh+git://idr@git.freedesktop.org/git/xorg/xserver into pci-rework
This commit is contained in:
commit
c4fe1bcce1
|
@ -448,6 +448,9 @@ AC_ARG_WITH(os-name, AS_HELP_STRING([--with-os-name=OSNAME], [Name of OS
|
|||
AC_ARG_WITH(os-vendor, AS_HELP_STRING([--with-os-vendor=OSVENDOR], [Name of OS vendor]),
|
||||
[ OSVENDOR="$withval" ],
|
||||
[ OSVENDOR="" ])
|
||||
AC_ARG_WITH(builderstring, AS_HELP_STRING([--with-builderstring=BUILDERSTRING], [Additional builder string]),
|
||||
[ BUILDERSTRING="$withval" ]
|
||||
[ ])
|
||||
AC_ARG_WITH(mesa-source, AS_HELP_STRING([--with-mesa-source=MESA_SOURCE], [Path to Mesa source tree]),
|
||||
[ MESA_SOURCE="$withval" ],
|
||||
[ MESA_SOURCE="" ])
|
||||
|
@ -934,6 +937,8 @@ AC_DEFINE_UNQUOTED(XORG_MAN_VERSION, ["$VENDOR_MAN_VERSION"], [Vendor man versio
|
|||
AC_DEFINE_UNQUOTED(BUILDERADDR, ["$BUILDERADDR"], [Builder address])
|
||||
AC_DEFINE_UNQUOTED(OSNAME, ["$OSNAME"], [Operating System Name])
|
||||
AC_DEFINE_UNQUOTED(OSVENDOR, ["$OSVENDOR"], [Operating System Vendor])
|
||||
AC_DEFINE_UNQUOTED(BUILDERSTRING, ["$BUILDERSTRING"], [Builder string])
|
||||
|
||||
AC_SUBST([VENDOR_STRING])
|
||||
AC_SUBST([VENDOR_STRING_SHORT])
|
||||
AC_SUBST([VENDOR_RELEASE])
|
||||
|
|
|
@ -489,6 +489,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
|||
Bool sendValuators = (type == MotionNotify || flags & POINTER_ABSOLUTE);
|
||||
DeviceIntPtr cp = inputInfo.pointer;
|
||||
int x = 0, y = 0;
|
||||
Bool coreOnly = (pDev == inputInfo.pointer);
|
||||
|
||||
/* Sanity checks. */
|
||||
if (type != MotionNotify && type != ButtonPress && type != ButtonRelease)
|
||||
|
@ -497,7 +498,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
|||
if ((type == ButtonPress || type == ButtonRelease) && !pDev->button)
|
||||
return 0;
|
||||
|
||||
if (pDev->coreEvents)
|
||||
if (!coreOnly && pDev->coreEvents)
|
||||
num_events = 2;
|
||||
else
|
||||
num_events = 1;
|
||||
|
@ -507,7 +508,7 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
|||
}
|
||||
|
||||
/* Do we need to send a DeviceValuator event? */
|
||||
if (sendValuators) {
|
||||
if (!coreOnly && sendValuators) {
|
||||
if ((((num_valuators - 1) / 6) + 1) > MAX_VALUATOR_EVENTS)
|
||||
num_valuators = MAX_VALUATOR_EVENTS * 6;
|
||||
num_events += ((num_valuators - 1) / 6) + 1;
|
||||
|
@ -521,10 +522,6 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
|||
|
||||
ms = GetTimeInMillis();
|
||||
|
||||
kbp = (deviceKeyButtonPointer *) events;
|
||||
kbp->time = ms;
|
||||
kbp->deviceid = pDev->id;
|
||||
|
||||
/* Set x and y based on whether this is absolute or relative, and
|
||||
* accelerate if we need to. */
|
||||
if (flags & POINTER_ABSOLUTE) {
|
||||
|
@ -602,29 +599,37 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
|||
pDev->valuator->lastx = x;
|
||||
pDev->valuator->lasty = y;
|
||||
|
||||
if (type == MotionNotify) {
|
||||
kbp->type = DeviceMotionNotify;
|
||||
}
|
||||
else {
|
||||
if (type == ButtonPress)
|
||||
kbp->type = DeviceButtonPress;
|
||||
else if (type == ButtonRelease)
|
||||
kbp->type = DeviceButtonRelease;
|
||||
kbp->detail = pDev->button->map[buttons];
|
||||
if (!coreOnly)
|
||||
{
|
||||
kbp = (deviceKeyButtonPointer *) events;
|
||||
kbp->time = ms;
|
||||
kbp->deviceid = pDev->id;
|
||||
|
||||
if (type == MotionNotify) {
|
||||
kbp->type = DeviceMotionNotify;
|
||||
}
|
||||
else {
|
||||
if (type == ButtonPress)
|
||||
kbp->type = DeviceButtonPress;
|
||||
else if (type == ButtonRelease)
|
||||
kbp->type = DeviceButtonRelease;
|
||||
kbp->detail = pDev->button->map[buttons];
|
||||
}
|
||||
|
||||
kbp->root_x = x;
|
||||
kbp->root_y = y;
|
||||
|
||||
events++;
|
||||
if (sendValuators) {
|
||||
kbp->deviceid |= MORE_EVENTS;
|
||||
clipValuators(pDev, first_valuator, num_valuators, valuators);
|
||||
events = getValuatorEvents(events, pDev, first_valuator,
|
||||
num_valuators, valuators);
|
||||
}
|
||||
}
|
||||
|
||||
kbp->root_x = x;
|
||||
kbp->root_y = y;
|
||||
|
||||
events++;
|
||||
if (sendValuators) {
|
||||
kbp->deviceid |= MORE_EVENTS;
|
||||
clipValuators(pDev, first_valuator, num_valuators, valuators);
|
||||
events = getValuatorEvents(events, pDev, first_valuator,
|
||||
num_valuators, valuators);
|
||||
}
|
||||
|
||||
if (pDev->coreEvents) {
|
||||
/* for some reason inputInfo.pointer does not have coreEvents set */
|
||||
if (coreOnly || pDev->coreEvents) {
|
||||
events->u.u.type = type;
|
||||
events->u.keyButtonPointer.time = ms;
|
||||
events->u.keyButtonPointer.rootX = x;
|
||||
|
|
|
@ -648,6 +648,14 @@ exaPolyFillRect(DrawablePtr pDrawable,
|
|||
{
|
||||
exaDoMigration (pixmaps, 1, FALSE);
|
||||
ExaCheckPolyFillRect (pDrawable, pGC, nrect, prect);
|
||||
while (nrect-- >= 0) {
|
||||
exaDrawableDirty(pDrawable,
|
||||
pDrawable->x + prect->x,
|
||||
pDrawable->y + prect->y,
|
||||
pDrawable->x + prect->x + prect->width,
|
||||
pDrawable->y + prect->y + prect->height);
|
||||
prect++;
|
||||
}
|
||||
return;
|
||||
} else {
|
||||
exaDoMigration (pixmaps, 1, TRUE);
|
||||
|
|
|
@ -572,9 +572,7 @@ exaComposite(CARD8 op,
|
|||
if (pExaScr->swappedOut ||
|
||||
pSrc->pDrawable == NULL || (pMask != NULL && pMask->pDrawable == NULL))
|
||||
{
|
||||
ExaCheckComposite (op, pSrc, pMask, pDst, xSrc, ySrc,
|
||||
xMask, yMask, xDst, yDst, width, height);
|
||||
return;
|
||||
goto fallback;
|
||||
}
|
||||
|
||||
/* Remove repeat in source if useless */
|
||||
|
@ -683,12 +681,18 @@ exaComposite(CARD8 op,
|
|||
}
|
||||
}
|
||||
|
||||
fallback:
|
||||
#if DEBUG_TRACE_FALL
|
||||
exaPrintCompositeFallback (op, pSrc, pMask, pDst);
|
||||
#endif
|
||||
|
||||
ExaCheckComposite (op, pSrc, pMask, pDst, xSrc, ySrc,
|
||||
xMask, yMask, xDst, yDst, width, height);
|
||||
exaDrawableDirty(pDst->pDrawable,
|
||||
pDst->pDrawable->x + xDst,
|
||||
pDst->pDrawable->y + yDst,
|
||||
pDst->pDrawable->x + xDst + width,
|
||||
pDst->pDrawable->y + yDst + height);
|
||||
|
||||
done:
|
||||
pSrc->repeat = saveSrcRepeat;
|
||||
|
@ -995,15 +999,17 @@ exaGlyphs (CARD8 op,
|
|||
* First we try to use UploadToScreen, if we can, then we fall back
|
||||
* to a plain exaCopyArea in case of failure.
|
||||
*/
|
||||
if (!pExaScr->info->UploadToScreen ||
|
||||
!exaPixmapIsOffscreen(pPixmap) ||
|
||||
!(*pExaScr->info->UploadToScreen) (pPixmap, 0, 0,
|
||||
if (pExaScr->info->UploadToScreen &&
|
||||
exaPixmapIsOffscreen(pPixmap) &&
|
||||
(*pExaScr->info->UploadToScreen) (pPixmap, 0, 0,
|
||||
glyph->info.width,
|
||||
glyph->info.height,
|
||||
glyphdata,
|
||||
PixmapBytePad(glyph->info.width,
|
||||
list->format->depth)))
|
||||
{
|
||||
exaMarkSync (pScreen);
|
||||
} else {
|
||||
/* Set up the scratch pixmap/GC for doing a CopyArea. */
|
||||
if (pScratchPixmap == NULL) {
|
||||
/* Get a scratch pixmap to wrap the original glyph data */
|
||||
|
|
|
@ -47,13 +47,6 @@ configurations, doing batch processing with \fIXvfb\fP as a background
|
|||
rendering engine, load testing, as an aid to porting the X server to a
|
||||
new platform, and providing an unobtrusive way to run applications
|
||||
that don't really need an X server but insist on having one anyway.
|
||||
.SH BUILDING
|
||||
To build \fIXvfb\fP, put the following in your host.def and remake.
|
||||
.PP
|
||||
\&#define BuildServer YES /\(** if you aren't already building other servers */
|
||||
.br
|
||||
\&#define XVirtualFramebufferServer YES
|
||||
|
||||
.SH OPTIONS
|
||||
.PP
|
||||
In addition to the normal server options described in the \fIXserver(1)\fP
|
||||
|
@ -116,14 +109,14 @@ The server will listen for connections as server number 1, will have the
|
|||
default screen configuration (one screen, 1280x1024x12), and screen 1
|
||||
will be depth 16 1600x1200.
|
||||
.TP 8
|
||||
Xvfb -pixdepths 3 27 -fbdir /usr/tmp
|
||||
Xvfb -pixdepths 3 27 -fbdir /var/tmp
|
||||
The server will listen for connections as server number 0, will have the
|
||||
default screen configuration (one screen, 1280x1024x12),
|
||||
will also support pixmap
|
||||
depths of 3 and 27,
|
||||
and will use memory mapped files in /usr/tmp for the framebuffer.
|
||||
and will use memory mapped files in /var/tmp for the framebuffer.
|
||||
.TP 8
|
||||
xwud -in /usr/tmp/Xvfb_screen0
|
||||
xwud -in /var/tmp/Xvfb_screen0
|
||||
Displays screen 0 of the server started by the preceding example.
|
||||
.SH "SEE ALSO"
|
||||
.PP
|
||||
|
|
|
@ -428,7 +428,7 @@ typedef int xf86jmp_buf[1024];
|
|||
#define toupper(i) xf86toupper(i)
|
||||
#undef ungetc
|
||||
#define ungetc(i,FP) xf86ungetc(i,FP)
|
||||
#undef vfprinf
|
||||
#undef vfprintf
|
||||
#define vfprintf(p,f,a) xf86vfprintf(p,f,a)
|
||||
#undef vsnprintf
|
||||
#define vsnprintf(s,n,f,a) xf86vsnprintf(s,n,f,a)
|
||||
|
|
|
@ -46,8 +46,6 @@ libxf4bpp_la_SOURCES = \
|
|||
mfbzerarc.c \
|
||||
vgamodule.c
|
||||
|
||||
libxf4bpp_la_LIBADD = ../xf1bpp/libxf1bpp.la
|
||||
|
||||
EXTRA_DIST = OScompiler.h ibmTrace.h ppcGCstr.h ppcSpMcro.h vgaReg.h \
|
||||
vgaVideo.h wm3.h NOTES
|
||||
|
||||
|
|
|
@ -15,6 +15,9 @@
|
|||
/* Operating System Vendor */
|
||||
#undef OSVENDOR
|
||||
|
||||
/* Builder string */
|
||||
#undef BUILDERSTRING
|
||||
|
||||
/* Default font path */
|
||||
#undef COMPILEDDEFAULTFONTPATH
|
||||
|
||||
|
|
|
@ -474,6 +474,10 @@ void
|
|||
miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
|
||||
unsigned long time)
|
||||
{
|
||||
xEvent* events;
|
||||
int i, nevents;
|
||||
int valuators[2];
|
||||
|
||||
SetupScreen(pScreen);
|
||||
|
||||
if (pDev && (pDev->coreEvents || pDev == inputInfo.pointer) &&
|
||||
|
@ -488,4 +492,23 @@ miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
|
|||
miPointer.x = x;
|
||||
miPointer.y = y;
|
||||
miPointer.pScreen = pScreen;
|
||||
|
||||
/* generate motion notify */
|
||||
valuators[0] = x;
|
||||
valuators[1] = y;
|
||||
|
||||
events = (xEvent*)xcalloc(sizeof(xEvent), GetMaximumEventsNum());
|
||||
if (!events)
|
||||
{
|
||||
FatalError("Could not allocate event store.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
nevents = GetPointerEvents(events, pDev, MotionNotify, 0,
|
||||
POINTER_ABSOLUTE, 0, 2, valuators);
|
||||
|
||||
for (i = 0; i < nevents; i++)
|
||||
mieqEnqueue(pDev, &events[i]);
|
||||
|
||||
xfree(events);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue