The problem seems to be that MultiThreadedCompositor (unity-system-compositor) unconditionally recomposes on restart: compose_on_start = true;
This means the user is guaranteed to see an old frame on restart because we've allowed no time for clients (included nested servers) to provide any new frames.
We should probably just sleep for a second or so in MultiThreadedCompositor on restart. That will allow clients time to provide a new frame (as soon as they can). And then only if no clients have provided a new frame after that delay should MultiThreadedCompositor force a recompose itself.
Let me rephrase that...
The problem seems to be that MultiThreadedCo mpositor (unity- system- compositor) unconditionally recomposes on restart:
compose_ on_start = true;
This means the user is guaranteed to see an old frame on restart because we've allowed no time for clients (included nested servers) to provide any new frames.
We should probably just sleep for a second or so in MultiThreadedCo mpositor on restart. That will allow clients time to provide a new frame (as soon as they can). And then only if no clients have provided a new frame after that delay should MultiThreadedCo mpositor force a recompose itself.