diff --git a/configure.ac b/configure.ac index 208164d8a..42b88c7ad 100644 --- a/configure.ac +++ b/configure.ac @@ -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]) diff --git a/dix/getevents.c b/dix/getevents.c index 8b2a44d70..935112d85 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -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; diff --git a/exa/exa_accel.c b/exa/exa_accel.c index 6fa481ad0..e633d80a5 100644 --- a/exa/exa_accel.c +++ b/exa/exa_accel.c @@ -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); diff --git a/exa/exa_render.c b/exa/exa_render.c index 75108a75c..b78d7282c 100644 --- a/exa/exa_render.c +++ b/exa/exa_render.c @@ -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 */ diff --git a/hw/vfb/Xvfb.man.pre b/hw/vfb/Xvfb.man.pre index f0f5da197..e78e296f5 100644 --- a/hw/vfb/Xvfb.man.pre +++ b/hw/vfb/Xvfb.man.pre @@ -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 diff --git a/hw/xfree86/os-support/xf86_libc.h b/hw/xfree86/os-support/xf86_libc.h index df78d5351..199fcd6b9 100644 --- a/hw/xfree86/os-support/xf86_libc.h +++ b/hw/xfree86/os-support/xf86_libc.h @@ -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) diff --git a/hw/xfree86/xf4bpp/Makefile.am b/hw/xfree86/xf4bpp/Makefile.am index 9af336446..8fddb6b6a 100644 --- a/hw/xfree86/xf4bpp/Makefile.am +++ b/hw/xfree86/xf4bpp/Makefile.am @@ -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 diff --git a/include/dix-config.h.in b/include/dix-config.h.in index 1a9fdc516..458e3a11a 100644 --- a/include/dix-config.h.in +++ b/include/dix-config.h.in @@ -15,6 +15,9 @@ /* Operating System Vendor */ #undef OSVENDOR +/* Builder string */ +#undef BUILDERSTRING + /* Default font path */ #undef COMPILEDDEFAULTFONTPATH diff --git a/mi/mipointer.c b/mi/mipointer.c index dbe2aaeab..c28911bc6 100644 --- a/mi/mipointer.c +++ b/mi/mipointer.c @@ -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); }