Merge lp:~gerboland/qtubuntu/surface-visible-hidden-side-channel into lp:qtubuntu
Status: | Merged |
---|---|
Merged at revision: | 219 |
Proposed branch: | lp:~gerboland/qtubuntu/surface-visible-hidden-side-channel |
Merge into: | lp:qtubuntu |
Diff against target: |
135 lines (+54/-5) 3 files modified
src/platforms/ubuntu/ubuntucommon/integration.cc (+10/-1) src/platforms/ubuntu/ubuntucommon/window.cc (+40/-4) src/platforms/ubuntu/ubuntucommon/window.h (+4/-0) |
To merge this branch: | bzr merge lp:~gerboland/qtubuntu/surface-visible-hidden-side-channel |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
PS Jenkins bot | continuous-integration | Approve | |
Ubuntu Phablet Team | Pending | ||
Review via email: mp+215884@code.launchpad.net |
Commit message
Lifecycle events emit expose events to safely stop & resume the renderer threads.
We don't use hide/show directly as hide causes Qt to stop the renderer, but then release the GL context and its resources. Expose events just stop & resume the renderer without altering the context.
Description of the change
The Qt5.2 blocking at eglSwapBuffers fix is to never block, but to stop clients rendering continually, we use a side-channel to notify clients that their surfaces are hidden and they can stop rendering, and when they can resume.
* Is your branch in sync with latest trunk (e.g. bzr pull lp:trunk -> no changes)
Y
* Did you build your software in a clean sbuild/pbuilder chroot or ppa?
Y
* Did you build your software in a clean sbuild/pbuilder armhf chroot or ppa?
Y
* Has a 5 minute exploratory testing run been executed on N4?
Y
* If you changed the packaging (debian), did you subscribe a core-dev to this MP?
N/A
* What components might get impacted by your changes?
Any app that renders
* Have you requested review by the teams of these owning components?
No, this is very low level component shared with all Qt apps on touch, so if one is broken, all would be.
To test, fetch this file and save on the device: people. canonical. com/~gerboland/ dateTime. qml
http://
Run it with this command (with shell unlocked):
QSG_RENDER_TIMING=1 qmlscene dateTime.qml file_hint= /usr/share/ applications/ address- book-app. desktop
--desktop_
You should see the time printed on screen, and being printed on your
console once per second. You'll also see rendering statistics once per frame.
Now hit your power key. You should see that the render statistics stop,
yet you still get the time printed on your console. (note lifecycle
doesn't apply to manually started apps).
Hit the power key again, and unlock the greeter. Rendering should resume
immediately.