D5182: Ensure PointerInputRedirection::processMotion finishes prior to warping

Martin Gräßlin noreply at phabricator.kde.org
Sun Mar 26 14:02:30 UTC 2017


graesslin created this revision.
Restricted Application added a project: KWin.
Restricted Application added subscribers: kwin, plasma-devel.

REVISION 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.

REPOSITORY
  R108 KWin

BRANCH
  position-update-blocker

REVISION DETAIL
  https://phabricator.kde.org/D5182

AFFECTED FILES
  autotests/integration/pointer_input.cpp
  pointer_input.cpp

To: graesslin, #kwin, #plasma
Cc: plasma-devel, kwin, progwolff, lesliezhai, ali-mohamed, hardening, jensreuterberg, abetts, sebas, apol
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/plasma-devel/attachments/20170326/c44ada48/attachment.html>


More information about the Plasma-devel mailing list