Shells that inject user input events need to agree with the system compositor on the clock to use

Bug #1515515 reported by Andreas Pokorny on 2015-11-12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Fix Released
Andreas Pokorny
mir (Ubuntu)
qtmir (Ubuntu)

Bug Description

If we try to change the input platforms to also use CLOCK_MONOTONIC (or std::chrono::steady_clock) in mir we also need to change unity8. Otherwise input resampling will get confused by the large difference in time stamps and long press calculation will fail.

Mir should provide an interface to the clock used for user input event time stamps - both server and client side.

Qtmir should ensure that it uses the same clock and that dispatch within the qtEvent loop does not cause a mix of used clocks..

Related branches

Did the above with mako and krillin. The behavior is similar. It results in unity8dash not considering further touch motion input, because the touch events from unity8 are claimed to be to old.

Alexandros Frantzis (afrantzis) wrote :

In the two traces although the 'when' times are vastly different, the age times (NNN ms ago) are near. Since age = now - when, I am wondering if this could be a problem with the way we are manipulating and/or printing the timestamps.

Alexandros Frantzis (afrantzis) wrote :

Also, which clock are you using in mir::logging::input_timestamp()?

Changed in canonical-devices-system-image:
status: New → Invalid
no longer affects: canonical-devices-system-image
summary: - Monotonic clocks behave weird after a wakeup
+ Shells that inject user input events need to agree on the clock to use
summary: - Shells that inject user input events need to agree on the clock to use
+ Shells that inject user input events need to agree with the system
+ compositor on the clock to use
description: updated
no longer affects: unity8
description: updated

qtmir transparently adapts itself to the timestamps provided by mir

Changed in qtmir:
status: New → Invalid
Changed in mir:
status: New → Fix Committed
assignee: nobody → Andreas Pokorny (andreas-pokorny)
milestone: none → 0.18.0
Launchpad Janitor (janitor) wrote :
Download full text (6.3 KiB)

This bug was fixed in the package mir - 0.18.0+16.04.20151216.1-0ubuntu1

mir (0.18.0+16.04.20151216.1-0ubuntu1) xenial; urgency=medium

  [ Kevin DuBois ]
  * New upstream release 0.18.0 (https://launchpad.net/mir/+milestone/0.18.0)
    - ABI summary: Only servers need rebuilding;
      . Mirclient ABI unchanged at 9
      . Mirserver ABI bumped to 36
      . Mircommon ABI unchanged at 5
      . Mirplatform ABI unchanged at 11
      . Mirprotobuf ABI unchanged at 3
      . Mirplatformgraphics ABI bumped to 7
      . Mirclientplatform ABI unchanged at 3
      . Mirinputplatform ABI added. Current version is 4
    - Enhancements:
      . Use libinput by default, and remove the android input stack
      . Add x11 input probing
      . Add alternative buffer swapping mechanism internally, available with
        --nbuffers 0
      . Automatic searching and selection of input platforms
      . Better support for themed cursors
      . Add demo client that uses multiple buffer streams in one surface
      . Improve fingerpaint demo to use touch pressure
      . Allow for configuring cursor acceleration, scroll speed and left or
        right handed mice
      . Allow for setting a base display configuration via client api
      . Various nested server multimonitor fixes and stability improvements
      . Remove DepthId from the SurfaceStack
    - Bug fixes:
      . Unit test failures in Display.* on Android (LP: #1519276)
      . Build failure due to missing dependency of client rpc code on mir
        protobuf (LP: #1518372)
      . Test failure in
        (LP: #1517990)
      . CI test failures in various NesterServer tests (LP: #1517781)
      . FTBFS with -DMIR_PLATFORM=android (LP: #1517532)
      . Nesting Mir servers with assorted display configs causes lockup
        (LP: #1516670)
      . [testsfail] RaiseSurfaces.motion_events_dont_prevent_raise
        (LP: #1515931)
      . CI test failures in GLMark2Test (LP: #1515660)
      . Shells that inject user input events need to agree with the system
        compositor on the clock to use (LP: #1515515)
      . mircookie-dev is missing nettle-dev dependency (LP: #1514391)
      . Segmentation fault on server shutdown with mesa-kms (LP: #1513901)
      . mircookie requires nettle but libmircookie-dev doesn't depend on it
        (LP: #1513792)
      . libmircookie1 package does not list libnettle as dependency
        (LP: #1513225)
      . display configuration not reset when application exits (LP: #1511798)
      . unplugging external monitor causes nested server to throttle client
        (LP: #1511723)
      . 1/2 screen on external monitor (LP: #1511538)
      . unity-system-compositor crash, no interaction on windowed mode
        (LP: #1511095)
      . [regression] arm64/powerpc cross compile doesn't build any more
        (LP: #1510778)
      . mir_connection_get_egl_pixel_format() crashes if libEGL is loaded
        RTLD_LAZY (LP: #1510218)
      . [multimonitor] nested server surface positioning incorrect
        (LP: #1506846)
      . unity-system-compositor fails to build against lp:mir r3027


Changed in mir (Ubuntu):
status: New → Fix Released
Kevin DuBois (kdub) on 2015-12-22
Changed in mir:
status: Fix Committed → Fix Released
Michał Sawicz (saviq) on 2017-03-13
affects: qtmir → qtmir (Ubuntu)
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers