[android] input coordinates are scaled incorrectly when an external display is connected

Bug #1498540 reported by Alberto Aguirre on 2015-09-22
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Fix Released
Alberto Aguirre
mir (Ubuntu)

Bug Description

When starting a mir server when an external display is already connected, the dispatched touch input coordinates appear to be scaled to different size than the local screen (probably the size of the external display).

Input coordinates are scaled correctly if the external display is hotplugged after starting the server.

Related branches

Alberto Aguirre (albaguirre) wrote :

The following demonstrates the issue:

sudo mir_demo_server --arw-file --display-config=sidebyside --window-manager system-compositor
mir_demo_server --host-socket /tmp/mir_socket -f /tmp/nested_mir --display-config=sidebyside
mir_demo_client_fingerpaint -m /tmp/nested_mir

Changed in mir:
importance: Undecided → High
description: updated
Changed in mir:
assignee: nobody → Alberto Aguirre (albaguirre)
Alberto Aguirre (albaguirre) wrote :

Actually it's happening with non-nested too

summary: - [android] input on a nested configuration is offset when an external
- monitor is connected
+ [android] input coordinates are scaled incorrectly when an external
+ display is connected
tags: added: android multimonitor
Alberto Aguirre (albaguirre) wrote :

The issue is mir::input::DisplayInputRegion::bounding_rectangle() as it returns a bounding region for all displays and its used to scale the touch screen coordinates.

When an external display is connected to Nexus 7, the resulting bounding region is 0, 0, 1920,1920 as the primary display is 1200, 1920 and the external display is 1920, 1080.

This does not happen when hotplugging because the android InputReader is not updated, so it uses the original bounding rectangle of 1200, 1920 when the server starts up.

description: updated
Changed in mir:
status: New → In Progress
tags: added: input
PS Jenkins bot (ps-jenkins) wrote :

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

Changed in mir:
status: In Progress → Fix Committed
Changed in mir:
status: Fix Committed → Fix Released
Launchpad Janitor (janitor) wrote :
Download full text (3.2 KiB)

This bug was fixed in the package mir - 0.17.0+15.10.20151008.2-0ubuntu1

mir (0.17.0+15.10.20151008.2-0ubuntu1) wily; urgency=medium

  [ Alexandros Frantzis ]
  * New upstream release 0.17.0 (https://launchpad.net/mir/+milestone/0.17.0)
    - ABI summary: Only servers and graphics drivers need rebuilding;
      . Mirclient ABI unchanged at 9
      . Mirserver ABI bumped to 35
      . Mircommon ABI unchanged at 5
      . Mirplatform ABI bumped to 11
      . Mirprotobuf ABI bumped to 3
      . Mirplatformgraphics ABI bumped to 6
      . Mirclientplatform ABI unchanged at 3
    - Enhancements:
      . Introduce libmircookie, a simple mechanism for a group of cooperating
        processes to hand out and verify difficult-to-forge timestamps to
        untrusted 3rd parties.
      . More refactorings to support renderers other than GL.
      . Add MirBlob to the client API - a tool for serializing and
        deserializing data.
      . Introduce a libinput based input platform, not yet used by default.
      . Provide a mechanism for the shell to send events on surface
      . Provide mir::shell::DisplayConfigurationController allowing shells
        to correctly change the display configuration, notifying clients
        as appropriate.
      . New DSO versioning guide.
      . Send events pertaining to the output a surface is currently on (dpi,
        form factor, scale) to clients.
    - Bug fixes:
      . [enhancement] XMir specific documentation should live in its own
        subsection (LP: #1200114)
      . Nested servers need cursor support (LP: #1289072)
      . Mir cursor is missing/invisible until the client sets it multiple
        times (LP: #1308133)
      . [regression] Fullscreen software surfaces (like Xmir -sw) can crash
        the Mir server (LP: #1493721)
      . [usc] Mir gives up and shuts down due to input with multimonitor qtmir
        (std::exception::what: Failure sending input event) (LP: #1496069)
      . Mouse cursor disappears upon entering the surface area of a nested
        client (LP: #1496849)
      . [android] input is not dispatched when attaching an external monitor
        (LP: #1498045)
      . [android] input coordinates are scaled incorrectly when an external
        display is connected (LP: #1498540)
      . [android] std::exception::what: error during hwc set() when unplugging
        external monitor (LP: #1498550)
      . tests do not compile without precompiled headers (LP: #1498829)
      . [android] std::exception::what: Failed to monitor fd: Operation not
        permitted when unplugging external display in a nested configuration
        (LP: #1499042)
      . Mir suddenly no longer builds since 'mesa (11.0.0-1ubuntu1) wily':
        /usr/include/EGL/eglplatform.h:100:35: fatal error:
        android/native_window.h: No such file or directory (LP: #1499134)
      . [android] various crashes when unplugging external display on a
        nested configuration (LP: #1501927)
      . Cursor becomes visible by itself when an external monitor is connected
        (LP: #1502200)
      . mesa FTBFS due to missing Requires in mirclient (LP: #1503450)

  [ CI Trai...


Changed in mir (Ubuntu):
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers