Commit Graph

361 Commits

Author SHA1 Message Date
Keith Packard
7fdaca6446 mi: force the paired kbd device before CopyKeyClass. (#19574)
Some multi-media keyboards send the key events for multimedia keys through
the device file used by the mouse. Sending a key event through the VCP
however will fail. The VCP doesn't have a key class so the server crashes or
(with an appropriate fix) the event is simply swallowed.

Thus, for key events if the master does not have a key class, get the device
paired with the master (i.e. the VCK) before processing the event any
further.

X.Org Bug 19574 <http://bugs.freedesktop.org/show_bug.cgi?id=19574>

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-02-17 18:57:13 -08:00
Peter Hutterer
a9dd41de7e mi: don't call UpdateSpriteForScreen if we have Xinerama enabled. #18668
In Xinerama all windows hang off the first root window. Crossing the screens
must not reset the spriteTrace, otherwise picking fails and events are sent to
the root window.

X.Org Bug 18668 <http://bugs.freedesktop.org/show_bug.cgi?id=18668>

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 9fe9b6e4ef)

Signed-off-by: Keith Packard <keithp@keithp.com>
2009-02-17 18:52:31 -08:00
Peter Hutterer
fe0abdceb4 mi: ensure chained button mappings from SD -> MD (#19282)
After copying the master event, flip the detail field to the mapped button of
the SD, not the physical button. This way if the SD has a mapping 1:3 and the
MD has a mapping of 3:4, a press on button 1 on the SD results in a core event
on button 4.

X.Org Bug 19282 <http://bugs.freedesktop.org/show_bug.cgi?id=19282>

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
2009-01-30 17:22:15 -08:00
Peter Hutterer
50d80c2552 dix: fix WarpPointer calls for devices with custom valuator ranges (#19297)
If the MD's lastSlave was a devices with custom axes ranges, then a
WarpPointer would position the cursor at the wrong location. A WarpPointer
request provides screen coordinates and these coordinates were scaled to the
device range before warping.

This patch consists of two parts:
1) in the WarpPointer handling, get the lastSlave and post the event through
   this device.
2) assume that WarpPointer coordinates are always in screen coordinates and
   scale them to device coordinates in GPE before continuing. Note that this
   breaks device-coordinate based XWarpDevicePointer calls (for which the spec
   isn't nailed down yet anyway) until a better solution is found.

X.Org Bug 19297 <http://bugs.freedesktop.org/show_bug.cgi?id=19297>

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit d36adf52a2)
2009-01-30 17:10:40 -08:00
Jeremy Huddleston
e81b4d495b XQuartz: mieq: Wait for the server to finish initializing before letting other threads mieqEnqueue
Avoid possible race condition whereby one thread might call mieqEnqueue before InitAndStartDevices finishes
(cherry picked from commit 94e417ac87)
2009-01-30 16:44:49 -08:00
Jeremy Huddleston
ca21fd7ddf XQuartz: Add locking to make mieq thread safe on OSX
(cherry picked from commit 7a8d226686)
2009-01-12 10:42:11 -08:00
Peter Hutterer
82f42730fa mi: force CopyKeyClass for key events. (#19048)
While we don't want to copy all other device classes into the VCK, we need to
copy the key class to transfer the layout from the SDs into the VCK.
This resembles the functionality of SwitchCoreKeyboard in server 1.5.

Thanks to Colin Guthrie for providing the follow-up patch (#19222)

X.Org Bug 19048 <http://bugs.freedesktop.org/show_bug.cgi?id=19048>

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-01-12 18:27:09 +10:00
Jeremy Huddleston
2a822c2311 mi: Reuse memory in mieqProcessInputEvents rather than making excessive calls to calloc()
Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
(cherry picked from commit a939368ab8)
2009-01-09 10:30:58 -08:00
Peter Hutterer
a067bd907e mi: Clean up CopyGetMasterEvent, re-use the memory.
Alloc an EventList once and then re-use instead of allocing a new event each
time we need a master event.
There's a trick included: because all the event processing handlers only take
an xEvent, init a size 1 EventList and squash the events into this one.

Events that have count > 1 must be squished into an xEvent array anyway before
passing into the event handlers, so we don't lose anything here.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Daniel Stone <daniel@fooishbar.org>
(cherry picked from commit d281866b74)
2009-01-09 10:30:27 -08:00
Peter Hutterer
3519f83f50 dix: move MAX_VALUATOR_EVENTS into include/input.h
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 0b4fef6337)
2009-01-09 10:30:26 -08:00
Peter Hutterer
be4bf65d00 input: don't switch MDs' classes around between SDs.
Server 1.6 uses the X Input 1.x input model, where the core devices (VCP and
VCK) do not generate XI events. They don't have to swap device classes but
instead stay at the default number of classes at all times.
This means we can get rid of the DeviceClassesChangedEvents as well.
2008-12-01 08:16:57 +10:00
Jeremy Huddleston
19aac4274b mi: Push screen-saver/DPMS handling to after the EQ pop operation.
This way we on't need to hold the mutex during the dixSaveScreens() call.

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
Signed-off-by: Tiago Vignatti <vignatti@c3sl.ufpr.br>
Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
2008-11-19 10:55:29 -08:00
Jeremy Huddleston
56d1793c43 mi: Only increment tail (push) when the event data is actually in the queue
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
Signed-off-by: Tiago Vignatti <vignatti@c3sl.ufpr.br>
Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
2008-11-19 10:54:57 -08:00
Peter Hutterer
fc3e8bfb82 mi: clean up mieqProcessInputEvents, copy all events before processing.
Copy the EventRec's information into local variables before processing them,
this should make it safer for upcoming threading and also makes it easier to
read.

Simplify the event allocation code from the abyss it was before.

This also fixes a potential bug where a custom handler could scramble the
event before the same -now scrambled- event was then passed through the
master's custom event handler.

Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
2008-11-11 14:52:54 +10:00
James Cloos
b3c7e62664 Remove some null statements.
Remove several doubled statement-terminal semicolons.

Reported by Fernando Carrijo.
2008-11-08 12:21:20 -05:00
Julien Cristau
d3d6be4948 mi: Fix infinite loop on regen when swrast_dri.so is missing
The swrast DRI provider gets pushed on the glx provider stack at every
server generation, so the stack turns into a circular list on regen.

X.Org bug#18388 <https://bugs.freedesktop.org/show_bug.cgi?id=18388>
2008-11-07 19:03:32 +01:00
Peter Hutterer
cbc6f98395 xkb: when faking mouse button events, fake them on the correct devices.
When MouseKeys are activated, keyboard devices may generate fake mouse button
events through XKB. Let's get then running through the appropriate paths, i.e.
as XI events on the correct device.

To make matters more fun, ProcessOtherEvents drops events if the DIX device
state cannot be updated accordingly, i.e. all button events from keyboard
devices.
Hence we need to get the paired MD for the device in XkbDDXFakeDeviceButton,
and post the event through the paired MD (usually the VCP).

Removes now-unused ddxFakeBtn.c.

Note: this patch only half-arsedly fixed button events, motion events are a
more complicated matter.
2008-11-04 16:04:15 +10:30
Daniel Stone
f4036f6ace Remove XEvIE
It's unmaintained and has been broken for quite a while; MPX finally
smashed it completely.

Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
2008-11-04 16:01:07 +10:30
Daniel Stone
889a8dc02b Xi: XINPUT has been mandatory for ages
Ditch all #ifdef XINPUT, since it's always built.

Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
2008-11-04 16:01:07 +10:30
Julien Cristau
4b96ba8ddf Nuke unused miBankNewSerialNumber 2008-10-26 11:56:35 +01:00
Julien Cristau
30a7a06a9e Nuke prototype for nonexistent function
miDoInitVisuals was removed in commit
94825ad3c7, but its prototype was left.
2008-10-26 11:44:57 +01:00
Adam Jackson
b736f477f5 mieq: Backtrace when the queue overflows.
Since we're probably stuck down in a driver somewhere, let's at least
try to point out where.  This will need to be rethought when the input
thread work lands though.
2008-10-10 16:33:57 -04:00
Tiago Vignatti
d1bb5e3b47 mi: functions here are carrying 'time' without need. 2008-10-08 03:41:17 -03:00
Tiago Vignatti
4964a9ca6c mi: remove deprecated and unused functions.
miPointerDeltaCursor, miPointerGetMotionBufferSize and
miPointerSetNewScreen.
2008-10-08 03:41:17 -03:00
Adam Jackson
0b7b89fbac xalloc+bzero -> xcalloc 2008-10-06 14:19:30 -04:00
Adam Jackson
b72a217ad5 Dangling use of miDestroyGCOps 2008-10-03 18:30:37 -04:00
Adam Jackson
f5bbc54a93 Fix compile for miSetScreenPixmap prototype. 2008-10-03 18:18:02 -04:00
Adam Jackson
9dbfcd8921 Delete unused miModifyBanking() 2008-10-03 17:51:21 -04:00
Adam Jackson
94825ad3c7 Remove unused wrapping for visual initialization. 2008-10-03 17:51:21 -04:00
Adam Jackson
4791f8e2ba staticize mi{G,S}etScreenPixmap 2008-10-03 17:51:20 -04:00
Adam Jackson
14d98b4a2f miFindMaxBand is dead code 2008-10-03 17:51:20 -04:00
Adam Jackson
48b4792813 mi{Create,Destroy}GCOps are unused, nuke 'em. 2008-10-03 17:51:20 -04:00
Adam Jackson
bd0e87c747 Remove a bunch of unused API from the mi export list. 2008-10-03 17:51:20 -04:00
Adam Jackson
0ce61e21d6 Remove the Must_have_memory hack.
Also remove an astonishing amount of misunderstanding of how casts work.
2008-10-03 17:51:19 -04:00
Jeremy Huddleston
dac9e91870 mieq: Made custom event handlers safer for nevents >1 2008-09-21 17:33:04 -07:00
Keith Packard
03ab8f11d2 When resizing a window with redirected descendents, don't expose them
Bit/window gravity computations need to recompute exposures to manage the
bits which are saved by gravity during the resize computation. That's easy
for non-redirected windows where the bits are all within the parent's
pixmap. For redirected windows, we don't need to deal with this at all, so
just skip the whole re-computation adventure.

Signed-off-by: Keith Packard <keithp@keithp.com>
2008-09-19 20:59:40 -07:00
Jeremy Huddleston
47bf269d59 mieq: Fix my broken cherry pick. 2008-09-03 12:54:56 -07:00
Jeremy Huddleston
9e70a3cf58 mieqProcessInputEvents: Check custom event handlers first. 2008-09-03 09:33:39 -07:00
Tomas Carnecky
ebea78cdba Prepare for array-index based devPrivates.
TODO: static indices can be made just an int; some indices
can be combined.
2008-08-28 18:05:40 -04:00
Eamon Walsh
ec7907f8fa Add an array of integers for use as per-screen cursor private keys.
Replaces the use of the screen pointer itself as the key, which was
nice but won't work now that an array index is being stored.
2008-08-27 19:27:13 -04:00
Adam Jackson
af5125968a Refactor misprite a bit.
No variable declarations in header files, please.
2008-08-19 14:47:10 -04:00
Fredrik Höglund
244a635fcd Fix the tile offset in miPaintWindow for ParentRelative windows. 2008-08-18 19:27:34 +02:00
Adam Jackson
0ce687634f Eviscerate save-under support.
Use a compositing manager already.  Plus I really wanted to use 'eviscerate'
in a commit message.
2008-08-13 17:28:08 -04:00
Adam Jackson
63bdd4c27d Unifdef XIDLE.
Seriously how was this still here.
2008-07-31 17:31:36 -04:00
Adam Jackson
f3ff238601 Sync is built-in and mandatory. 2008-07-24 15:46:08 -04:00
Adam Jackson
3fcf4d3eb8 XC-MISC is built-in and mandatory. 2008-07-24 15:46:08 -04:00
Adam Jackson
f65c50c4e9 Bigreqs are built-in and mandatory. 2008-07-24 15:46:08 -04:00
Adam Jackson
d6228cb22a Shape extension is built-in and mandatory. 2008-07-24 15:46:08 -04:00
Adam Jackson
856db05b58 Unifdef sgi. 2008-07-23 13:37:42 -04:00
Adam Jackson
0ff5bc4048 Unifdef QNX.
Again, hasn't worked since at least 7.0.
2008-07-23 10:44:34 -04:00