aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Alexander Orzechowski <orzechowski.alexander@gmail.com>2022-03-01 00:48:22 -0500
committerLibravatar Kirill Primak <vyivel@eclair.cafe>2024-01-18 18:36:54 +0300
commited2724bd6c83ad3fdc2010b3a1e2f5967f0e8b38 (patch)
tree465419aefe089bd4396f6f48eb00f571109c89e0
parentscene_graph: Port xwayland (diff)
downloadsway-ed2724bd6c83ad3fdc2010b3a1e2f5967f0e8b38.tar.gz
sway-ed2724bd6c83ad3fdc2010b3a1e2f5967f0e8b38.tar.zst
sway-ed2724bd6c83ad3fdc2010b3a1e2f5967f0e8b38.zip
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.
-rw-r--r--sway/desktop/xwayland.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c
index 183bdba2..0967c7fc 100644
--- a/sway/desktop/xwayland.c
+++ b/sway/desktop/xwayland.c
@@ -414,17 +414,6 @@ static const struct sway_view_impl view_impl = {
414 .destroy = destroy, 414 .destroy = destroy,
415}; 415};
416 416
417static void get_geometry(struct sway_view *view, struct wlr_box *box) {
418 box->x = box->y = 0;
419 if (view->surface) {
420 box->width = view->surface->current.width;
421 box->height = view->surface->current.height;
422 } else {
423 box->width = 0;
424 box->height = 0;
425 }
426}
427
428static void handle_commit(struct wl_listener *listener, void *data) { 417static void handle_commit(struct wl_listener *listener, void *data) {
429 struct sway_xwayland_view *xwayland_view = 418 struct sway_xwayland_view *xwayland_view =
430 wl_container_of(listener, xwayland_view, commit); 419 wl_container_of(listener, xwayland_view, commit);
@@ -432,12 +421,12 @@ static void handle_commit(struct wl_listener *listener, void *data) {
432 struct wlr_xwayland_surface *xsurface = view->wlr_xwayland_surface; 421 struct wlr_xwayland_surface *xsurface = view->wlr_xwayland_surface;
433 struct wlr_surface_state *state = &xsurface->surface->current; 422 struct wlr_surface_state *state = &xsurface->surface->current;
434 423
435 struct wlr_box new_geo; 424 struct wlr_box new_geo = {0};
436 get_geometry(view, &new_geo); 425 new_geo.width = state->width;
426 new_geo.height = state->height;
427
437 bool new_size = new_geo.width != view->geometry.width || 428 bool new_size = new_geo.width != view->geometry.width ||
438 new_geo.height != view->geometry.height || 429 new_geo.height != view->geometry.height;
439 new_geo.x != view->geometry.x ||
440 new_geo.y != view->geometry.y;
441 430
442 if (new_size) { 431 if (new_size) {
443 // The client changed its surface size in this commit. For floating 432 // The client changed its surface size in this commit. For floating