- May 03, 2012
-
-
Peter Hutterer authored
A suspend-induced device disable may happen before the device gets to see the button release event. On resume, the server's internal state still has some buttons pressed, causing inconsistent behaviour. Force the release and the matching events to be sent to the client. Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by:
Chase Douglas <chase.douglas@canonical.com> (cherry picked from commit f3410b97) Conflicts: dix/devices.c
-
Peter Hutterer authored
Test case: - create a device with REL_HWHEEL and ABS_X and ABS_Y. evdev 2.7.0 will set that up as device with 1 relative axis - move pointer to VGA1 - xrandr --output VGA1 --off Warps the pointer to the new spot and calls GPE with the x/y mask bits set. When running through the loop to check for scroll event, this overruns the axes and may try to emulate scroll events based on random garbage in the memory. If that memory contained non-zero for the scroll type but near-zero for the increment field, the server would hang in an infinite loop. This was the trigger for this suggested, never-merged, patch here: http://patchwork.freedesktop.org/patch/9543/ X.Org Bug 47281 <http://bugs.freedesktop.org/show_bug.cgi?id=47281 > Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by:
Chase Douglas <chase.douglas@canonical.com> (cherry picked from commit af88b43f)
-
Peter Hutterer authored
If TimerSet() is called from a signal handler (synaptics tap handling code) may result in list corruption if we're currently inside TimerSet(). See backtrace in https://bugzilla.redhat.com/show_bug.cgi?id=814869 Block signals for all list manipulations in the timers. Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by:
Chase Douglas <chase.douglas@canonical.com> (cherry picked from commit 08962951)
-
Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Bryce Harrington <bryce@canonical.com> Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 5c361d59)
-
- Apr 27, 2012
-
-
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=41653 Signed-off-by:
Michal Suchanek <hramrach@gmail.com> Reviewed-by:
Jeremy Huddleston <jeremyhu@apple.com> Tested-by:
Knut Petersen <Knut_Petersen@t-online.de> (cherry picked from commit fa6dddc6)
-
The __glapi_gentable_set_remaining_noop() routine treats the _glapi_struct as an array of _glapi_get_dispatch_table_size() pointers, so we have to allocate _glapi_get_dispatch_table_size()*sizeof(void*) bytes rather than sizeof(struct _glapi_struct) bytes. Signed-off-by:
Jonas Maebe <jonas.maebe@elis.ugent.be> Reviewed-by:
Jeremy Huddleston <jeremyhu@apple.com> (cherry picked from commit adcb48a2)
-
Jeremy Huddleston Sequoia authored
This should hopefully help out wine clients that were continuing to have issues after the earlier changes. http://xquartz.macosforge.org/trac/ticket/548 Signed-off-by:
Jeremy Huddleston <jeremyhu@apple.com> (cherry picked from commit e34519e5)
-
Jeremy Huddleston Sequoia authored
We loose information from AppKit being in our way. Before adopting smooth scrolling, we always rounded-up the number of scroll button clicks per NSEvent. Now, the scroll value is accumulated in the dix, and clicky scroll wheels with legacy X11 clients are seeing an accumulation of error due to so many translations (button press to smooth scrolling value in AppKit, passed to the dix, and then synthesized into a button press). This attempts to make the situation better. http://xquartz.macosforge.org/trac/ticket/562 Signed-off-by:
Jeremy Huddleston <jeremyhu@apple.com> (cherry picked from commit 662d41ac)
-
Jeremy Huddleston Sequoia authored
Signed-off-by:
Jeremy Huddleston <jeremyhu@apple.com> (cherry picked from commit eda85290)
-
Jeremy Huddleston Sequoia authored
This should have no immediate impact aside from fake mouse buttons no longer working with tablets (where they aren't needed or desired anyways). This prepares us for future changes. Signed-off-by:
Jeremy Huddleston <jeremyhu@apple.com> (cherry picked from commit b99586c9)
-
Jeremy Huddleston Sequoia authored
Reported-by:
Joe Rohde <joer@valvesoftware.com> Signed-off-by:
Jeremy Huddleston <jeremyhu@apple.com> (cherry picked from commit 30623d6f)
-
Jeremy Huddleston Sequoia authored
The fact that this has been in place so long makes me really wonder if anybody cares about this running in Tiger or Leopard. Signed-off-by:
Jeremy Huddleston <jeremyhu@apple.com> (cherry picked from commit b4c4c65a)
-
- Apr 26, 2012
-
-
The generated event does not have axes other than X and Y and has a newer timestamp. In particular, the newer timestamp may be newer than the real touch end event, which may be stuck in the syncEvents queue. If a client uses the timestamps for grabbing bad things may happen. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 00cf1c40)
-
A request, like input device grabs, may check a request timestamp against currentTime. It is possible for currentTime to lag a previously sent event timestamp. If the client makes a request based on such an event timestamp, the request may fail the validity check against currentTime unless we always update the time before processing the request. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 312910b4)
-
If a touch is physically active, the pointer core state should reflect that the first button is pressed. Currently, this only occurs when there are active listeners of the touch sequence. By moving the device state updating to the beginning of touch processing we ensure it is updated according to the processed physical state no matter what. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit a986f2f3)
-
The current code checks the core event mask as though it were an XI mask. This change fixes the checks so the proper client and event masks are used. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit ec9c4295)
-
Currently, the touch is only logically ended if the touch has physically ended. If the touch hasn't physically ended, the touch record is never ended. If there aren't any more listeners, we don't need to keep the dix touch record around any more. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit e175971a)
-
As a special case, if a still physically active pointer emulated touch has no listeners and the device is explicitly grabbed for pointer events, create a new dix touch record for the grab only. This allows for clients to "hand off" grabs. For example, when dragging a window under compiz the window decorator sees the button press and then ungrabs the implicit grab. It then tells compiz to grab the device, and compiz then moves the window with the pointer motion. This is racy, but is allowed by the input protocol for pointer events when there are no other clients with a grab on the device. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit d0449851)
-
The function will be used for building a sprite for pointer emulation after an explicit device grab. This commit refactors the code so that TouchBuildSprite will function with any event type and moves the checks to the caller. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 3d06bfe9)
-
Pointer passive grabs may be changed by the grabbing client. This allows for a selecting client to change an implicit grab to an active grab, which is the mechanism used for pop-up windows like application menus. We need to do the same thing with touches. If the grabbing client is the owner of a touch sequence, change the listener record to reflect the new grab. If the grabbing client is not the owner, nothing changes for the touch. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 2efbed23)
-
Fake touch end events are generated by touch acceptance and rejection. These should not cause implicit pointer grabs to be deactivated. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit ef64b5ee)
-
Fake end events are generated by touch acceptance or rejection. These should not end the touch point. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit fc518cd9)
-
We still need to generate the touch ownership event to process the ending of the touch event in the case where the owner has the end already. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 80d7d1ec)
-
See UpdateCurrentTime() for reference. I don't know what bug this might trigger, but it wouldn't hurt to fix this. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 8dfd9824)
-
Explicit pointer grabs are placed at the head of the touch listener array for pointer emulated touches. If the grab is deactivated, we must remove it from all touches for the device. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 6ca30cb3)
-
This is a bit of unimplemented code for touchscreen pointer emulation. A pointer grabbing client currently never accepts the touch sequence. The sequence must be accepted once any touch-derived event is irrevocably delivered to a client. The first pointer event, derived from a touch begin event, may be caught in a sync grab and then replayed. This is essentially a revocable delivery of an event. Thus, we must wait till a non-begin event is delivered. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit cacdb9a7)
-
This will be used for accepting and rejecting touches in the future. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 447fe7a1)
-
The current code returns a reference to memory that may not actually be an XI2 mask. Instead, only return a value when an XI2 client has selected for events. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Jeremy Huddleston <jeremyhu@apple.com> Acked-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 93c33403)
-
The current code checks the core event mask as though it were an XI2 mask. This change fixes the checks so the proper client and event masks are used. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Jeremy Huddleston <jeremyhu@apple.com> Acked-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 4c1dfd21)
-
QueryPointer is part of the core protocol. As such, it knows nothing about touch devices. Touches are converted to button 1 press, pointer motion, and button 1 release for core clients, so we should ensure the pointer state mask has button 1 set when XQueryPointer is used. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 12188c8a)
-
Issue: * Two sequential touches (i.e. down, up, down, up) * Both are grabbed by a touch grab * Both have a second listener in the form of a pointer grab or selection * The second and first touches are rejected in that order The first touch must be pointer emulated before the second touch, so the second touch must be paused until the first touch is rejected or accepted and all events are delivered to pointer clients. This change ensures all pointer emulated events are emitted sequentially. It necessarily imposes a delay on further touch events when pointer grabs and selections are used, but there is no way around it. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 32ece7c0)
-
Just like when we deliver to a touch listener, we must convert a touch end event to an update event for further clients. This also ensures that the touch record is not deleted at the end of ProcessTouchEvent(). Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 163b0f37)
-
After the pointer grab is deactivated, the touch listener record is updated at the end of DeliverTouchEmulatedEvent. However, the touch record is ended when the grab is deactivated, so the update to the listener record is in an array of memory that has been freed. Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 210cd12c)
-
When redirect actions are used with Gtk3, Gtk3 complained about events not holding a GdkDevice. This was caused by device IDs not being set for redirect actions. More seriously, Gtk3 did not receive state changes redirect actions might specify. This was because event_set_state in dix/inpututils.c accesses the prev_state field, but the changes for the redirect action were only put into the state field. Signed-off-by:
Andreas Wettstein <wettstein509@solnet.ch> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 9e017cf0)
-
Peter Hutterer authored
There are a few subtle bugs during startup where IsFloating() returns true if the device is a master device that is not yet paired with its keyboard device. Force IsFloating() to always return FALSE for master devices, that was the intent after all and any code that relies on the other behaviour should be fixed instead. Signed-off-by:
Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by:
Jeremy Huddleston <jeremyhu@apple.com> Tested-by:
Jon TURNEY <jon.turney@dronecode.org.uk> (cherry picked from commit 5497ce3d)
-
- Apr 13, 2012
-
-
Jeremy Huddleston Sequoia authored
Signed-off-by:
Jeremy Huddleston <jeremyhu@apple.com>
-
- Apr 10, 2012
-
-
Jeremy Huddleston Sequoia authored
Signed-off-by:
Jeremy Huddleston <jeremyhu@apple.com>
-
Jeremy Huddleston Sequoia authored
I don't know why this fixes the problem with make dist, but it does... Signed-off-by:
Jeremy Huddleston <jeremyhu@apple.com>
-
Jeremy Huddleston Sequoia authored
This reverts commit b704d914. This was causing some regressions. Reverting as discussed on xorg-devel.
-
- Apr 06, 2012
-
-
Whoops. Forgot to implement this. The code currently generates an error due to the unhandled grab type. X.Org Bug 48069 <https://bugs.freedesktop.org/show_bug.cgi?id=48069 > Signed-off-by:
Chase Douglas <chase.douglas@canonical.com> Reviewed-by:
Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by:
Keith Packard <keithp@keithp.com> (cherry picked from commit 1110facd)
-