From 46784d24c11767455a4986449a8037295912dcee Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Mon, 12 Feb 2007 17:18:29 -0500 Subject: [PATCH 1/7] Remove spurious LIBADD from xf4bpp --- hw/xfree86/xf4bpp/Makefile.am | 2 -- 1 file changed, 2 deletions(-) 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 From d21c95f80bdba2f29eedd57fb0b00e580391c08e Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Mon, 12 Feb 2007 17:22:39 -0500 Subject: [PATCH 2/7] Hook up --with-builderstring for vendor build identification. --- configure.ac | 5 +++++ include/dix-config.h.in | 3 +++ 2 files changed, 8 insertions(+) diff --git a/configure.ac b/configure.ac index 4a33ac022..92dc5c9b0 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/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 From a23b0b069cac8a48e2b306b2095515d75f647705 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Mon, 12 Feb 2007 17:50:00 -0500 Subject: [PATCH 3/7] Typo fix. --- hw/xfree86/os-support/xf86_libc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) From a492d494f51caf15a5cb979dc335387486c105d1 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Tue, 13 Feb 2007 18:32:59 -0800 Subject: [PATCH 4/7] Update Xvfb man page: remove monolith build instructions, use /var/tmp instead of /usr/tmp --- hw/vfb/Xvfb.man.pre | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) 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 From a5f19c5150a7b3dc2ff3ad759ee1a6ab0ad8925c Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 14 Feb 2007 10:39:46 -0800 Subject: [PATCH 5/7] Mark sync when UploadToScreen succeeds in exaGlyphs(). --- exa/exa_render.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/exa/exa_render.c b/exa/exa_render.c index 75108a75c..a442987fe 100644 --- a/exa/exa_render.c +++ b/exa/exa_render.c @@ -995,15 +995,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 */ From 81aa7f059d3cfd8d28420b7932b8ff7e06d67979 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 14 Feb 2007 12:48:15 -0800 Subject: [PATCH 6/7] Add missing dirty marking in a couple of fallback cases in the exaGlyphs path. --- exa/exa_accel.c | 8 ++++++++ exa/exa_render.c | 10 +++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) 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 a442987fe..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; From d570ff7c81858a3174686b46a088f67563b4a2d5 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 14 Feb 2007 17:09:33 +1030 Subject: [PATCH 7/7] fix: WarpCursor needs to send MotionNotify. --- dix/getevents.c | 59 +++++++++++++++++++++++++++---------------------- mi/mipointer.c | 23 +++++++++++++++++++ 2 files changed, 55 insertions(+), 27 deletions(-) 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/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); }