Unity8 not informing clients that they are not visible and thus can stop rendering
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| | Canonical System Image |
High
|
Michał Sawicz | ||
| | qtmir (Ubuntu) |
High
|
Nick Dedekind | ||
| | unity8 (Ubuntu) |
High
|
Nick Dedekind | ||
Bug Description
Currently on the phone, apps stop rendering when shell hides them, because shell also lifecycle stops the app. App isn't actually told it should stop rendering, we just SIGSTOP its process.
But some apps are not lifecycle stopped, e.g. music. So we should have unity8 tell the app to stop rendering.
This will be a multi-step process:
1. Qtubuntu
Mir has a attribute to set on surfaces to tell them they are visible/occluded: (see mir/include/
mir_surface_
This indicates these possible values:
typedef enum MirSurfaceVisib
{
mir_
mir_
} MirSurfaceVisib
On the client side (qtubuntu), you need to listen for this attribute change, and connect it to QWindowSystemIn
Note there is also a QWindowSystemIn
2. QtMir
There are methods on mir::scene::Surface to set and get the MirSurfaceAttrib attributes. I think it would make sense to use the pre-existing MirSurfaceItem:
3. Unity8
Correctly set visible=false when an application surface is occluded, and true when visible. QML has no automatic way of doing that (i.e. occlusion detection)
Related branches
- Michał Sawicz: Approve on 2015-11-05
- PS Jenkins bot: Approve (continuous-integration) on 2015-10-27
- Daniel d'Andrada: Pending requested 2015-10-27
-
Diff: 50 lines (+13/-1)2 files modifieddebian/changelog (+5/-1)
include/unity/shell/application/MirSurfaceInterface.h (+8/-0)
- Nick Dedekind (community): Abstain on 2015-11-06
- Daniel d'Andrada (community): Needs Fixing on 2015-11-05
- PS Jenkins bot: Approve (continuous-integration) on 2015-10-12
-
Diff: 151 lines (+48/-6)3 files modifiedsrc/ubuntumirclient/input.cpp (+7/-1)
src/ubuntumirclient/window.cpp (+39/-5)
src/ubuntumirclient/window.h (+2/-0)
- Daniel d'Andrada (community): Approve on 2015-10-20
- PS Jenkins bot: Needs Fixing (continuous-integration) on 2015-10-20
-
Diff: 638 lines (+294/-49)12 files modifieddebian/control (+1/-1)
src/modules/Unity/Application/mirsurface.cpp (+48/-14)
src/modules/Unity/Application/mirsurface.h (+11/-3)
src/modules/Unity/Application/mirsurfaceinterface.h (+4/-2)
src/modules/Unity/Application/mirsurfaceitem.cpp (+17/-4)
src/modules/Unity/Application/mirsurfaceitem.h (+1/-0)
tests/modules/CMakeLists.txt (+2/-2)
tests/modules/SurfaceManager/CMakeLists.txt (+6/-4)
tests/modules/SurfaceManager/mirsurface_test.cpp (+107/-0)
tests/modules/SurfaceManager/mirsurfaceitem_test.cpp (+54/-5)
tests/modules/common/fake_mirsurface.h (+42/-14)
tests/modules/common/fake_session.h (+1/-0)
- PS Jenkins bot: Needs Fixing (continuous-integration) on 2015-10-27
- Michał Sawicz: Needs Fixing on 2015-10-26
- Michael Zanetti (community): Abstain on 2015-10-21
- Daniel d'Andrada (community): Needs Fixing on 2015-10-13
-
Diff: 510 lines (+233/-35)9 files modifieddebian/control (+1/-1)
qml/Stages/DesktopStage.qml (+71/-3)
qml/Stages/PhoneStage.qml (+10/-3)
qml/Stages/TabletStage.qml (+8/-0)
tests/mocks/Unity/Application/MirSurface.cpp (+44/-17)
tests/mocks/Unity/Application/MirSurface.h (+14/-4)
tests/mocks/Unity/Application/MirSurfaceItem.cpp (+12/-2)
tests/mocks/Unity/Application/MirSurfaceItem.h (+1/-0)
tests/qmltests/Stages/tst_DesktopStage.qml (+72/-5)
- PS Jenkins bot: Needs Fixing (continuous-integration) on 2015-10-31
- Daniel d'Andrada (community): Approve on 2015-10-30
- Michael Zanetti: Pending requested 2015-10-27
- Michał Sawicz: Pending requested 2015-10-27
-
Diff: 734 lines (+290/-46)13 files modifieddebian/control (+1/-1)
qml/Stages/DesktopStage.qml (+78/-8)
qml/Stages/PhoneStage.qml (+16/-5)
qml/Stages/TabletStage.qml (+17/-1)
qml/Stages/TransformedTabletSpreadDelegate.qml (+2/-0)
tests/mocks/Unity/Application/MirSurface.cpp (+44/-17)
tests/mocks/Unity/Application/MirSurface.h (+14/-4)
tests/mocks/Unity/Application/MirSurfaceItem.cpp (+12/-2)
tests/mocks/Unity/Application/MirSurfaceItem.h (+1/-0)
tests/qmltests/Stages/tst_DesktopStage.qml (+81/-5)
tests/qmltests/Stages/tst_PhoneStage.qml (+4/-0)
tests/qmltests/Stages/tst_TabletStage.qml (+6/-1)
tests/qmltests/tst_Shell.qml (+14/-2)
- Daniel d'Andrada (community): Approve on 2016-06-21
- Unity8 CI Bot: Needs Fixing (continuous-integration) on 2016-06-14
- PS Jenkins bot: Needs Fixing (continuous-integration) on 2016-01-19
- Michael Terry: Pending requested 2016-01-19
-
Diff: 13 lines (+0/-3)1 file modifiedsrc/modules/Unity/Application/mirsurface.cpp (+0/-3)
- Daniel d'Andrada (community): Approve on 2016-06-21
- Unity8 CI Bot: Approve (continuous-integration) on 2016-06-14
- Michael Terry: Pending requested 2016-06-14
- PS Jenkins bot: Pending (continuous-integration) requested 2016-06-14
-
Diff: 44 lines (+13/-0)1 file modifiedsrc/ubuntumirclient/window.cpp (+13/-0)
| Changed in qtmir: | |
| assignee: | nobody → Mirco Müller (macslow) |
| Changed in qtubuntu: | |
| assignee: | nobody → Mirco Müller (macslow) |
| Changed in unity8 (Ubuntu): | |
| assignee: | nobody → Mirco Müller (macslow) |
| Changed in qtmir: | |
| importance: | Undecided → High |
| Changed in qtubuntu: | |
| importance: | Undecided → High |
| Changed in unity8 (Ubuntu): | |
| importance: | Undecided → High |
| Changed in qtmir: | |
| status: | New → In Progress |
| Changed in qtubuntu: | |
| status: | New → In Progress |
| Changed in unity8 (Ubuntu): | |
| status: | New → In Progress |
| Michael Zanetti (mzanetti) wrote : | #1 |
| Changed in canonical-devices-system-image: | |
| assignee: | nobody → kevin gunn (kgunn72) |
| importance: | Undecided → High |
| milestone: | none → ww46-2015 |
| status: | New → In Progress |
| no longer affects: | qtubuntu |
| Changed in qtmir: | |
| assignee: | Mirco Müller (macslow) → nobody |
| Changed in unity8 (Ubuntu): | |
| assignee: | Mirco Müller (macslow) → nobody |
| Changed in qtmir: | |
| assignee: | nobody → Nick Dedekind (nick-dedekind) |
| Changed in unity8 (Ubuntu): | |
| assignee: | nobody → Nick Dedekind (nick-dedekind) |
| Changed in canonical-devices-system-image: | |
| status: | In Progress → Fix Committed |
| Launchpad Janitor (janitor) wrote : | #2 |
This bug was fixed in the package unity8 - 8.11+16.
---------------
unity8 (8.11+16.
[ Albert Astals Cid ]
* Add an Item that proxies for old and new audio roles (LP: #1493851)
* CroppedImageMin
property "imageAspectRatio"'
* Make the scope settings list scroll to text visible area (LP:
#1499084)
* Move to importing QtQuick 2.4 & friends
* Use SDK 1.3 across all files (LP: #1503498, #1508363, #1449628)
[ Andrea Cimitan ]
* Add sharing widget to zoomable image and video playback
* Make zoomable and video playback widgets edge to edge
* Updated all 1.3 UbuntuShape to use new APIs where possible
* Use SDK 1.3 across all files (LP: #1503498, #1508363, #1449628)
[ CI Train Bot ]
* Resync trunk.
[ Christopher Lee ]
* Quick spelling fix in process control output.
[ Daniel d'Andrada ]
* Enable support for overriding application orientations based on
device type (LP: #1478637)
* Use SDK 1.3 across all files (LP: #1503498, #1508363, #1449628)
* Use SDK 1.3 across all files (LP: #1503498, #1508363, #1449628)
[ Josh Arenson ]
* Enable support for overriding application orientations based on
device type (LP: #1478637)
[ Michael Terry ]
* Avoid showing the shutdown dialog when turning on the screen if your
device is under heavy load. (LP: #1508563)
* Handle lifecycle policy exceptions ourselves, instead of letting
qtmir do it for us and allow non-Touch apps to opt-out of the Touch
lifecycle.
[ Michael Zanetti ]
* Fixes for the panel buttons (LP: #1510360, #1504269, #1431566,
#1443319)
* Use SDK 1.3 across all files (LP: #1503498, #1508363, #1449628)
[ Michał Sawicz ]
* Add missing copyright to Cursor.qml
* Enable support for overriding application orientations based on
device type (LP: #1478637)
* Support server->client visibility change to stop rendering
(lp:#1475678) (LP: #1475678)
[ Nick Dedekind ]
* Support server->client visibility change to stop rendering
(lp:#1475678) (LP: #1475678)
-- Michał Sawicz <email address hidden> Wed, 04 Nov 2015 14:58:41 +0000
| Changed in unity8 (Ubuntu): | |
| status: | In Progress → Fix Released |
| Changed in canonical-devices-system-image: | |
| status: | Fix Committed → Fix Released |
| Changed in canonical-devices-system-image: | |
| status: | Fix Released → Triaged |
| Changed in unity8 (Ubuntu): | |
| status: | Fix Released → Triaged |
| status: | Triaged → Fix Committed |
| status: | Fix Committed → In Progress |
| Changed in canonical-devices-system-image: | |
| status: | Triaged → In Progress |
| Changed in canonical-devices-system-image: | |
| milestone: | ww46-2015 → ww02-2016 |
| Changed in canonical-devices-system-image: | |
| milestone: | ww02-2016 → ww08-2016 |
| Changed in canonical-devices-system-image: | |
| assignee: | kevin gunn (kgunn72) → Michał Sawicz (saviq) |
| Changed in canonical-devices-system-image: | |
| milestone: | ww08-2016 → 11 |
| Changed in canonical-devices-system-image: | |
| milestone: | 11 → 12 |
| Selene Scriven (toykeeper) wrote : | #3 |
Subscribing so I can get notified to power-test the changes when they're available.
| Changed in canonical-devices-system-image: | |
| milestone: | 12 → 13 |
| Changed in canonical-devices-system-image: | |
| status: | In Progress → Fix Committed |
| Changed in qtmir: | |
| status: | In Progress → Fix Released |
| Changed in unity8 (Ubuntu): | |
| status: | In Progress → Fix Released |
| Changed in canonical-devices-system-image: | |
| status: | Fix Committed → Fix Released |
| affects: | qtmir → qtmir (Ubuntu) |


Should probably be added to this Qt api:
http:// doc.qt. io/qt-5/ qml-qtqml- qt.html# application- prop