summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-07-01 15:45:45 -0700
committerKeith Packard <keithp@keithp.com>2011-07-01 15:45:45 -0700
commitd4096abb591353405417e53816e5c46e904e7b25 (patch)
tree156a4ea91e225565add01b850dbbd4f8bf68f603
parent61f87a75f2bcda939a1778d39be8cfa5c886e6d8 (diff)
parent87d4f90bfcb509471ac9e7886e14a92b33223fd7 (diff)
Merge remote-tracking branch 'whot/for-keith'
-rw-r--r--Xext/xtest.c9
-rw-r--r--dix/dixutils.c10
-rw-r--r--dix/getevents.c25
-rw-r--r--dix/grabs.c112
-rw-r--r--dix/window.c141
-rw-r--r--exa/exa.c4
-rw-r--r--exa/exa_accel.c6
-rw-r--r--exa/exa_classic.c2
-rw-r--r--exa/exa_driver.c2
-rw-r--r--exa/exa_migration_classic.c4
-rw-r--r--exa/exa_migration_mixed.c2
-rw-r--r--exa/exa_mixed.c2
-rw-r--r--exa/exa_unaccel.c2
-rw-r--r--hw/dmx/dmxinput.c1
-rw-r--r--hw/dmx/input/dmxinputinit.c3
-rw-r--r--hw/kdrive/ephyr/ephyr.c2
-rw-r--r--hw/kdrive/ephyr/ephyr.h2
-rw-r--r--hw/kdrive/ephyr/ephyr_draw.c2
-rw-r--r--hw/kdrive/ephyr/ephyrinit.c3
-rw-r--r--hw/kdrive/ephyr/hostx.c2
-rw-r--r--hw/kdrive/ephyr/hostx.h2
-rw-r--r--hw/kdrive/ephyr/os.c2
-rw-r--r--hw/kdrive/fake/fakeinit.c1
-rw-r--r--hw/kdrive/fake/kbd.c2
-rw-r--r--hw/kdrive/fbdev/fbdev.c2
-rw-r--r--hw/kdrive/fbdev/fbdev.h2
-rw-r--r--hw/kdrive/fbdev/fbinit.c3
-rw-r--r--hw/kdrive/linux/keyboard.c8
-rw-r--r--hw/kdrive/linux/linux.c2
-rw-r--r--hw/kdrive/linux/mouse.c2
-rw-r--r--hw/kdrive/linux/ps2.c2
-rw-r--r--hw/kdrive/linux/tslib.c10
-rw-r--r--hw/kdrive/src/kcmap.c2
-rw-r--r--hw/kdrive/src/kdrive.h4
-rw-r--r--hw/kdrive/src/kinfo.c2
-rw-r--r--hw/kdrive/src/kinput.c11
-rw-r--r--hw/kdrive/src/kshadow.c2
-rw-r--r--hw/vfb/InitInput.c1
-rw-r--r--hw/xfree86/common/xf86Init.c1
-rw-r--r--hw/xfree86/dixmods/xkbPrivate.c15
-rw-r--r--hw/xfree86/dri2/dri2.c1
-rw-r--r--hw/xfree86/exa/examodule.c2
-rw-r--r--hw/xfree86/modes/xf86Modes.h2
-rw-r--r--hw/xfree86/modes/xf86cvt.c4
-rw-r--r--hw/xfree86/os-support/solaris/sun_agp.c4
-rw-r--r--hw/xnest/Init.c1
-rw-r--r--hw/xquartz/darwin.c4
-rw-r--r--hw/xquartz/darwinEvents.c4
-rw-r--r--hw/xquartz/darwinEvents.h1
-rw-r--r--hw/xquartz/darwinXinput.c5
-rw-r--r--hw/xwin/InitInput.c1
-rw-r--r--[-rwxr-xr-x]hw/xwin/xlaunch/resources/resources.h0
-rw-r--r--[-rwxr-xr-x]hw/xwin/xlaunch/window/dialog.h0
-rw-r--r--[-rwxr-xr-x]hw/xwin/xlaunch/window/window.h0
-rw-r--r--[-rwxr-xr-x]hw/xwin/xlaunch/window/wizard.h0
-rw-r--r--include/dixgrabs.h3
-rw-r--r--include/input.h9
-rw-r--r--include/window.h2
-rw-r--r--mi/mipointer.c2
-rw-r--r--miext/shadow/shadow.c2
-rw-r--r--test/Makefile.am1
-rw-r--r--test/xi2/protocol-eventconvert.c18
62 files changed, 370 insertions, 108 deletions
diff --git a/Xext/xtest.c b/Xext/xtest.c
index daa6430f1..cc675c116 100644
--- a/Xext/xtest.c
+++ b/Xext/xtest.c
@@ -679,12 +679,19 @@ GetXTestDevice(DeviceIntPtr master)
return NULL;
}
+static void
+XTestExtensionTearDown(ExtensionEntry *e)
+{
+ FreeEventList(xtest_evlist, GetMaximumEventsNum());
+ xtest_evlist = NULL;
+}
+
void
XTestExtensionInit(INITARGS)
{
AddExtension(XTestExtensionName, 0, 0,
ProcXTestDispatch, SProcXTestDispatch,
- NULL, StandardMinorOpcode);
+ XTestExtensionTearDown, StandardMinorOpcode);
xtest_evlist = InitEventList(GetMaximumEventsNum());
}
diff --git a/dix/dixutils.c b/dix/dixutils.c
index 104363b72..1e3134663 100644
--- a/dix/dixutils.c
+++ b/dix/dixutils.c
@@ -386,8 +386,9 @@ BlockHandler(pointer pTimeout, pointer pReadmask)
screenInfo.screens[i]->blockData,
pTimeout, pReadmask);
for (i = 0; i < numHandlers; i++)
- (*handlers[i].BlockHandler) (handlers[i].blockData,
- pTimeout, pReadmask);
+ if (!handlers[i].deleted)
+ (*handlers[i].BlockHandler) (handlers[i].blockData,
+ pTimeout, pReadmask);
if (handlerDeleted)
{
for (i = 0; i < numHandlers;)
@@ -416,8 +417,9 @@ WakeupHandler(int result, pointer pReadmask)
++inHandler;
for (i = numHandlers - 1; i >= 0; i--)
- (*handlers[i].WakeupHandler) (handlers[i].blockData,
- result, pReadmask);
+ if (!handlers[i].deleted)
+ (*handlers[i].WakeupHandler) (handlers[i].blockData,
+ result, pReadmask);
for (i = 0; i < screenInfo.numScreens; i++)
(* screenInfo.screens[i]->WakeupHandler)(i,
screenInfo.screens[i]->wakeupData,
diff --git a/dix/getevents.c b/dix/getevents.c
index c935c971c..a12462a4a 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -320,6 +320,8 @@ updateSlaveDeviceCoords(DeviceIntPtr master, DeviceIntPtr pDev)
* position of the pointer */
pDev->last.valuators[0] = master->last.valuators[0];
pDev->last.valuators[1] = master->last.valuators[1];
+ pDev->last.remainder[0] = master->last.remainder[0];
+ pDev->last.remainder[1] = master->last.remainder[1];
if (!pDev->valuator)
return;
@@ -339,14 +341,19 @@ updateSlaveDeviceCoords(DeviceIntPtr master, DeviceIntPtr pDev)
if ((lastSlave = master->last.slave) && lastSlave->valuator) {
for (i = 2; i < pDev->valuator->numAxes; i++) {
if (i >= lastSlave->valuator->numAxes)
+ {
pDev->last.valuators[i] = 0;
+ pDev->last.remainder[i] = 0;
+ }
else
+ {
pDev->last.valuators[i] =
rescaleValuatorAxis(pDev->last.valuators[i],
pDev->last.remainder[i],
&pDev->last.remainder[i],
lastSlave->valuator->axes + i,
pDev->valuator->axes + i, 0);
+ }
}
}
@@ -1164,14 +1171,17 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, int buttons
events = UpdateFromMaster(events, pDev, DEVCHANGE_POINTER_EVENT, &num_events);
- raw = &events->raw_event;
- events++;
- num_events++;
-
valuator_mask_copy(&mask, mask_in);
- init_raw(pDev, raw, ms, type, buttons);
- set_raw_valuators(raw, &mask, raw->valuators.data_raw);
+ if ((flags & POINTER_NORAW) == 0)
+ {
+ raw = &events->raw_event;
+ events++;
+ num_events++;
+
+ init_raw(pDev, raw, ms, type, buttons);
+ set_raw_valuators(raw, &mask, raw->valuators.data_raw);
+ }
if (flags & POINTER_ABSOLUTE)
{
@@ -1210,7 +1220,8 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, int buttons
moveRelative(pDev, &x, &y, &mask);
}
- set_raw_valuators(raw, &mask, raw->valuators.data);
+ if ((flags & POINTER_NORAW) == 0)
+ set_raw_valuators(raw, &mask, raw->valuators.data);
positionSprite(pDev, (flags & POINTER_ABSOLUTE) ? Absolute : Relative,
&x, &y, x_frac, y_frac, scr, &cx, &cy, &cx_frac, &cy_frac);
diff --git a/dix/grabs.c b/dix/grabs.c
index 69c58dff9..85ca9eee0 100644
--- a/dix/grabs.c
+++ b/dix/grabs.c
@@ -68,6 +68,118 @@ SOFTWARE.
#define BITCLEAR(buf, i) MASKWORD(buf, i) &= ~BITMASK(i)
#define GETBIT(buf, i) (MASKWORD(buf, i) & BITMASK(i))
+void
+PrintDeviceGrabInfo(DeviceIntPtr dev)
+{
+ ClientPtr client;
+ LocalClientCredRec *lcc;
+ int i, j;
+ GrabInfoPtr devGrab = &dev->deviceGrab;
+ GrabPtr grab = devGrab->grab;
+
+ ErrorF("Active grab 0x%lx (%s) on device '%s' (%d):",
+ (unsigned long) grab->resource,
+ (grab->grabtype == GRABTYPE_XI2) ? "xi2" :
+ ((grab->grabtype == GRABTYPE_CORE) ? "core" : "xi1"),
+ dev->name, dev->id);
+
+ client = clients[CLIENT_ID(grab->resource)];
+ if (client && GetLocalClientCreds(client, &lcc) != -1)
+ {
+ ErrorF(" client pid %ld uid %ld gid %ld\n",
+ (lcc->fieldsSet & LCC_PID_SET) ? (long) lcc->pid : 0,
+ (lcc->fieldsSet & LCC_UID_SET) ? (long) lcc->euid : 0,
+ (lcc->fieldsSet & LCC_GID_SET) ? (long) lcc->egid : 0);
+ FreeLocalClientCreds(lcc);
+ }
+ else
+ {
+ ErrorF(" (no client information available)\n");
+ }
+
+ /* XXX is this even correct? */
+ if (devGrab->sync.other)
+ ErrorF(" grab ID 0x%lx from paired device\n",
+ (unsigned long) devGrab->sync.other->resource);
+
+ ErrorF(" at %ld (from %s grab)%s (device %s, state %d)\n",
+ (unsigned long) devGrab->grabTime.milliseconds,
+ devGrab->fromPassiveGrab ? "passive" : "active",
+ devGrab->implicitGrab ? " (implicit)" : "",
+ devGrab->sync.frozen ? "frozen" : "thawed",
+ devGrab->sync.state);
+
+ if (grab->grabtype == GRABTYPE_CORE)
+ {
+ ErrorF(" core event mask 0x%lx\n",
+ (unsigned long) grab->eventMask);
+ }
+ else if (grab->grabtype == GRABTYPE_XI)
+ {
+ ErrorF(" xi1 event mask 0x%lx\n",
+ devGrab->implicitGrab ? (unsigned long) grab->deviceMask :
+ (unsigned long) grab->eventMask);
+ }
+ else if (grab->grabtype == GRABTYPE_XI2)
+ {
+ for (i = 0; i < EMASKSIZE; i++)
+ {
+ int print;
+ print = 0;
+ for (j = 0; j < XI2MASKSIZE; j++)
+ {
+ if (grab->xi2mask[i][j])
+ {
+ print = 1;
+ break;
+ }
+ }
+ if (!print)
+ continue;
+ ErrorF(" xi2 event mask for device %d: 0x", dev->id);
+ for (j = 0; j < XI2MASKSIZE; j++)
+ ErrorF("%x", grab->xi2mask[i][j]);
+ ErrorF("\n");
+ }
+ }
+
+ if (devGrab->fromPassiveGrab)
+ {
+ ErrorF(" passive grab type %d, detail 0x%x, "
+ "activating key %d\n", grab->type, grab->detail.exact,
+ devGrab->activatingKey);
+ }
+
+ ErrorF(" owner-events %s, kb %d ptr %d, confine %lx, cursor 0x%lx\n",
+ grab->ownerEvents ? "true" : "false",
+ grab->keyboardMode, grab->pointerMode,
+ grab->confineTo ? (unsigned long) grab->confineTo->drawable.id : 0,
+ grab->cursor ? (unsigned long) grab->cursor->id : 0);
+}
+
+void
+UngrabAllDevices(Bool kill_client)
+{
+ DeviceIntPtr dev;
+ ClientPtr client;
+
+ ErrorF("Ungrabbing all devices%s; grabs listed below:\n",
+ kill_client ? " and killing their owners" : "");
+
+ for (dev = inputInfo.devices; dev; dev = dev->next)
+ {
+ if (!dev->deviceGrab.grab)
+ continue;
+ PrintDeviceGrabInfo(dev);
+ client = clients[CLIENT_ID(dev->deviceGrab.grab->resource)];
+ if (!client || client->clientGone)
+ dev->deviceGrab.DeactivateGrab(dev);
+ CloseDownClient(client);
+ }
+
+ ErrorF("End list of ungrabbed devices\n");
+}
+
GrabPtr
CreateGrab(
int client,
diff --git a/dix/window.c b/dix/window.c
index 5defe5849..556509ac3 100644
--- a/dix/window.c
+++ b/dix/window.c
@@ -108,6 +108,7 @@ Equipment Corporation.
#include "regionstr.h"
#include "validate.h"
#include "windowstr.h"
+#include "propertyst.h"
#include "input.h"
#include "inputstr.h"
#include "resource.h"
@@ -124,10 +125,13 @@ Equipment Corporation.
#include "dixevents.h"
#include "globals.h"
#include "mi.h" /* miPaintWindow */
+#include "compint.h"
#include "privates.h"
#include "xace.h"
+#include <X11/Xatom.h> /* must come after server includes */
+
/******
* Window stuff for server
*
@@ -176,46 +180,129 @@ static Bool TileScreenSaver(ScreenPtr pScreen, int kind);
#define SubStrSend(pWin,pParent) (StrSend(pWin) || SubSend(pParent))
-#ifdef DEBUG
-/******
- * PrintWindowTree
- * For debugging only
- ******/
+static const char *overlay_win_name = "<composite overlay>";
-static void
-PrintChildren(WindowPtr p1, int indent)
+static const char *
+get_window_name(WindowPtr pWin)
{
- WindowPtr p2;
- int i;
+#define WINDOW_NAME_BUF_LEN 512
+ PropertyPtr prop;
+ CompScreenPtr comp_screen = GetCompScreen(pWin->drawable.pScreen);
+ static char buf[WINDOW_NAME_BUF_LEN];
+ int len;
+
+ if (comp_screen && pWin == comp_screen->pOverlayWin)
+ return overlay_win_name;
- while (p1)
+ for (prop = wUserProps(pWin); prop; prop = prop->next)
{
- p2 = p1->firstChild;
- ErrorF("[dix] ");
- for (i=0; i<indent; i++) ErrorF(" ");
- ErrorF("%lx\n", p1->drawable.id);
- RegionPrint(&p1->clipList);
- PrintChildren(p2, indent+4);
- p1 = p1->nextSib;
+ if (prop->propertyName == XA_WM_NAME && prop->type == XA_STRING &&
+ prop->data)
+ {
+ len = min(prop->size, WINDOW_NAME_BUF_LEN - 1);
+ memcpy(buf, prop->data, len);
+ buf[len] = '\0';
+ return buf;
+ }
}
+
+ return NULL;
+#undef WINDOW_NAME_BUF_LEN
}
-static void
-PrintWindowTree(void)
+static void log_window_info(WindowPtr pWin, int depth)
{
int i;
- WindowPtr pWin, p1;
+ const char *win_name, *visibility;
+ BoxPtr rects;
+ ScreenPtr pScreen = pWin->drawable.pScreen;
+
+ for (i = 0; i < (depth << 2); i++)
+ ErrorF(" ");
+
+ win_name = get_window_name(pWin);
+ ErrorF("win 0x%.8x (%s), [%d, %d] to [%d, %d]",
+ pWin->drawable.id,
+ win_name ? win_name : "no name",
+ pWin->drawable.x, pWin->drawable.y,
+ pWin->drawable.x + pWin->drawable.width,
+ pWin->drawable.y + pWin->drawable.height);
+
+ if (pWin->overrideRedirect)
+ ErrorF(" (override redirect)");
+ if (pWin->redirectDraw)
+ ErrorF(" (%s compositing: pixmap %x)",
+ (pWin->redirectDraw == RedirectDrawAutomatic) ?
+ "automatic" : "manual",
+ pScreen->GetWindowPixmap(pWin)->drawable.id);
+
+ switch (pWin->visibility)
+ {
+ case VisibilityUnobscured:
+ visibility = "unobscured";
+ break;
+ case VisibilityPartiallyObscured:
+ visibility = "partially obscured";
+ break;
+ case VisibilityFullyObscured:
+ visibility = "fully obscured";
+ break;
+ case VisibilityNotViewable:
+ visibility = "unviewable";
+ break;
+ }
+ ErrorF(", %s", visibility);
+
+ if (REGION_NOTEMPTY(pScreen, &pWin->clipList))
+ {
+ ErrorF(", clip list:");
+ rects = REGION_RECTS(&pWin->clipList);
+ for (i = 0; i < REGION_NUM_RECTS(&pWin->clipList); i++)
+ ErrorF(" [(%d, %d) to (%d, %d)]",
+ rects[i].x1, rects[i].y1,
+ rects[i].x2, rects[i].y2);
+ ErrorF("; extents [(%d, %d) to (%d, %d)]",
+ pWin->clipList.extents.x1, pWin->clipList.extents.y1,
+ pWin->clipList.extents.x2, pWin->clipList.extents.y2);
+ }
+
+ ErrorF("\n");
+}
+
+void
+PrintWindowTree(void)
+{
+ int scrnum, depth;
+ ScreenPtr pScreen;
+ WindowPtr pWin;
- for (i=0; i<screenInfo.numScreens; i++)
+ for (scrnum = 0; scrnum < screenInfo.numScreens; scrnum++)
{
- ErrorF("[dix] WINDOW %d\n", i);
- pWin = screenInfo.screens[i]->root;
- RegionPrint(&pWin->clipList);
- p1 = pWin->firstChild;
- PrintChildren(p1, 4);
+ pScreen = screenInfo.screens[scrnum];
+ ErrorF("[dix] Dumping windows for screen %d (pixmap %x):\n", scrnum,
+ pScreen->GetScreenPixmap(pScreen)->drawable.id);
+ pWin = pScreen->root;
+ depth = 1;
+ while (pWin)
+ {
+ log_window_info(pWin, depth);
+ if (pWin->firstChild)
+ {
+ pWin = pWin->firstChild;
+ depth++;
+ continue;
+ }
+ while (pWin && !pWin->nextSib)
+ {
+ pWin = pWin->parent;
+ depth--;
+ }
+ if (!pWin)
+ break;
+ pWin = pWin->nextSib;
+ }
}
}
-#endif
int
TraverseTree(WindowPtr pWin, VisitWindowProcPtr func, pointer data)
diff --git a/exa/exa.c b/exa/exa.c
index a4e294a71..4ce983bc3 100644
--- a/exa/exa.c
+++ b/exa/exa.c
@@ -1,7 +1,7 @@
/*
- * Copyright 2001 Keith Packard
+ * Copyright © 2001 Keith Packard
*
- * Partly based on code that is Copyright The XFree86 Project Inc.
+ * Partly based on code that is Copyright © The XFree86 Project Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/exa/exa_accel.c b/exa/exa_accel.c
index b4c0f8351..5600539d6 100644
--- a/exa/exa_accel.c
+++ b/exa/exa_accel.c
@@ -1,7 +1,7 @@
/*
- * Copyright 2001 Keith Packard
+ * Copyright © 2001 Keith Packard
*
- * Partly based on code that is Copyright The XFree86 Project Inc.
+ * Partly based on code that is Copyright © The XFree86 Project Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -23,7 +23,7 @@
*
* Authors:
* Eric Anholt <eric@anholt.net>
- * Michel Dnzer <michel@tungstengraphics.com>
+ * Michel Dänzer <michel@tungstengraphics.com>
*
*/
diff --git a/exa/exa_classic.c b/exa/exa_classic.c
index 169ce3aac..919b29df2 100644
--- a/exa/exa_classic.c
+++ b/exa/exa_classic.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 Maarten Maathuis
+ * Copyright © 2009 Maarten Maathuis
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
diff --git a/exa/exa_driver.c b/exa/exa_driver.c
index b9903d1bc..795cb00cd 100644
--- a/exa/exa_driver.c
+++ b/exa/exa_driver.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 Maarten Maathuis
+ * Copyright © 2009 Maarten Maathuis
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
diff --git a/exa/exa_migration_classic.c b/exa/exa_migration_classic.c
index 6c49fb798..dd3cd491e 100644
--- a/exa/exa_migration_classic.c
+++ b/exa/exa_migration_classic.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2006 Intel Corporation
+ * Copyright © 2006 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -22,7 +22,7 @@
*
* Authors:
* Eric Anholt <eric@anholt.net>
- * Michel Dnzer <michel@tungstengraphics.com>
+ * Michel Dänzer <michel@tungstengraphics.com>
*
*/
diff --git a/exa/exa_migration_mixed.c b/exa/exa_migration_mixed.c
index fb4715135..4b2261943 100644
--- a/exa/exa_migration_mixed.c
+++ b/exa/exa_migration_mixed.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 Maarten Maathuis
+ * Copyright © 2009 Maarten Maathuis
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
diff --git a/exa/exa_mixed.c b/exa/exa_mixed.c
index fd1afb246..58645aea0 100644
--- a/exa/exa_mixed.c
+++ b/exa/exa_mixed.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2009 Maarten Maathuis
+ * Copyright © 2009 Maarten Maathuis
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
index df416d5ac..219f903b2 100644
--- a/exa/exa_unaccel.c
+++ b/exa/exa_unaccel.c
@@ -1,6 +1,6 @@
/*
*
- * Copyright 1999 Keith Packard
+ * Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/dmx/dmxinput.c b/hw/dmx/dmxinput.c
index 568bb882b..f006af4d2 100644
--- a/hw/dmx/dmxinput.c
+++ b/hw/dmx/dmxinput.c
@@ -77,6 +77,7 @@ void InitInput(int argc, char **argv)
void CloseInput(void)
{
+ mieqFini();
}
/** Called from dix/dispatch.c in Dispatch() whenever input events
diff --git a/hw/dmx/input/dmxinputinit.c b/hw/dmx/input/dmxinputinit.c
index 5cbd620c9..1b067c725 100644
--- a/hw/dmx/input/dmxinputinit.c
+++ b/hw/dmx/input/dmxinputinit.c
@@ -546,9 +546,6 @@ static void dmxProcessInputEvents(DMXInputInfo *dmxInput)
return;
for (i = 0; i < dmxInput->numDevs; i += dmxInput->devs[i]->binding)
if (dmxInput->devs[i]->process_input) {
-#if 11 /*BP*/
- miPointerUpdateSprite(dmxInput->devs[i]->pDevice);
-#endif
dmxInput->devs[i]->process_input(dmxInput->devs[i]->private);
}
diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index ac8e5bef9..7ebf1c253 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -2,7 +2,7 @@
* Xephyr - A kdrive X server thats runs in a host X window.
* Authored by Matthew Allum <mallum@openedhand.com>
*
- * Copyright 2004 Nokia
+ * Copyright © 2004 Nokia
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/ephyr/ephyr.h b/hw/kdrive/ephyr/ephyr.h
index 41a82bf9d..23848004c 100644
--- a/hw/kdrive/ephyr/ephyr.h
+++ b/hw/kdrive/ephyr/ephyr.h
@@ -2,7 +2,7 @@
* Xephyr - A kdrive X server thats runs in a host X window.
* Authored by Matthew Allum <mallum@o-hand.com>
*
- * Copyright 2004 Nokia
+ * Copyright © 2004 Nokia
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/ephyr/ephyr_draw.c b/hw/kdrive/ephyr/ephyr_draw.c
index b1982a5e6..cf5f55394 100644
--- a/hw/kdrive/ephyr/ephyr_draw.c
+++ b/hw/kdrive/ephyr/ephyr_draw.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2006 Intel Corporation
+ * Copyright © 2006 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c
index 2deb7b81d..b674bb8d0 100644
--- a/hw/kdrive/ephyr/ephyrinit.c
+++ b/hw/kdrive/ephyr/ephyrinit.c
@@ -2,7 +2,7 @@
* Xephyr - A kdrive X server thats runs in a host X window.
* Authored by Matthew Allum <mallum@o-hand.com>
*
- * Copyright 2004 Nokia
+ * Copyright © 2004 Nokia
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -97,6 +97,7 @@ InitInput (int argc, char **argv)
void
CloseInput (void)
{
+ KdCloseInput();
}
#ifdef DDXBEFORERESET
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 2ebeca958..4caf4516d 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -2,7 +2,7 @@
* Xephyr - A kdrive X server thats runs in a host X window.
* Authored by Matthew Allum <mallum@o-hand.com>
*
- * Copyright 2004 Nokia
+ * Copyright © 2004 Nokia
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index e65e0c9bc..42578576a 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -2,7 +2,7 @@
* Xephyr - A kdrive X server thats runs in a host X window.
* Authored by Matthew Allum <mallum@o-hand.com>
*
- * Copyright 2004 Nokia
+ * Copyright © 2004 Nokia
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/ephyr/os.c b/hw/kdrive/ephyr/os.c
index 4bf6e8858..e4dc6787d 100644
--- a/hw/kdrive/ephyr/os.c
+++ b/hw/kdrive/ephyr/os.c
@@ -2,7 +2,7 @@
* Xephyr - A kdrive X server thats runs in a host X window.
* Authored by Matthew Allum <mallum@o-hand.com>
*
- * Copyright 2004 Nokia
+ * Copyright © 2004 Nokia
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/fake/fakeinit.c b/hw/kdrive/fake/fakeinit.c
index ba61959ef..e25093fbf 100644
--- a/hw/kdrive/fake/fakeinit.c
+++ b/hw/kdrive/fake/fakeinit.c
@@ -61,6 +61,7 @@ InitInput (int argc, char **argv)
void
CloseInput (void)
{
+ KdCloseInput ();
}
#ifdef DDXBEFORERESET
diff --git a/hw/kdrive/fake/kbd.c b/hw/kdrive/fake/kbd.c
index 51fba044d..769730d64 100644
--- a/hw/kdrive/fake/kbd.c
+++ b/hw/kdrive/fake/kbd.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Keith Packard
+ * Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/fbdev/fbdev.c b/hw/kdrive/fbdev/fbdev.c
index 2c7fa91ad..661e5b491 100644
--- a/hw/kdrive/fbdev/fbdev.c
+++ b/hw/kdrive/fbdev/fbdev.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Keith Packard
+ * Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/fbdev/fbdev.h b/hw/kdrive/fbdev/fbdev.h
index ebac6ad8b..ec53784af 100644
--- a/hw/kdrive/fbdev/fbdev.h
+++ b/hw/kdrive/fbdev/fbdev.h
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Keith Packard
+ * Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/fbdev/fbinit.c b/hw/kdrive/fbdev/fbinit.c
index 51e7e00d9..1d66fce32 100644
--- a/hw/kdrive/fbdev/fbinit.c
+++ b/hw/kdrive/fbdev/fbinit.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Keith Packard
+ * Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -47,6 +47,7 @@ InitInput (int argc, char **argv)
void
CloseInput (void)
{
+ KdCloseInput ();
}
void
diff --git a/hw/kdrive/linux/keyboard.c b/hw/kdrive/linux/keyboard.c
index e05c5abad..f5f9d9b8a 100644
--- a/hw/kdrive/linux/keyboard.c
+++ b/hw/kdrive/linux/keyboard.c
@@ -1,10 +1,10 @@
/*
- * Copyright 1999 Keith Packard
- * XKB integration 2006 Nokia Corporation, author: Tomas Frydrych <tf@o-hand.com>
+ * Copyright © 1999 Keith Packard
+ * XKB integration © 2006 Nokia Corporation, author: Tomas Frydrych <tf@o-hand.com>
*
* LinuxKeyboardRead() XKB code based on xf86KbdLnx.c:
- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
- * Copyright 1994-2001 by The XFree86 Project, Inc.
+ * Copyright © 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+ * Copyright © 1994-2001 by The XFree86 Project, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
diff --git a/hw/kdrive/linux/linux.c b/hw/kdrive/linux/linux.c
index 9863c1424..a53db4965 100644
--- a/hw/kdrive/linux/linux.c
+++ b/hw/kdrive/linux/linux.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Keith Packard
+ * Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/linux/mouse.c b/hw/kdrive/linux/mouse.c
index 1db534863..93c207817 100644
--- a/hw/kdrive/linux/mouse.c
+++ b/hw/kdrive/linux/mouse.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2001 Keith Packard
+ * Copyright © 2001 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/linux/ps2.c b/hw/kdrive/linux/ps2.c
index 552a3c7cb..465b963f2 100644
--- a/hw/kdrive/linux/ps2.c
+++ b/hw/kdrive/linux/ps2.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Keith Packard
+ * Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/linux/tslib.c b/hw/kdrive/linux/tslib.c
index 570cbf99a..1f30ccae7 100644
--- a/hw/kdrive/linux/tslib.c
+++ b/hw/kdrive/linux/tslib.c
@@ -4,11 +4,11 @@
* Derived from ts.c by Keith Packard
* Derived from ps2.c by Jim Gettys
*
- * Copyright 1999 Keith Packard
- * Copyright 2000 Compaq Computer Corporation
- * Copyright 2002 MontaVista Software Inc.
- * Copyright 2005 OpenedHand Ltd.
- * Copyright 2006 Nokia Corporation
+ * Copyright © 1999 Keith Packard
+ * Copyright © 2000 Compaq Computer Corporation
+ * Copyright © 2002 MontaVista Software Inc.
+ * Copyright © 2005 OpenedHand Ltd.
+ * Copyright © 2006 Nokia Corporation
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/src/kcmap.c b/hw/kdrive/src/kcmap.c
index 9bfdd78b6..6e0fc1417 100644
--- a/hw/kdrive/src/kcmap.c
+++ b/hw/kdrive/src/kcmap.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Keith Packard
+ * Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h
index 2ab535aef..9ac5a19d7 100644
--- a/hw/kdrive/src/kdrive.h
+++ b/hw/kdrive/src/kdrive.h
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Keith Packard
+ * Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -500,6 +500,8 @@ KdScreenInfoDispose (KdScreenInfo *si);
/* kinput.c */
void
KdInitInput(void);
+void
+KdCloseInput(void);
void
KdAddPointerDriver(KdPointerDriver *);
diff --git a/hw/kdrive/src/kinfo.c b/hw/kdrive/src/kinfo.c
index 8193215ba..7055fbf4a 100644
--- a/hw/kdrive/src/kinfo.c
+++ b/hw/kdrive/src/kinfo.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Keith Packard
+ * Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index cdf55d7f9..c14dd8241 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -1,6 +1,6 @@
/*
- * Copyright 1999 Keith Packard
- * Copyright 2006 Nokia Corporation
+ * Copyright © 1999 Keith Packard
+ * Copyright © 2006 Nokia Corporation
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -1305,6 +1305,12 @@ KdInitInput (void)
mieqInit();
}
+void
+KdCloseInput (void)
+{
+ mieqFini();
+}
+
/*
* Middle button emulation state machine
*
@@ -2159,7 +2165,6 @@ void
ProcessInputEvents (void)
{
mieqProcessInputEvents();
- miPointerUpdateSprite(inputInfo.pointer);
if (kdSwitchPending)
KdProcessSwitch ();
KdCheckLock ();
diff --git a/hw/kdrive/src/kshadow.c b/hw/kdrive/src/kshadow.c
index 6f5a2f346..63bb87bc6 100644
--- a/hw/kdrive/src/kshadow.c
+++ b/hw/kdrive/src/kshadow.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1999 Keith Packard
+ * Copyright © 1999 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/hw/vfb/InitInput.c b/hw/vfb/InitInput.c
index 60b59c164..8836bbd7f 100644
--- a/hw/vfb/InitInput.c
+++ b/hw/vfb/InitInput.c
@@ -148,4 +148,5 @@ InitInput(int argc, char *argv[])
void
CloseInput (void)
{
+ mieqFini();
}
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 53f763aaf..15fdbc349 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -825,6 +825,7 @@ void
CloseInput (void)
{
config_fini();
+ mieqFini();
}
/*
diff --git a/hw/xfree86/dixmods/xkbPrivate.c b/hw/xfree86/dixmods/xkbPrivate.c
index 9742eaf31..06d1c2b3d 100644
--- a/hw/xfree86/dixmods/xkbPrivate.c
+++ b/hw/xfree86/dixmods/xkbPrivate.c
@@ -13,6 +13,7 @@
#define XKBSRV_NEED_FILE_FUNCS
#include <xkbsrv.h>
+#include "dixgrabs.h"
#include "os.h"
#include "xf86.h"
@@ -29,6 +30,20 @@ XkbDDXPrivate(DeviceIntPtr dev,KeyCode key,XkbAction *act)
xf86ProcessActionEvent(ACTION_PREV_MODE, NULL);
else if (strcasecmp(msgbuf, "+vmode")==0)
xf86ProcessActionEvent(ACTION_NEXT_MODE, NULL);
+ else if (strcasecmp(msgbuf, "prgrbs")==0) {
+ DeviceIntPtr tmp;
+ xf86Msg(X_INFO, "Printing all currently active device grabs:\n");
+ for (tmp = inputInfo.devices; tmp; tmp = tmp->next)
+ if (tmp->deviceGrab.grab)
+ PrintDeviceGrabInfo(tmp);
+ xf86Msg(X_INFO, "End list of active device grabs\n");
+ }
+ else if (strcasecmp(msgbuf, "ungrab")==0)
+ UngrabAllDevices(FALSE);
+ else if (strcasecmp(msgbuf, "clsgrb")==0)
+ UngrabAllDevices(TRUE);
+ else if (strcasecmp(msgbuf, "prwins")==0)
+ PrintWindowTree();
}
return 0;
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index bf7ebb9f8..af3bcaefe 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -1185,6 +1185,7 @@ void
DRI2CloseScreen(ScreenPtr pScreen)
{
DRI2ScreenPtr ds = DRI2GetScreen(pScreen);
+ pScreen->ConfigNotify = ds->ConfigNotify;
free(ds->driverNames);
free(ds);
diff --git a/hw/xfree86/exa/examodule.c b/hw/xfree86/exa/examodule.c
index 83f72b5e1..15560513d 100644
--- a/hw/xfree86/exa/examodule.c
+++ b/hw/xfree86/exa/examodule.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2006 Intel Corporation
+ * Copyright © 2006 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
diff --git a/hw/xfree86/modes/xf86Modes.h b/hw/xfree86/modes/xf86Modes.h
index 38927b128..c72a93537 100644
--- a/hw/xfree86/modes/xf86Modes.h
+++ b/hw/xfree86/modes/xf86Modes.h
@@ -1,5 +1,5 @@
/*
- * Copyright 2006 Intel Corporation
+ * Copyright © 2006 Intel Corporation
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
diff --git a/hw/xfree86/modes/xf86cvt.c b/hw/xfree86/modes/xf86cvt.c
index 244f3b9a3..d5fecccb5 100644
--- a/hw/xfree86/modes/xf86cvt.c
+++ b/hw/xfree86/modes/xf86cvt.c
@@ -152,7 +152,7 @@ xf86CVTMode(int HDisplay, int VDisplay, float VRefresh, Bool Reduced,
if (!Reduced) { /* simplified GTF calculation */
- /* 4) Minimum time of vertical sync + back porch interval (s)
+ /* 4) Minimum time of vertical sync + back porch interval (µs)
* default 550.0 */
#define CVT_MIN_VSYNC_BP 550.0
@@ -223,7 +223,7 @@ xf86CVTMode(int HDisplay, int VDisplay, float VRefresh, Bool Reduced,
Mode->VSyncEnd = Mode->VSyncStart + VSync;
} else { /* Reduced blanking */
- /* Minimum vertical blanking interval time (s) - default 460 */
+ /* Minimum vertical blanking interval time (µs) - default 460 */
#define CVT_RB_MIN_VBLANK 460.0
/* Fixed number of clocks for horizontal sync */
diff --git a/hw/xfree86/os-support/solaris/sun_agp.c b/hw/xfree86/os-support/solaris/sun_agp.c
index a4517d666..0331ac1c5 100644
--- a/hw/xfree86/os-support/solaris/sun_agp.c
+++ b/hw/xfree86/os-support/solaris/sun_agp.c
@@ -3,8 +3,8 @@
*
* This version is for Solaris.
*
- * Copyright 2000 VA Linux Systems, Inc.
- * Copyright 2001 The XFree86 Project, Inc.
+ * Copyright © 2000 VA Linux Systems, Inc.
+ * Copyright © 2001 The XFree86 Project, Inc.
*/
/* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
*
diff --git a/hw/xnest/Init.c b/hw/xnest/Init.c
index ee74101d2..ea0669a6a 100644
--- a/hw/xnest/Init.c
+++ b/hw/xnest/Init.c
@@ -108,6 +108,7 @@ InitInput(int argc, char *argv[])
void
CloseInput(void)
{
+ mieqFini();
}
/*
diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c
index 29ab83677..73685b0d4 100644
--- a/hw/xquartz/darwin.c
+++ b/hw/xquartz/darwin.c
@@ -505,6 +505,10 @@ void InitInput( int argc, char **argv )
QuartzInitInput(argc, argv);
}
+void CloseInput(void)
+{
+ DarwinEQFini();
+}
/*
* DarwinAdjustScreenOrigins
diff --git a/hw/xquartz/darwinEvents.c b/hw/xquartz/darwinEvents.c
index fe744b741..1f22099d6 100644
--- a/hw/xquartz/darwinEvents.c
+++ b/hw/xquartz/darwinEvents.c
@@ -371,6 +371,10 @@ Bool DarwinEQInit(void) {
return TRUE;
}
+Bool DarwinEQFini(void) {
+ mieqFini();
+}
+
/*
* ProcessInputEvents
* Read and process events from the event queue until it is empty.
diff --git a/hw/xquartz/darwinEvents.h b/hw/xquartz/darwinEvents.h
index 6769c8bd8..bd29d51fd 100644
--- a/hw/xquartz/darwinEvents.h
+++ b/hw/xquartz/darwinEvents.h
@@ -32,6 +32,7 @@
#define XQUARTZ_VALUATOR_LIMIT (1 << 16)
Bool DarwinEQInit(void);
+Bool DarwinEQFini(void);
void DarwinEQEnqueue(const xEventPtr e);
void DarwinEQPointerPost(DeviceIntPtr pDev, xEventPtr e);
void DarwinEQSwitchScreen(ScreenPtr pScreen, Bool fromDIX);
diff --git a/hw/xquartz/darwinXinput.c b/hw/xquartz/darwinXinput.c
index 3ef34fec0..94c31bb23 100644
--- a/hw/xquartz/darwinXinput.c
+++ b/hw/xquartz/darwinXinput.c
@@ -149,8 +149,3 @@ DeleteInputDeviceRequest(DeviceIntPtr dev)
DEBUG_LOG("DeleteInputDeviceRequest(%p)\n", dev);
}
-void
-CloseInput (void)
-{
-}
-
diff --git a/hw/xwin/InitInput.c b/hw/xwin/InitInput.c
index 70578b16c..bc48a9360 100644
--- a/hw/xwin/InitInput.c
+++ b/hw/xwin/InitInput.c
@@ -156,4 +156,5 @@ InitInput (int argc, char *argv[])
void
CloseInput (void)
{
+ mieqFini ();
}
diff --git a/hw/xwin/xlaunch/resources/resources.h b/hw/xwin/xlaunch/resources/resources.h
index 470005192..470005192 100755..100644
--- a/hw/xwin/xlaunch/resources/resources.h
+++ b/hw/xwin/xlaunch/resources/resources.h
diff --git a/hw/xwin/xlaunch/window/dialog.h b/hw/xwin/xlaunch/window/dialog.h
index 073394bb2..073394bb2 100755..100644
--- a/hw/xwin/xlaunch/window/dialog.h
+++ b/hw/xwin/xlaunch/window/dialog.h
diff --git a/hw/xwin/xlaunch/window/window.h b/hw/xwin/xlaunch/window/window.h
index baf401405..baf401405 100755..100644
--- a/hw/xwin/xlaunch/window/window.h
+++ b/hw/xwin/xlaunch/window/window.h
diff --git a/hw/xwin/xlaunch/window/wizard.h b/hw/xwin/xlaunch/window/wizard.h
index a2361c51c..a2361c51c 100755..100644
--- a/hw/xwin/xlaunch/window/wizard.h
+++ b/hw/xwin/xlaunch/window/wizard.h
diff --git a/include/dixgrabs.h b/include/dixgrabs.h
index 3b2a46d72..229c8bb53 100644
--- a/include/dixgrabs.h
+++ b/include/dixgrabs.h
@@ -28,6 +28,9 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
struct _GrabParameters;
+extern void PrintDeviceGrabInfo(DeviceIntPtr dev);
+extern void UngrabAllDevices(Bool kill_client);
+
extern GrabPtr CreateGrab(
int /* client */,
DeviceIntPtr /* device */,
diff --git a/include/input.h b/include/input.h
index 56847ed8d..5377a0c13 100644
--- a/include/input.h
+++ b/include/input.h
@@ -62,10 +62,11 @@ SOFTWARE.
#define DEVICE_OFF 2
#define DEVICE_CLOSE 3
-#define POINTER_RELATIVE (1 << 1)
-#define POINTER_ABSOLUTE (1 << 2)
-#define POINTER_ACCELERATE (1 << 3)
-#define POINTER_SCREEN (1 << 4) /* Data in screen coordinates */
+#define POINTER_RELATIVE (1 << 1)
+#define POINTER_ABSOLUTE (1 << 2)
+#define POINTER_ACCELERATE (1 << 3)
+#define POINTER_SCREEN (1 << 4) /* Data in screen coordinates */
+#define POINTER_NORAW (1 << 5) /* Don't generate RawEvents */
/*int constants for pointer acceleration schemes*/
#define PtrAccelNoOp 0
diff --git a/include/window.h b/include/window.h
index 1e4e9bfa4..e13598b88 100644
--- a/include/window.h
+++ b/include/window.h
@@ -267,4 +267,6 @@ extern _X_EXPORT void EnableMapUnmapEvents(
WindowPtr /* pWin */ );
extern _X_EXPORT void SetRootClip(ScreenPtr pScreen, Bool enable);
+extern _X_EXPORT void PrintWindowTree(void);
+
#endif /* WINDOW_H */
diff --git a/mi/mipointer.c b/mi/mipointer.c
index 322be9e44..7680ca19b 100644
--- a/mi/mipointer.c
+++ b/mi/mipointer.c
@@ -683,7 +683,7 @@ miPointerMove (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
valuator_mask_set_range(&mask, 0, 2, valuators);
nevents = GetPointerEvents(events, pDev, MotionNotify, 0,
- POINTER_SCREEN | POINTER_ABSOLUTE, &mask);
+ POINTER_SCREEN | POINTER_ABSOLUTE | POINTER_NORAW, &mask);
OsBlockSignals();
#ifdef XQUARTZ
diff --git a/miext/shadow/shadow.c b/miext/shadow/shadow.c
index cb1b299fe..95f11cd21 100644
--- a/miext/shadow/shadow.c
+++ b/miext/shadow/shadow.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2000 Keith Packard
+ * Copyright © 2000 Keith Packard
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
diff --git a/test/Makefile.am b/test/Makefile.am
index 370e09a18..7ef408c93 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -40,5 +40,6 @@ libxservertest_la_LIBADD = \
$(top_builddir)/mi/libmi.la \
$(top_builddir)/os/libos.la \
@XORG_LIBS@
+libxservertest_la_DEPENDENCIES = $(libxservertest_la_LIBADD)
endif
endif
diff --git a/test/xi2/protocol-eventconvert.c b/test/xi2/protocol-eventconvert.c
index edba974bf..6e61d74b4 100644
--- a/test/xi2/protocol-eventconvert.c
+++ b/test/xi2/protocol-eventconvert.c
@@ -70,6 +70,8 @@ static void test_values_XIRawEvent(RawDeviceEvent *in, xXIRawEvent *out,
for (i = 0; out->valuators_len && i < sizeof(in->valuators.mask) * 8; i++)
{
+ if (i >= MAX_VALUATORS)
+ assert (!XIMaskIsSet(in->valuators.mask, i));
assert (XIMaskIsSet(in->valuators.mask, i) == XIMaskIsSet(ptr, i));
if (XIMaskIsSet(in->valuators.mask, i))
bits_set++;
@@ -238,7 +240,7 @@ static void test_convert_XIRawEvent(void)
test_XIRawEvent(&in);
printf("Testing valuator masks\n");
- for (i = 0; i < sizeof(in.valuators.mask) * 8; i++)
+ for (i = 0; i < MAX_VALUATORS; i++)
{
XISetMask(in.valuators.mask, i);
test_XIRawEvent(&in);
@@ -257,7 +259,7 @@ static void test_convert_XIRawEvent(void)
XIClearMask(in.valuators.mask, i);
}
- for (i = 0; i < sizeof(in.valuators.mask) * 8; i++)
+ for (i = 0; i < MAX_VALUATORS; i++)
{
XISetMask(in.valuators.mask, i);
test_XIRawEvent(&in);
@@ -354,7 +356,7 @@ static void test_values_XIDeviceEvent(DeviceEvent *in, xXIDeviceEvent *out,
valuators = 0;
- for (i = 0; i < sizeof(in->valuators.mask) * 8; i++)
+ for (i = 0; i < MAX_VALUATORS; i++)
if (XIMaskIsSet(in->valuators.mask, i))
valuators++;
@@ -365,7 +367,9 @@ static void test_values_XIDeviceEvent(DeviceEvent *in, xXIDeviceEvent *out,
for (i = 0; i < sizeof(in->valuators.mask) * 8 ||
i < (out->valuators_len * 4) * 8; i++)
{
- if (i > sizeof(in->valuators.mask) * 8)
+ if (i >= MAX_VALUATORS)
+ assert(!XIMaskIsSet(in->valuators.mask, i) && !XIMaskIsSet(ptr, i));
+ else if (i > sizeof(in->valuators.mask) * 8)
assert(!XIMaskIsSet(ptr, i));
else if (i > out->valuators_len * 4 * 8)
assert(!XIMaskIsSet(in->valuators.mask, i));
@@ -610,14 +614,14 @@ static void test_convert_XIDeviceEvent(void)
}
printf("Testing valuator masks\n");
- for (i = 0; i < sizeof(in.valuators.mask) * 8; i++)
+ for (i = 0; i < MAX_VALUATORS; i++)
{
XISetMask(in.valuators.mask, i);
test_XIDeviceEvent(&in);
XIClearMask(in.valuators.mask, i);
}
- for (i = 0; i < sizeof(in.valuators.mask) * 8; i++)
+ for (i = 0; i < MAX_VALUATORS; i++)
{
XISetMask(in.valuators.mask, i);
@@ -627,7 +631,7 @@ static void test_convert_XIDeviceEvent(void)
XIClearMask(in.valuators.mask, i);
}
- for (i = 0; i < sizeof(in.valuators.mask) * 8; i++)
+ for (i = 0; i < MAX_VALUATORS; i++)
{
XISetMask(in.valuators.mask, i);
test_XIDeviceEvent(&in);