Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
When a new device is added, calculate the event size needed if a DCCE event is
sent and set the EQ's event size to this minimum. This avoids reallocs when a
event is sent (which may happen during a SIGIO).
|
|
|
|
|
|
|
|
|
|
Add Prox events to the if-clauses with the other events
that are usually sent from the input devices.
Ensure that the event deliverers won't try to deliver
events of type '0' (some extended events doesn't have
an equivalent core-type)
Small modification by Peter Hutterer.
Signed-off-by: Peter Hutterer <peter@cs.unisa.edu.au>
|
|
|
|
Conflicts:
XTrap/xtrapddmi.c
Xext/security.c
Xext/xprint.c
Xext/xtest.c
Xext/xvdisp.c
Xi/exevents.c
Xi/grabdevb.c
Xi/grabdevk.c
Xi/opendev.c
Xi/ungrdev.c
Xi/ungrdevb.c
Xi/ungrdevk.c
dix/cursor.c
dix/devices.c
dix/dixutils.c
dix/events.c
dix/getevents.c
dix/main.c
dix/window.c
hw/xfree86/ramdac/xf86Cursor.c
include/dix.h
include/input.h
include/inputstr.h
mi/midispcur.c
mi/miinitext.c
mi/misprite.c
render/animcur.c
xfixes/cursor.c
xkb/xkbAccessX.c
|
|
Initialise num_events to 1, so we always send a proximity event, and then
optionally valuator events. Also make sure mieq can deal with valuator
events sent after proximity events.
|
|
|
|
Few whitespace errors fixed.
Two ErrorF's prefixed with [mi].
|
|
old version is called from drivers...
|
|
|
|
If a slave device is attached to a master device, then we need to send a
mapping notify to the client.
Mapping notify needs to be sent if
- different slave device but on same master
- different master
This gives you funny behaviour with the ClientPointer. When a
MappingNotify is sent to the client, the client usually responds with a
GetKeyboardMapping. This will retrieve the ClientPointer's keyboard mapping,
regardless of which keyboard sent the last mapping notify request. So
depending on the CP setting, your keyboard may change layout in each app...
|
|
|
|
Each time a different slave device sends through a master, an
DeviceClassesChangedEvent is enqueued. When this event is processed, all
classes of the matching master device are changed, and the event is sent to
the clients.
Next time the master is queried, it thus shows the evclasses of the last slave
device. The original classes are stored in the devPrivates.
TODO: if all slave devices are removed, the master's original classes need to
be restored.
|
|
Move the event duplication into a CopyGetMasterEvent(), makes the code a bit
better to read.
|
|
Event values may get changed in the event processing stage, so we need to
duplicate it to pump different events through for slave and master device.
|
|
More work is needed to sort out grabs though.
|
|
We only get core events through the EQ in exceptional cases, so make sure we
actually swap the core keymap for XI events as well. Gives us back the ability
to have multiple keyboard layouts simultaneously.
|
|
Let the drivers only generate XI events and put those into the event queue.
When processing events, generate core events as needed. This fixes a number of
problems with XKB and the DIX in general.
The previous approach was to put core events and XI events as separate events
into the event queue. When being processed, the server had no knowledge of
them coming from the same device state change. Anything that would then change
the state of the device accordingly was in danger of changing it twice,
leading to some funny (i.e. not funny at all) results.
Emulating core events while processing XI events fixes this, there is only one
path that actually changes the device state now. Although we have to be
careful when replaying events from synced devices, otherwise we may lose
events.
Note: XI has precedence over core for passive grabs, but core events are
delivered to the client first.
This removes the wrapping added in 340911d7243a7f1095d79b5b2dcfa81b145c2474
|
|
When processing events from the EQ, _always_ call the processInputProc of the
matching device. For XI devices, this proc is wrapped in three layers.
Core event handling is wrapped by XI event handling, which is wrapped by XKB.
A core event now passes through XKB -> XI -> DIX.
This gets rid of a sync'd grab problem: with the previous code, core events
did disappear during a sync'd device grab on account of mieqProcessInputEvents
calling the processInputProc of the VCP/VCK instead of the actual device. This
lead to the event being processed as normal instead of being enqueued for
later replaying.
|
|
|
|
Doing so may overwrite the event's length field and cause havoc. Also check if
realloc'd memory did actually return valid pointer.
|
|
This was previously committed by Michael Daenzer, but was lost during a pull.
|
|
Conflicts:
dix/devices.c
hw/xfree86/common/xf86Xinput.c
hw/xfree86/loader/xf86sym.c
mi/mieq.c
|
|
So the modulo arithmetic actually works as intended... thanks to Peter Hutterer
for pointing out the problem.
|
|
In particular, fix handling of wraparounds in mieqEnqueue.
|
|
Add RawDeviceEvent (pointers only for now).
This commit changes the event queue to use EventLists instead of xEvent
arrays. Only EQ is affected, event delivery still uses xEvent* (look for
comment in mieqProcessInputEvent).
RawDeviceEvents deliver driver information to the client, without clipping or
acceleration.
|
|
Requires moving the spriteTrace into the DeviceIntRec and adjusting a few
functions to take in device argument, most notably XYToWindow().
Cursor rendering on the second screen is busted.
|
|
Conflicts:
configure.ac
dix/events.c
hw/xfree86/common/xf86Xinput.c
|
|
Use a default queue size of 512 rather than 256, else Xephyr is too slow
without a host cursor, so events get stuck in the queue.
|
|
X.Org Bugzilla #10560: <https://bugs.freedesktop.org/show_bug.cgi?id=10560>
Patch #9511 <https://bugs.freedesktop.org/attachment.cgi?id=9511>
|
|
Conflicts:
Xi/closedev.c
Xi/exevents.c
Xi/extinit.c
Xi/listdev.c
dix/window.c
hw/xfree86/common/xf86Xinput.c
include/extinit.h
mi/mipointer.c
|
|
information into a new SpriteInfoRec, remove isMPDev flag.
|
|
Allow arbitrary events to use mieq by letting custom handlers be set.
|
|
mi: Remove quickfix from ba547d4f6a2707f51f0d826389d2d418fb62367a
|
|
|
|
|
|
device now.
dix: zero pSprite memory, stop segfaults on server restart.
|
|
from WaitForSomething to mieqProcessInputEvents.
mieqProcessInputEvents already handles resetting the screen saver.
|
|
Removing building mpx extension from Makefile.am
|
|
global sprite renaming in mipointer and misprite
fixed: multiple remove cursor call in miSpriteInstallColormap
fixed: wrong core pointer usage in miSpriteStoreColors
dix: bugfix in CheckCursorConfinement
removing MPX ifdefs
removing MPX event generation (using Xi solely now)
bugfix GrabDevice: uninitialized field in grab struct caused segfault
xfree86: removing MPX fdefs
Xi: removing MPX protocol events
|
|
mieq: Bugfix: Motion notifies did overwrite DeviceMotionNotifies
|
|
bugfix: uninitialized pPointer in miPointerGetPosition ifndef MPX
adding DeviceIntPtr parameter to ScreenRec's cursor functions.
cleanup of miPointer code to use same scheme in each function
dix: MPHasCursor() function determines checking whether to invoke
cursor rendering.
animcur: adding DeviceIntPtr parameter to cursor functions but animcur relies
on the core pointer right now.
xfixes: adding DeviceIntPtr parameter to cursor functions but xfixes relies on
the core pointer right now.
rac: adding DeviceIntPtr parameter to cursor functions but RAC relies on
the core pointer right now.
ramdac: adding DeviceIntPtr parameter to cursor functions but ramdac relies on
the core pointer right now.
|
|
added SpriteRecs for MPX devices
changed sprite dependency and added MPX functionality to parts
of events.c (ConfineToShape, PostNewCursor, XineramaCheckMotion,
CheckMotion, XineramaChangeToCursor, ChangeToCursor, CheckPhysLimits,
PointerConfinedToScreen)
added DeviceIntRec param to GetSpritePosition(). This required some
minor changes in ddx, xtest, xkb and xfixes.
mi: changed miPointer to pointer instead of static struct.
|
|
added miCursorInfoRec to contain info of the MPX cursors.
calling miUpdatePointerSprite() from event queue for MPX devices.
adding device-specific processing to miPointer*() functions.
dix: Call to SetCursorPosition in CheckMotion() temporarily disabled.
xfree86/common: call to miPointerUpdateSprite() disabled, is done from the EQ
NOTE: This build will not display cursor images.
BUG: The second mouse does to take correct x coordinates.
|
|
global: MPX define added to xorg-server.h.in
xfree86/common: small fix to avoid byte overflow
|
|
mieq: avoid merging events from different devices in mieqEnqueue()
xfree86/common
isMPdev field used from xf86ActivateDevice(), xf86PostMotionEvent()
and xf86PostButtonEvent()
|