Skip to content

Commit

Permalink
Ensure resize configuration events are not superseded. (Fixes #449)
Browse files Browse the repository at this point in the history
  • Loading branch information
AlanGriffiths committed Jul 6, 2018
1 parent 8be8853 commit e2b918f
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 5 deletions.
8 changes: 7 additions & 1 deletion src/server/frontend_wayland/basic_surface_event_sink.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,13 @@ void mf::BasicSurfaceEventSink::handle_event(EventUPtr&& event)

void mf::BasicSurfaceEventSink::handle_resize_event(MirResizeEvent const* event)
{
requested_size = {mir_resize_event_get_width(event), mir_resize_event_get_height(event)};
geometry::Size const new_size{mir_resize_event_get_width(event), mir_resize_event_get_height(event)};
handle_resize(new_size);
}

void mf::BasicSurfaceEventSink::handle_resize(mir::geometry::Size const& new_size)
{
requested_size = new_size;
if (requested_size != window_size)
window->handle_resize(requested_size);
}
Expand Down
1 change: 1 addition & 0 deletions src/server/frontend_wayland/basic_surface_event_sink.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class BasicSurfaceEventSink : public EventSink
~BasicSurfaceEventSink();

void handle_event(EventUPtr&& event) override;
void handle_resize(mir::geometry::Size const& new_size);

void handle_lifecycle_event(MirLifecycleState) override {}
void handle_display_config_change(graphics::DisplayConfiguration const&) override {}
Expand Down
2 changes: 1 addition & 1 deletion src/server/frontend_wayland/wl_surface_role.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ void WlAbstractMirWindow::create_mir_window()
auto const client_size = window->client_size();

if (client_size != params->size)
handle_resize(client_size);
sink->handle_resize(client_size);
}

geometry::Size WlAbstractMirWindow::window_size()
Expand Down
9 changes: 6 additions & 3 deletions src/server/frontend_wayland/xdg_shell_v6.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -426,9 +426,14 @@ void mf::XdgSurfaceV6::commit(mf::WlSurfaceState const& state)

void mf::XdgSurfaceV6::handle_resize(geometry::Size const& new_size)
{
auto const action = [notify_resize=notify_resize, new_size, sink=sink]
{ notify_resize(new_size, sink->state(), sink->is_active()); };

auto const serial = wl_display_next_serial(wl_client_get_display(client));
notify_resize(new_size, sink->state(), sink->is_active());
action();
zxdg_surface_v6_send_configure(resource, serial);

set_next_commit_action(action);
}

// XdgPopupV6
Expand Down Expand Up @@ -463,8 +468,6 @@ mf::XdgToplevelV6::XdgToplevelV6(struct wl_client* client, struct wl_resource* p
self->set_notify_resize(
[this](geom::Size const& new_size, MirWindowState state, bool active)
{
this->self->clear_next_commit_action();

wl_array states;
wl_array_init(&states);

Expand Down

0 comments on commit e2b918f

Please sign in to comment.