kwin/autotests
Martin Gräßlin 0bb587dcb9 Ensure PointerInputRedirection::processMotion finishes prior to warping
Summary:
Consider the following situation: we have three InputEventFilter linked
in the sequence A - B - C.

The input filters are processing pointer motion events. The expected
behavior is that the new motion is processed in the sequence
   A -> B -> C

So far this did not work correctly if the pointer gets warped during the
processing. If e.g. filter B warps the pointer we get a motion sequence:
   A (1) -> B (1) -> A (2) -> B (2) -> C (2) -> C (1)

The filters following the one warping the pointer get first the newer
than the older position. This is obviously wrong. Unfortunately it is not
just a theoretical condition, but a condition happening when interacting
with the screenedges, which warp the pointer.

This change introduces a PositionUpdateBlocker in
PointerInputRedirection::processMotion to ensure that a processMotion
call finishes prior to the next update. If the PositionUpdateBlocker is
blocked the new position gets scheduled and processed once the
PositionUpdateBlocker gets destroyed.

With this we get the expected sequence for B warping pointer:
   A (1) -> B (1) -> C (1) -> A (2) -> B (2) -> C (2)

This should hopefully improve the interaction with screen edges on
Wayland.

CCBUG: 374867

Test Plan:
Added an auto test demonstrating the issue of incorrect
ordering caused by screenedges. Prior to the change the test is failing.

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D5182
2017-03-27 07:08:10 +02:00
..
integration Ensure PointerInputRedirection::processMotion finishes prior to warping 2017-03-27 07:08:10 +02:00
libinput [libinput] Change unset of scroll method and acceleration profile 2016-12-06 13:45:54 +01:00
libkwineffects [libkwineffects] Port getXServerVersion from X11 to xcb 2016-08-23 11:45:59 +02:00
libxrenderutils [autotests] Add missing add_test() 2016-09-08 15:24:21 +02:00
tabbox Support highlighting windows through EffectsHandlerImpl 2016-09-13 08:36:12 +02:00
abstract_client.h
client.h
CMakeLists.txt Fade out OnScreenNotification when moving with the mouse over it 2017-01-04 18:04:15 +01:00
fakeeffectplugin.cpp
fakeeffectplugin.json
fakeeffectplugin_version.cpp
fakeeffectplugin_version.json
mock_abstract_client.cpp
mock_abstract_client.h Implement show on screen edge for Wayland 2016-10-05 07:51:47 +02:00
mock_client.cpp
mock_client.h Implement show on screen edge for Wayland 2016-10-05 07:51:47 +02:00
mock_effectshandler.cpp
mock_effectshandler.h Add support for skip close animation to OnScreenMessage 2017-01-25 13:54:34 +01:00
mock_screens.cpp
mock_screens.h
mock_workspace.cpp
mock_workspace.h
onscreennotificationtest.cpp Fade out OnScreenNotification when moving with the mouse over it 2017-01-04 18:04:15 +01:00
onscreennotificationtest.h Introduce a KWin internal on-screen-notification service 2016-12-21 19:43:49 +01:00
test_builtin_effectloader.cpp [effects] Add a colorpicker effect 2016-11-25 09:30:34 +01:00
test_client_machine.cpp Remove KWin::display from kwinglobals 2016-11-16 18:00:00 +01:00
test_plugin_effectloader.cpp new logout effect 2017-03-15 17:47:22 +01:00
test_screen_edges.cpp remove offending test 2017-03-16 18:30:39 +01:00
test_screen_paint_data.cpp Pass the current output geometry to ScreenPaintData 2016-10-17 09:02:30 +02:00
test_screens.cpp
test_scripted_effectloader.cpp new logout effect 2017-03-15 17:47:22 +01:00
test_virtual_desktops.cpp Move X11 specific KGlobalAccel handling into the x11-standalone platform 2017-01-17 17:01:32 +01:00
test_window_paint_data.cpp
test_xcb_size_hints.cpp Remove KWin::display from kwinglobals 2016-11-16 18:00:00 +01:00
test_xcb_window.cpp Remove KWin::display from kwinglobals 2016-11-16 18:00:00 +01:00
test_xcb_wrapper.cpp Remove KWin::display from kwinglobals 2016-11-16 18:00:00 +01:00
test_xrandr_screens.cpp Support multiple event types in X11EventFilter 2016-11-16 07:48:19 +01:00
testutils.h [autotests] Add Q_CONSTRUCTOR_FUNCTION to X11 specific tests to force xcb 2016-09-08 15:22:48 +02:00
workspace.h