[enhancement] Need a method of hiding surfaces until they are ready to draw themselves
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
Won't Fix
|
Medium
|
Alan Griffiths | ||
mir (Ubuntu) |
Won't Fix
|
Medium
|
Unassigned |
Bug Description
I've talked to several people on IRC about this (thanks Alan!), but I wanted a more persistent way to discuss this.
My desired goal is that the system compositor is able to hide session surfaces until they have content ready to display. [1]
One way to solve this would be to call hide() on the surfaces as they are created, and show() them when the first frame is posted. After experimenting with this, mir::run_mir seems to cause 4 calls to swap_buffers() due to DisplayServer instantiation (3 calls if I hide() the surface on creation). So it's hard to say when the *client* is posting buffers instead of Mir internals. And inspecting actual buffer data is hard, since that's kind of a GL implementation detail that the system compositor probably shouldn't be worrying about.
How can I implement this in the system compositor? Are the 4 calls to swap_buffers() a bug? Is there missing functionality that needs to be added? (a signal or overridable method that is emitted/called right before passing control to the client?) Or maybe I have the means now but don't know how to use it.
[1] As to *why* I want this: when using a split greeter, both the greeter session and the user session will be starting at the same time. If the user session wins the race, I do not want it shown on the screen before the greeter session is ready. So I want to hide them both until the greeter is ready to display (and in future show a little boot animation in the mean time).
summary: |
- Need a method of hiding surfaces until they are ready to draw themselves + [enhancement] Need a method of hiding surfaces until they are ready to + draw themselves |
Changed in mir (Ubuntu): | |
status: | Confirmed → Triaged |
importance: | Undecided → Medium |
tags: | added: enhacement |
Changed in mir: | |
status: | New → Triaged |
importance: | Undecided → Medium |
Changed in mir: | |
assignee: | nobody → Alan Griffiths (alan-griffiths) |
Status changed to 'Confirmed' because the bug affects multiple users.