"you've explicitly showed it by calling swapbuffers."
means swap buffers on the _client_. That's completely unrelated to swap buffers on the server (which happens on startup yes).
Mir's default compositor won't (shouldn't) show a surface until there's a buffer completed by the client. And the mechanism for ensuring this is via should_be_rendered_in().
If you're using Mir's built-in compositor then it's probably a bug in Mir. Otherwise it's a bug in whatever compositor you're using. The compositor _must_ call should_be_rendered_in() to check if it should skip rendering of a new surface (which doesn't have any buffers yet).
"you've explicitly showed it by calling swapbuffers."
means swap buffers on the _client_. That's completely unrelated to swap buffers on the server (which happens on startup yes).
Mir's default compositor won't (shouldn't) show a surface until there's a buffer completed by the client. And the mechanism for ensuring this is via should_ be_rendered_ in().
If you're using Mir's built-in compositor then it's probably a bug in Mir. Otherwise it's a bug in whatever compositor you're using. The compositor _must_ call should_ be_rendered_ in() to check if it should skip rendering of a new surface (which doesn't have any buffers yet).