[enhancement] Allow a server to halt rendering in a client session
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Fix Released
|
Undecided
|
Unassigned | ||
mir (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
== Use Case ==
The scene: This problem occurs during boot with a split greeter and a user session both being launched at roughly the same time. USC shows the boot animation until both the greeter and user session are ready to render, since it doesn't want the greeter to appear without a user session ready for the user to jump into.
The problem: The greeter has a cute little "fade in" animation it does, that lasts about a second. If the greeter wins the startup race, it will start rendering its animation (in the background, since USC isn't showing it yet). Which might complete by the time the user session is available which makes USC show the greeter to the user finally. So sometimes on boot, the user never sees the fade in animation and the greeter just abruptly appears.
== Attempted Solutions ==
In 0.1.8, neither hide() nor lifecycle events seemed to do the trick. And with the new non-blocking rendering work, I imagine we're actually making it harder to do this.
== Desired Solution ==
I'd like to be able to have the USC tell the greeter session to chill out if it appears first. No frames get rendered or lost. It just stops processing. I think Qt does the sensible thing if Mir stops giving it buffers, right?
description: | updated |
summary: |
- Allow a server to halt rendering in a client session + [enhancement] Allow a server to halt rendering in a client session |
tags: | added: enhancement |
note: we need to solve this in the context of mir0.1.9, from the responses we've received in testing I would suspect non-blocking eglswap to land first, which would make the use of hide() irrelevant. According to mterry the time is on the order of a second, so the raciness of the sidechannel to halt rendering wouldn't be good enough.
allowing the shell (or in this case, a "shell like thing" the greeter) to directly halt a session to coordinate a transition seems like a sensible control to add.