commit ed2724bd6c83ad3fdc2010b3a1e2f5967f0e8b38
parent 6e5fc4c2aafd211323c6037aa868c075852bfe15
Author: Alexander Orzechowski <orzechowski.alexander@gmail.com>
Date: Tue, 1 Mar 2022 00:48:22 -0500
xwayland: Cleanup geometry handling on commit
Instead of doing this roundabout thing where we get the surface from the
view, let's instead get it from the `wlr_surface_state` that we already
track in `handle_commit`. This makes the NULL state impossible which is
what the old `get_geometry` is checking for and generally cleans
things up a little bit.
Also don't check if the geometry x/y changed, those will always
be 0 for xwayland.
Diffstat:
1 file changed, 5 insertions(+), 16 deletions(-)
diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c
@@ -414,17 +414,6 @@ static const struct sway_view_impl view_impl = {
.destroy = destroy,
};
-static void get_geometry(struct sway_view *view, struct wlr_box *box) {
- box->x = box->y = 0;
- if (view->surface) {
- box->width = view->surface->current.width;
- box->height = view->surface->current.height;
- } else {
- box->width = 0;
- box->height = 0;
- }
-}
-
static void handle_commit(struct wl_listener *listener, void *data) {
struct sway_xwayland_view *xwayland_view =
wl_container_of(listener, xwayland_view, commit);
@@ -432,12 +421,12 @@ static void handle_commit(struct wl_listener *listener, void *data) {
struct wlr_xwayland_surface *xsurface = view->wlr_xwayland_surface;
struct wlr_surface_state *state = &xsurface->surface->current;
- struct wlr_box new_geo;
- get_geometry(view, &new_geo);
+ struct wlr_box new_geo = {0};
+ new_geo.width = state->width;
+ new_geo.height = state->height;
+
bool new_size = new_geo.width != view->geometry.width ||
- new_geo.height != view->geometry.height ||
- new_geo.x != view->geometry.x ||
- new_geo.y != view->geometry.y;
+ new_geo.height != view->geometry.height;
if (new_size) {
// The client changed its surface size in this commit. For floating