-
Notifications
You must be signed in to change notification settings - Fork 104
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Window resize not always sent to clients #3040
Comments
OK, have traced the logic through to: void mf::WaylandSurfaceObserver::content_resized_to(ms::Surface const*, geom::Size const& content_size)
{
log_debug("mf::WaylandSurfaceObserver::content_resized_to({%d, %d})", content_size.width.as_int(), content_size.height.as_int());
run_on_wayland_thread_unless_window_destroyed(
[content_size](Impl* impl, WindowWlSurfaceRole* window)
{
log_debug("mf::WaylandSurfaceObserver::content_resized_to(...) content_size {%d, %d}, window_size {%d, %d}",
content_size.width.as_int(), content_size.height.as_int(), impl->window_size.width.as_int(), impl->window_size.height.as_int());
if (content_size != impl->window_size)
{
impl->requested_size = content_size;
window->handle_resize(std::nullopt, content_size);
}
});
} Where we drop the resize because:
Now to figure out how |
OK, the sequence of events: The client has submitted a (1280, 1024) and we have resized to (1280, 741) and sent a Then, before the client sends another buffer we resize to (1280, 1024) and don't send a After which we get (1280, 741) buffers which we interpret as a resize attempt which we ignore, but don't send a configure because we're expecting the client to eventually submit a buffer of the right size. (In response to the configure we didn't send above.) |
Failing to notify the client of a window resize is the root cause of canonical/ubuntu-frame-osk#58
Tis can be reproduced (intermittently - around 1 in 4) with:
Here's an extract from a log of the messages received by the client and the Mir log with
--window-management-trace
.Note that the only
[email protected]()
is to the smaller size of (1268, 741), and occurs before theadvise_application_zone_update updated=(0, 0, (1268, 994)), original=(0, 0, (1268, 741))
.Following the
advise_application_zone_update()
the Frame window manager correctly resizes the window tonew_size=(1268, 994)
but there is no corresponding[email protected]()
event. As a result the client continues to submit (1268, 741) buffers (which is interpreted as a resize request which is overruled by the WM)wpe-webkit-mir-kiosk.cog.log
The text was updated successfully, but these errors were encountered: