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

commit6d3e02a0d4a5ea25d2b58c171d97031750766f79
parent5d1efcedf6
authorIsaac Freund <[email protected]>
date2023-03-15 11:02
build: work around zig 0.10.0 bug to fix CI

 river/View.zig | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/river/View.zig b/river/View.zig
index 9a860b7..249cf0e 100644
--- a/river/View.zig
+++ b/river/View.zig
@@ -297,17 +297,22 @@ pub fn updateCurrent(view: *Self) void {
             }
             xdg_toplevel.configure_state = .idle;
         },
-        .xwayland_view => |xwayland_view| {
-            if (view.inflight.resizing) {
-                view.resizeUpdatePosition(
-                    xwayland_view.xwayland_surface.width,
-                    xwayland_view.xwayland_surface.height,
-                );
+        // TODO(zig): this capture does not need to be mutable and the if (build_options.xwayland)
+        // is unnecessary. However, zig 0.10.0 is buggy and these work around a bug. They are both
+        // fixed in zig 0.10.1 and newer but we currently rely on 0.10.0 for FreeBSD CI.
+        .xwayland_view => |*xwayland_view| {
+            if (build_options.xwayland) {
+                if (view.inflight.resizing) {
+                    view.resizeUpdatePosition(
+                        xwayland_view.xwayland_surface.width,
+                        xwayland_view.xwayland_surface.height,
+                    );
+                }
+                view.inflight.box.width = xwayland_view.xwayland_surface.width;
+                view.inflight.box.height = xwayland_view.xwayland_surface.height;
+                view.pending.box.width = xwayland_view.xwayland_surface.width;
+                view.pending.box.height = xwayland_view.xwayland_surface.height;
             }
-            view.inflight.box.width = xwayland_view.xwayland_surface.width;
-            view.inflight.box.height = xwayland_view.xwayland_surface.height;
-            view.pending.box.width = xwayland_view.xwayland_surface.width;
-            view.pending.box.height = xwayland_view.xwayland_surface.height;
         },
         .none => {},
     }