Need to support pointer confinement in Mir and toolkits using Mir

Bug #1590099 reported by Brandon Schaefer
18
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Canonical System Image
Fix Released
Medium
Unassigned
Mir
Fix Released
Medium
Brandon Schaefer
MirAL
Fix Released
Medium
Alan Griffiths
libsdl2 (Ubuntu)
Confirmed
Undecided
Brandon Schaefer
mir (Ubuntu)
Fix Released
Medium
Brandon Schaefer
qtmir (Ubuntu)
Fix Released
Medium
Daniel d'Andrada
unity8 (Ubuntu)
Fix Released
Medium
Daniel d'Andrada
xorg-server (Ubuntu)
Won't Fix
Medium
Daniel van Vugt

Bug Description

We need to support pointer confinement set by the client. This way we can generate relative mouse events on a surface without the cursor being able to leave the edge of the window.

Tags: xmir

Related branches

Changed in mir:
status: New → In Progress
Changed in mir (Ubuntu):
status: New → In Progress
Changed in mir:
importance: Undecided → Medium
Changed in mir (Ubuntu):
importance: Undecided → Medium
Changed in mir:
assignee: nobody → Brandon Schaefer (brandontschaefer)
Changed in mir (Ubuntu):
assignee: nobody → Brandon Schaefer (brandontschaefer)
Changed in mir:
milestone: none → 0.24.0
Gerry Boland (gerboland)
Changed in qtmir (Ubuntu):
status: New → Confirmed
Changed in unity8 (Ubuntu):
status: New → Confirmed
Changed in qtmir (Ubuntu):
importance: Undecided → Medium
Changed in unity8 (Ubuntu):
importance: Undecided → Medium
Changed in qtmir (Ubuntu):
assignee: nobody → Daniel d'Andrada (dandrader)
Changed in unity8 (Ubuntu):
assignee: nobody → Daniel d'Andrada (dandrader)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

I'm not sure we need to support displaying the cursor when it's confined.

It might be OK to just implement grabs, always hide the cursor then and leave it up to the client (which in the case of a VM might draw its own software cursor, like games do too).

Changed in miral:
status: New → Triaged
importance: Undecided → Wishlist
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.24.0

Changed in mir:
status: In Progress → Fix Committed
Revision history for this message
Brandon Schaefer (brandontschaefer) wrote :

The mir branch was the first step, not the 100% solution in mir.

Changed in mir:
status: Fix Committed → In Progress
summary: - Need to support pointer confimenet
+ Need to support pointer confinement
Changed in qtmir (Ubuntu):
status: Confirmed → In Progress
Changed in unity8 (Ubuntu):
status: Confirmed → In Progress
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote : Re: Need to support pointer confinement

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.24.0

Changed in mir:
status: In Progress → Fix Committed
Changed in mir (Ubuntu):
status: In Progress → Triaged
summary: - Need to support pointer confinement
+ Need to support pointer confinement in Mir and toolkits using Mir
tags: added: xmir
Changed in libsdl2 (Ubuntu):
assignee: nobody → Brandon Schaefer (brandontschaefer)
Changed in xorg-server (Ubuntu):
assignee: nobody → Daniel van Vugt (vanvugt)
importance: Undecided → Medium
status: New → Triaged
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in libsdl2 (Ubuntu):
status: New → Confirmed
Changed in canonical-devices-system-image:
status: New → Fix Committed
importance: Undecided → Medium
milestone: none → 13
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (5.7 KiB)

This bug was fixed in the package mir - 0.24.0+16.10.20160815.3-0ubuntu1

---------------
mir (0.24.0+16.10.20160815.3-0ubuntu1) yakkety; urgency=medium

  * New upstream release 0.24.0 (https://launchpad.net/mir/+milestone/0.24.0)
    - ABI summary:
      . mirclient ABI unchanged at 9
      . mirserver ABI bumped to 41
      . mircommon ABI unchanged at 6
      . mirplatform ABI bumped to 12
      . mirprotobuf ABI unchanged at 3
      . mirplatformgraphics ABI bumped to 10
      . mirclientplatform ABI unchanged at 5
      . mirinputplatform ABI unchanged at 5
    - Enhancements:
      . Added a new tool 'mirvanity' which can use a high speed video camera
        to measure client-to-screen latency.
      . Added (build-time) support for desktop full OpenGL servers (disabled
        by default in favor of GLESv2).
      . Introduced new buffer semantics (NBS) and enabled it by default.
      . Avoided using libmirserver in mir_demo_standalone_render_overlays,
        making bringup traces less cluttered.
      . Removed TilingWindowManager from example servers.
      . Added two new mir_*_performance_test tools that are run as part of
        'mir_performance_tests'.
      . Added pointer confinement to the client API.
      . Added new platform supporting software EGLStreams.
      . Added an input platform that the nested server can use.
      . Allow configuration of the application_not_responding_detector
      . Handle server-side keymapping using XKBMapper.
      . Remove the offscreen display.
      . Add callback option to notify shells that the server is about to stop.
      . Add logging for ANativeWindow events on Android.
    - Bugs fixed:
      . usage of std:call_once in mirclient causes TLS collisions with some
        android devices (LP: #1599867)
      . AltGr not working on external keyboards (LP: #1565236)
      . [regression] unity8 fails to start when built with 0.24 series (lp:mir)
        (LP: #1597717)
      . CI failure in MirSurfaceVisibilityEvent.exposed_received_when_surface_
        raised_over_occluding_surface [called twice - over-saturated and active]
        (LP: #1556045)
      . package-built mir_demo_server does not start on device (LP: #1577357)
      . During surface creation, first stream in spec becomes default stream.
        (LP: #1577967)
      . mouse is getting stuck on a phantom edge (LP: #1580774)
      . [testsfail] in MirSurfaceVisibilityEvent.exposed_received_when_surface_
        raised_over_occluding_surface [never called] (LP: #1581385)
      . [enhancement] Add support for full OpenGL compositing (LP: #1420581)
      . [testsfail] ServerSignal.terminate_handler_is_called_for_SIGINT|SIGTERM
        (LP: #1570353)
      . [testsfail] ClientLatency.triple_buffered_client_has_less_than_two_
        frames_latency (LP: #1576690)
      . [testsfail] NestedServer.when_monitor_plugged_in_client_is_notified_of_
        new_display_configuration (LP: #1576760)
      . mir server crashed in what(): drmModeMoveCursor failed (returned -13)
        (LP: #1579630)
      . mirtest-dev is hard to use as the objects used are compiled with LTO
        (LP: #1583536)
      . [testsfail] ClientLogging.repo...

Read more...

Changed in mir (Ubuntu):
status: Triaged → Fix Released
Changed in mir:
status: Fix Committed → Fix Released
Revision history for this message
Timo Aaltonen (tjaalton) wrote :

xmir could probably reuse some of pointer confinement and warping support posted for xwayland this week

https://patchwork.freedesktop.org/series/12169/

Changed in canonical-devices-system-image:
status: Fix Committed → Fix Released
Changed in miral:
assignee: nobody → Daniel d'Andrada (dandrader)
status: Triaged → In Progress
importance: Wishlist → Medium
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package qtmir - 0.4.8+16.10.20160909-0ubuntu1

---------------
qtmir (0.4.8+16.10.20160909-0ubuntu1) yakkety; urgency=medium

  [ Daniel d'Andrada ]
  * Send relative pointer movement to Mir clients (LP: #1597205)
  * Implement cursor confinement (LP: #1590099)

  [ Gerry Boland ]
  * Deliver mouse event manually if no cursor exists to deliver it
  * [tests] refactor ScreensModel test to use mocks from mirtest-dev

 -- Michał Sawicz <email address hidden> Fri, 09 Sep 2016 14:40:56 +0000

Changed in qtmir (Ubuntu):
status: In Progress → Fix Released
Changed in miral:
status: In Progress → Fix Committed
assignee: Daniel d'Andrada (dandrader) → Alan Griffiths (alan-griffiths)
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (3.3 KiB)

This bug was fixed in the package unity8 - 8.14+16.10.20160922-0ubuntu1

---------------
unity8 (8.14+16.10.20160922-0ubuntu1) yakkety; urgency=medium

  [ Albert Astals Cid ]
  * LVWPH: update clipItem height when list height changes (LP:
    #1606935)
  * Put the touchdown shape inside a loader
  * No need for the touchdown in the card for the cardtool
  * Add bottom gradient to the Show Less floating button
  * Remove artShapeSize from non cardtool cards
  * LVWPH: Fix case in which header was shown incorrectly
  * LVWPH: Fix items cut on top in the dash (or at least some instances
    of it)
  * Reduce calls to CardCreatorCache.getCardComponent while the
    component is being created (LP: #1615675)
  * Dash::test_cardIconStyle change compare into tryCompareFunction
  * Make PreviewActionsTest::test_comboButton more stable
  * Adapt onShiftedContentXChanged to work when the content changes very
    abruptly
  * Make tryGenericScopeView show the scope correctly
  * Make sure the spinner does not get too close to the title text (LP:
    #1597392)
  * Show "Pull to refresh" in white when overlaid in low luminance
    colors (LP: #1596849)
  * Make test_Shell non ultra slow again (LP: #1597366)
  * Improve findChild calls inside tryCompareFunction.

  [ Andrea Cimitan ]
  * override some Qt Components definitions so we can have sane default
    values for flick speeds
  * Elide the label text inside recent searches panel (LP: #1611796)
  * Add a PreviewSingleton module to store some data for previews (LP:
    #1595235)
  * Use PreviewSingleton for PreviewRatingInput and PreviewCommentInput
    (LP: #1595235)
  * rework GenericScopeView PullToRefresh test
  * use mouseFlick instead touchFlick for manage_dash_move_current
  * add a couple of waiting tricks for a flaky dash test

  [ Daniel d'Andrada ]
  * Set progress bar indeterminate when processing signal received. (LP:
    #1249349)
  * Implement cursor confinement (LP: #1590099)

  [ Josh Arenson ]
  * Add a frontend to the sessions model and enable a session chooser in
    the greeter.

  [ Lukáš Tinkl ]
  * Implement edge maximizing (aka window snapping) (LP: #1602628)
  * On the PC platform (as opposed to running on $devices), use the
    "mute" action instead of silent mode
  * Respect Fitt's law wrt the window control buttons in panel (LP:
    #1611959)
  * Fix 2 failing color-related tests

  [ Marco Trevisan (Treviño) ]
  * Indicators, mocks: add fake indicators menuitem to populate mocks
    with different menu types
  * IndicatorsClient: use PageHeader and ListItemLayout's

  [ Michael Terry ]
  * Support launching apps inside a unity8 session from the greeter and
    support emergency dialing inside the greeter.
  * Fix tryShell to actually show appropriate backgrounds for each mock
    user.
  * Add an indicator to the greeter when a user is logged in (only shown
    if we have more than one user)
  * Hide the greeter OSK if indicators are open and don't show the edge
    tutorial during an emergency call.
  * Switch from lockscreen PIN pad to a passcode entry box that uses the
    OSK.
  * Use the default system wallpaper instead of our custom one.
  * Update look of infographi...

Read more...

Changed in unity8 (Ubuntu):
status: In Progress → Fix Released
Changed in miral:
milestone: none → 0.2
Changed in miral:
status: Fix Committed → Fix Released
Changed in xorg-server (Ubuntu):
status: Triaged → Won't Fix
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.