diff --git a/.builds/alpine.yml b/.builds/alpine.yml index 29be9f6..ca47a9d 100644 --- a/.builds/alpine.yml +++ b/.builds/alpine.yml @@ -40,16 +40,17 @@ tasks: sudo ninja -C build/ install cd .. - wget -nv https://ziglang.org/download/0.13.0/zig-linux-x86_64-0.13.0.tar.xz + # Eat Github's resources rather than the Zig Software Foundation's resources! + wget -nv https://github.com/ifreund/zig-tarball-mirror/releases/download/0.13.0/zig-linux-x86_64-0.13.0.tar.xz tar xf zig-linux-x86_64-0.13.0.tar.xz sudo mv zig-linux-x86_64-0.13.0/zig /usr/bin/ sudo mv zig-linux-x86_64-0.13.0/lib /usr/lib/zig - build: | cd river - zig build + zig build --summary all - build_xwayland: | cd river - zig build -Dxwayland + zig build --summary all -Dxwayland - fmt: | cd river zig fmt --check river/ diff --git a/.builds/archlinux.yml b/.builds/archlinux.yml index 5025899..7e94459 100644 --- a/.builds/archlinux.yml +++ b/.builds/archlinux.yml @@ -38,16 +38,17 @@ tasks: sudo ninja -C build/ install cd .. - wget -nv https://ziglang.org/download/0.13.0/zig-linux-x86_64-0.13.0.tar.xz + # Eat Github's resources rather than the Zig Software Foundation's resources! + wget -nv https://github.com/ifreund/zig-tarball-mirror/releases/download/0.13.0/zig-linux-x86_64-0.13.0.tar.xz tar xf zig-linux-x86_64-0.13.0.tar.xz sudo mv zig-linux-x86_64-0.13.0/zig /usr/bin/ sudo mv zig-linux-x86_64-0.13.0/lib /usr/lib/zig - build: | cd river - zig build + zig build --summary all - build_xwayland: | cd river - zig build -Dxwayland + zig build --summary all -Dxwayland - fmt: | cd river zig fmt --check river/ diff --git a/.builds/freebsd.yml b/.builds/freebsd.yml new file mode 100644 index 0000000..eeb1d1b --- /dev/null +++ b/.builds/freebsd.yml @@ -0,0 +1,62 @@ +image: freebsd/latest +packages: + - devel/evdev-proto + - devel/libevdev + - devel/libepoll-shim + - devel/libudev-devd + - devel/meson + - devel/pkgconf + - graphics/mesa-libs + - graphics/wayland-protocols + - misc/hwdata + - x11/libX11 + - x11/libinput + - x11/libxcb + - x11/libxkbcommon + - x11/pixman + - x11/xcb-util-errors + - x11/xcb-util-renderutil + - x11/xcb-util-wm + - x11-servers/xwayland + - security/ca_root_nss + - sysutils/seatd + - sysutils/libdisplay-info + - gmake + - scdoc + - wget +sources: + - https://codeberg.org/river/river + - https://gitlab.freedesktop.org/wayland/wayland.git + - https://gitlab.freedesktop.org/wlroots/wlroots.git +tasks: + - install_deps: | + cd wayland + git checkout 1.22.0 + meson setup build -Ddocumentation=false -Dtests=false --prefix /usr + sudo ninja -C build install + cd .. + + cd wlroots + git checkout 0.17.2 + meson setup build --auto-features=enabled -Drenderers=gles2 -Dexamples=false \ + -Dwerror=false -Db_ndebug=false --prefix /usr + sudo ninja -C build/ install + cd .. + + # Eat Github's resources rather than the Zig Software Foundation's resources! + wget -nv https://github.com/ifreund/zig-tarball-mirror/releases/download/0.13.0/zig-freebsd-x86_64-0.13.0.tar.xz + tar xf zig-freebsd-x86_64-0.13.0.tar.xz + sudo mv zig-freebsd-x86_64-0.13.0/zig /usr/bin/ + sudo mv zig-freebsd-x86_64-0.13.0/lib /usr/lib/zig + - build: | + cd river + zig build --summary all + - build_xwayland: | + cd river + zig build --summary all -Dxwayland + - fmt: | + cd river + zig fmt --check river/ + zig fmt --check riverctl/ + zig fmt --check rivertile/ + zig fmt --check build.zig diff --git a/river/LayerSurface.zig b/river/LayerSurface.zig index 03d243d..81dfe57 100644 --- a/river/LayerSurface.zig +++ b/river/LayerSurface.zig @@ -55,7 +55,6 @@ pub fn create(wlr_layer_surface: *wlr.LayerSurfaceV1) error{OutOfMemory}!void { .scene_layer_surface = try layer_tree.createSceneLayerSurfaceV1(wlr_layer_surface), .popup_tree = try output.layers.popups.createSceneTree(), }; - wlr_layer_surface.data = @intFromPtr(layer_surface); try SceneNodeData.attach(&layer_surface.scene_layer_surface.tree.node, .{ .layer_surface = layer_surface }); try SceneNodeData.attach(&layer_surface.popup_tree.node, .{ .layer_surface = layer_surface }); @@ -93,6 +92,9 @@ fn handleDestroy(listener: *wl.Listener(*wlr.LayerSurfaceV1), _: *wlr.LayerSurfa layer_surface.popup_tree.node.destroy(); + // The wlr_surface may outlive the wlr_layer_surface so we must clean up the user data. + layer_surface.wlr_layer_surface.surface.data = 0; + util.gpa.destroy(layer_surface); } diff --git a/river/LockSurface.zig b/river/LockSurface.zig index c3cd384..60f0aa8 100644 --- a/river/LockSurface.zig +++ b/river/LockSurface.zig @@ -85,6 +85,9 @@ pub fn destroy(lock_surface: *LockSurface) void { lock_surface.map.link.remove(); lock_surface.surface_destroy.link.remove(); + // The wlr_surface may outlive the wlr_lock_surface so we must clean up the user data. + lock_surface.wlr_lock_surface.surface.data = 0; + util.gpa.destroy(lock_surface); } diff --git a/river/Root.zig b/river/Root.zig index 6174753..e906982 100644 --- a/river/Root.zig +++ b/river/Root.zig @@ -416,6 +416,9 @@ pub fn activateOutput(root: *Root, output: *Output) void { } assert(root.fallback_pending.focus_stack.empty()); assert(root.fallback_pending.wm_stack.empty()); + + // Enforce map-to-output configuration for the newly active output. + server.input_manager.reconfigureDevices(); } /// Trigger asynchronous application of pending state for all outputs and views.