git.lucas.co / cce-compositor
Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git

commitc2eb4b493a8eb07d22f223c8af9194f1126a613f
parent846185ffe9
authorIsaac Freund <[email protected]>
date2024-04-18 10:48
XdgToplevel: don't update geometry if configure inflight

 river/XdgToplevel.zig | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/river/XdgToplevel.zig b/river/XdgToplevel.zig
index 58e18c7..438794c 100644
--- a/river/XdgToplevel.zig
+++ b/river/XdgToplevel.zig
@@ -319,11 +319,11 @@ fn handleCommit(listener: *wl.Listener(*wlr.Surface), _: *wlr.Surface) void {
         };
     }
 
-    const old_geometry = toplevel.geometry;
-    toplevel.wlr_toplevel.base.getGeometry(&toplevel.geometry);
-
     switch (toplevel.configure_state) {
         .idle, .committed, .timed_out => {
+            const old_geometry = toplevel.geometry;
+            toplevel.wlr_toplevel.base.getGeometry(&toplevel.geometry);
+
             const size_changed = toplevel.geometry.width != old_geometry.width or
                 toplevel.geometry.height != old_geometry.height;
             const no_layout = view.current.output != null and view.current.output.?.layout == null;
@@ -360,6 +360,8 @@ fn handleCommit(listener: *wl.Listener(*wlr.Surface), _: *wlr.Surface) void {
         // stashed buffer from when the transaction started.
         .inflight => view.sendFrameDone(),
         .acked, .timed_out_acked => {
+            toplevel.wlr_toplevel.base.getGeometry(&toplevel.geometry);
+
             if (view.inflight.resizing) {
                 view.resizeUpdatePosition(toplevel.geometry.width, toplevel.geometry.height);
             }