From a5c4972097f9c005c8ec3cac3148c55e66815502 Mon Sep 17 00:00:00 2001 From: foxnne Date: Fri, 9 Oct 2026 18:09:43 -0500 Subject: [PATCH] deps: pin sdl_zig fizzy-1.0.3+3.4.16-9, the Wayland frame-inset fixes SDL fizzy-3.4.16-9 fixes six problems in patch 6 (Wayland frame insets): insets lost when SDL makes a window again, an opaque window's opaque region covering its shadow, the toplevel bounds clamped by the surface rather than the frame, a hard-coded input band (now a creation property, default 8), insets published only after show, and a window shown again losing its frame. Each but the bounds clamp has an assertion that fails without its fix. fizzy's own use is unchanged. DEPENDENCIES.md records the fixes, the suite's new checks, sdl_zig's CI change, both tags, and upstream main's own version of the feature to move to at the next rebase. Part of #280. Co-Authored-By: Claude Opus 5.5 --- build.zig.zon | 4 ++-- docs/DEPENDENCIES.md | 42 +++++++++++++++++++++++++++++++++++------- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/build.zig.zon b/build.zig.zon index 95bbb3d3f..2ff4d8196 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -33,8 +33,8 @@ // `fizzy` branch, building fizzyedit/SDL's `fizzy-3.4` — see docs/DEPENDENCIES.md. Plugins // draw through dvui's proxy backend and never link SDL. .sdl = .{ - .url = "https://github.com/fizzyedit/sdl_zig/archive/a02dda8d4c12bfd6132f24f4d00bcdbc8a274b52.tar.gz", - .hash = "sdl-1.0.3+3.4.16-i4QD0SIUqgAsokLeE08dWLGiUN4cL3ZDOM94hrJ-DTam", + .url = "https://github.com/fizzyedit/sdl_zig/archive/5e41c70e21f673d5b2ac6af2a3cba7e7aaa68489.tar.gz", + .hash = "sdl-1.0.3+3.4.16-i4QD0UwUqgA04UDxXFbmfpE1e2Oo6wwX0LJuIMG82mis", .lazy = true, }, .icons = .{ diff --git a/docs/DEPENDENCIES.md b/docs/DEPENDENCIES.md index 09a6152aa..33a184cf1 100644 --- a/docs/DEPENDENCIES.md +++ b/docs/DEPENDENCIES.md @@ -147,8 +147,29 @@ Fizzy adapts to two upstream behaviours rather than patching them: and a band of up to 8 units round it, the min/max sizes are the frame's, and popups anchor to the parent's frame; maximized, tiled or fullscreen the insets are zero. The insets in effect are published as `SDL_PROP_WINDOW_WAYLAND_FRAME_INSET_*_NUMBER`. libdecor windows are - untouched. Fizzy draws its Linux window's shadow in them (`linux_titlebar.zig`). Upstream: - worth proposing; a public API would want a setter as well. + untouched. Fizzy draws its Linux window's shadow in them (`linux_titlebar.zig`). + + Fixes on top, each to squash into 6 at the next rebase (#280 C2b, after the suite's test + commit `1eb90b7`): + - `9258288`: a window SDL makes again (`SDL_RecreateWindow`, e.g. for an OpenGL renderer) + keeps its insets. They are kept in the window's own properties, which outlive its data. + - `0ca75f2`: an opaque window's opaque region is its frame, not the shadow round it. + - `0426af9`: the toplevel bounds the compositor sends (in frame units) are widened by the + insets before the clamp. Weston never sends bounds, so no test shows this. + - `91b7a29`: the input band is + `SDL_PROP_WINDOW_CREATE_WAYLAND_FRAME_INPUT_MARGIN_NUMBER` (default 8; 0 = only the frame + takes input), still capped at each side's inset. + - `883f5c8`: the insets are published from creation (zero for libdecor), and the first + configure corrects them for a window that comes up maximized, tiled or fullscreen. + - `011a2dc`: a window hidden and shown again is framed again. Hiding drops the xdg_surface and + its geometry, so the applied insets now reset on hide. + + Upstream `main` (not `release-3.4.x`) gained its own version on 2026-09-24 (`5d7167cb`, with + `86b89cff` and `dff05080`): opted into with `SDL_PROP_WINDOW_CREATE_WAYLAND_ENABLE_INSETS_BOOLEAN`, + the insets set as `SDL_PROP_WINDOW_WAYLAND_BORDER_INSET_*_NUMBER` window properties and read at + each configure. It has no input band, the same opaque-region, bounds and recreate problems, + and it keeps insets on tiled windows. At the rebase onto a release that has it, move + `linux_titlebar.zig` to upstream's API, and keep only what upstream lacks as patches on top. 7. **Windows: draw each step of a live resize before the loop goes on** (`ee721bf`). `SDL_HINT_VIDEO_WIN_SYNC_LIVE_RESIZE` (default off): inside the modal size loop, @@ -180,16 +201,18 @@ it. So far: (`WAYLAND_DEBUG`) under headless weston, a floating window's geometry is its frame, its input region the frame plus up to 8 units, its min/max sizes the frame's, and the published insets what was asked; maximized and fullscreen the insets are zero; a popup anchors to the parent's - frame. Headless weston can't show a floating size the compositor chooses, tiled states, - fractional scale or xdg-decoration. What it found still to fix before proposing patch 6 is in - #280 (C2b). + frame. Since `1eb90b7` it also checks the fixes above: insets kept across a recreate, the + opaque region, the input-margin property, the props before show, and framing after hide and + show. Headless weston can't show a floating size the compositor chooses, toplevel bounds, tiled + states, fractional scale or xdg-decoration. sdl_zig builds and runs them (`zig build test-fizzy`, below). A suite moves through a rebase with its patch, and goes upstream in that patch's PR. Tags: `fizzy-3.4.16-1` → `a4b021c`; `fizzy-3.4.16-2` → `3d6e802`; `fizzy-3.4.16-3` → `8455e58`; `fizzy-3.4.16-4` → `2d6efde`; `fizzy-3.4.16-5` → `ee721bf`; `fizzy-3.4.16-6` → `4839ede`; -`fizzy-3.4.16-7` → `36dda37`; `fizzy-3.4.16-8` → `a518aaf`, what sdl_zig pins now. +`fizzy-3.4.16-7` → `36dda37`; `fizzy-3.4.16-8` → `a518aaf`; `fizzy-3.4.16-9` → `011a2dc`, what +sdl_zig pins now. ## fizzyedit/sdl_zig @@ -225,11 +248,16 @@ Tags: `fizzy-3.4.16-1` → `a4b021c`; `fizzy-3.4.16-2` → `3d6e802`; `fizzy-3.4 9. **Run the Wayland frame-insets suite under headless weston** (`a02dda8`): CI job `test-fizzy-wayland-insets` at output scale 1 and 2, in `ubuntu:26.04`. The pin moves to SDL's `fizzy-3.4.16-8`; squash it into 1 at the next rebase. +10. **OpenGL ES and a timeout for the frame-insets suite** (`ed4ffea`): the recreate test attaches + an OpenGL ES renderer, and the suite's jobs stop after 20 minutes, writing progress to stderr + so a hang shows where it stopped. Then the pin moves to SDL's `fizzy-3.4.16-9` (`5e41c70`); + squash the pin into 1 at the next rebase. Tags: `fizzy-1.0.3+3.4.16-1` → `60114a1`; `fizzy-1.0.3+3.4.16-2` → `5950760`; `fizzy-1.0.3+3.4.16-3` → `48468b7`; `fizzy-1.0.3+3.4.16-4` → `58abe38`; `fizzy-1.0.3+3.4.16-5` → `8e88dba`; `fizzy-1.0.3+3.4.16-6` → `0f6a2a8`; -`fizzy-1.0.3+3.4.16-7` → `264af2a`; `fizzy-1.0.3+3.4.16-8` → `a02dda8`, the commit fizzy pins now. +`fizzy-1.0.3+3.4.16-7` → `264af2a`; `fizzy-1.0.3+3.4.16-8` → `a02dda8`; +`fizzy-1.0.3+3.4.16-9` → `5e41c70`, the commit fizzy pins now. ## Bumping