|
17 | 17 | -- them as `"3rd/stb_image.h"` — except miniaudio, which audio.cpp includes |
18 | 18 | -- BARE; see the 0.6.0 note below. |
19 | 19 | -- |
20 | | --- The build recipe below tracks upstream `CMakeLists.txt` (v0.6.0): CORE_SOURCES |
| 20 | +-- The build recipe below tracks upstream `CMakeLists.txt` (v0.6.1): CORE_SOURCES |
21 | 21 | -- plus the OpenGL backend and, for the glfw window backend, `ime_bridge.c`. |
22 | 22 | -- 0.5.5 grew a Shadertoy subsystem: render_backend.h and include/eui/types.h now |
23 | 23 | -- include core/render/shadertoy.h unconditionally, and opengl_backend.cpp calls |
|
80 | 80 | -- of tray_bridge.c (diff vs 0.5.9: comments + EOF newline only). `3rd/`, |
81 | 81 | -- deps and the backend/app-main source lists are unchanged. |
82 | 82 | -- |
| 83 | +-- 0.6.1: CORE_SOURCES and VULKAN_SOURCES are byte-identical to 0.6.0, so |
| 84 | +-- the lib's source list, deps, features and flags carry over unchanged. |
| 85 | +-- The release is window lifecycle + component fixes, and two of its pieces |
| 86 | +-- deserve notes because they LOOK like descriptor work and are not: |
| 87 | +-- * `core/window/x11_moveresize.h` is NEW but header-only: EWMH |
| 88 | +-- _NET_WM_MOVERESIZE move/resize delegation, with libX11 dlopen'd at |
| 89 | +-- RUNTIME (no link-time X11 dependency — upstream says so verbatim in |
| 90 | +-- the header, and -ldl is already on the linux ldflags for glad). |
| 91 | +-- It DOES add a compile-time `<X11/Xlib.h>` on linux, because |
| 92 | +-- window_backend.cpp includes it UNCONDITIONALLY and the header guards |
| 93 | +-- its X11 block only on `__linux__ && !__ANDROID__`. That include |
| 94 | +-- resolves through the transitive compat.glfw → compat.x11 dep chain |
| 95 | +-- (verified by the 0.6.1 build of the eui-neo member — do not add a |
| 96 | +-- direct compat.x11 dep without measuring a failure first). |
| 97 | +-- * ime_bridge.c grows a third arm, |
| 98 | +-- `#elif defined(__linux__) && defined(EUI_GLFW_X11_IME_POSITION)`, |
| 99 | +-- implementing the X11 IME candidate-window-follows-caret fix. The arm |
| 100 | +-- calls glfwSetX11InputMethodCursorPos, a function upstream's |
| 101 | +-- `scripts/patch_glfw_x11_ime.cmake` ADDS TO ITS BUNDLED glfw — the |
| 102 | +-- index builds compat.glfw, which is unpatched upstream 3.4, so the |
| 103 | +-- define is never set here and the arm is inert; our linux IME keeps |
| 104 | +-- the `#else` stub exactly as 0.6.0 did. Enabling the fix would |
| 105 | +-- require patching compat.glfw, which is out of scope for a bump. |
| 106 | +-- * ⚠️ THE ONE REAL DESCRIPTOR CHANGE. In the SDL2 backend, |
| 107 | +-- window_backend.cpp calls sendX11MoveResizeForWindow from |
| 108 | +-- beginWindowMove/beginWindowResize UNGUARDED, but the function's |
| 109 | +-- declaration sits inside `#if … && defined(SDL_VIDEO_DRIVER_X11)` — |
| 110 | +-- an upstream bug that only shows with an SDL built without its X11 |
| 111 | +-- video driver. compat.sdl2's linux config is exactly that |
| 112 | +-- (dummy+offscreen only), so the eui-neo-sdl2 member fails to compile |
| 113 | +-- on 0.6.1 (measured: 'sendX11MoveResizeForWindow' was not declared). |
| 114 | +-- The fix is a package-private shim in mcpp_eui_backends.h: define |
| 115 | +-- SDL_VIDEO_DRIVER_X11 for this package's own TUs when MCPP_FEATURE_SDL2 |
| 116 | +-- is on, waking the X11-gated block up. It can never fire at runtime |
| 117 | +-- (compat.sdl2 has no X11 driver to produce an X11 window), so every |
| 118 | +-- delegation returns false and callers keep their programmatic |
| 119 | +-- fallback — upstream's "unavailable → report failure" contract. It |
| 120 | +-- must NOT be an interface define: consumers would inherit the lie on |
| 121 | +-- every platform. |
| 122 | +-- The rest is header/app-level: transparent framebuffer |
| 123 | +-- (DslAppConfig::transparent / framebufferTransparent), beginWindowMove / |
| 124 | +-- beginWindowResize (the consumers of x11_moveresize.h), DslAppConfig |
| 125 | +-- onStart()/appId(), GLFW 3.3/3.4 macro guards (we pin 3.4), platform.cpp |
| 126 | +-- dialog-diagnostics capture (mkstemp, POSIX-guarded), dropdown/slider |
| 127 | +-- z-order and OpenGL pixel-unpack fixes. No `3rd/` pin moves. |
| 128 | +-- |
83 | 129 | -- All `mcpp` paths are GLOBS relative to the verdir; the leading `*/` absorbs |
84 | | --- the GitHub tarball's `EUI-NEO-0.6.0/` wrap layer. |
| 130 | +-- the GitHub tarball's `EUI-NEO-0.6.1/` wrap layer. |
85 | 131 | package = { |
86 | 132 | spec = "1", |
87 | 133 | namespace = "compat", |
@@ -187,6 +233,11 @@ package = { |
187 | 233 | url = "https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.6.0.tar.gz", |
188 | 234 | sha256 = "11d0725bcc6f16abbbea6052b58c6949008cf78ceaa1645002ba1b3abf9772a1", |
189 | 235 | }, |
| 236 | + -- 0.6.1: see the linux block — plain-string GLOBAL, no CN mirror. |
| 237 | + ["0.6.1"] = { |
| 238 | + url = "https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.6.1.tar.gz", |
| 239 | + sha256 = "cd0bd6bd437177db097da146fc20f4b8b01c70d0db561a6f8e26baa26dbbbf5f", |
| 240 | + }, |
190 | 241 | }, |
191 | 242 | macosx = { |
192 | 243 | ["0.5.3"] = { |
@@ -234,6 +285,11 @@ package = { |
234 | 285 | url = "https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.6.0.tar.gz", |
235 | 286 | sha256 = "11d0725bcc6f16abbbea6052b58c6949008cf78ceaa1645002ba1b3abf9772a1", |
236 | 287 | }, |
| 288 | + -- 0.6.1: see the linux block — plain-string GLOBAL, no CN mirror. |
| 289 | + ["0.6.1"] = { |
| 290 | + url = "https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.6.1.tar.gz", |
| 291 | + sha256 = "cd0bd6bd437177db097da146fc20f4b8b01c70d0db561a6f8e26baa26dbbbf5f", |
| 292 | + }, |
237 | 293 | }, |
238 | 294 | windows = { |
239 | 295 | ["0.5.3"] = { |
@@ -281,6 +337,11 @@ package = { |
281 | 337 | url = "https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.6.0.tar.gz", |
282 | 338 | sha256 = "11d0725bcc6f16abbbea6052b58c6949008cf78ceaa1645002ba1b3abf9772a1", |
283 | 339 | }, |
| 340 | + -- 0.6.1: see the linux block — plain-string GLOBAL, no CN mirror. |
| 341 | + ["0.6.1"] = { |
| 342 | + url = "https://github.com/sudoevolve/EUI-NEO/archive/refs/tags/v0.6.1.tar.gz", |
| 343 | + sha256 = "cd0bd6bd437177db097da146fc20f4b8b01c70d0db561a6f8e26baa26dbbbf5f", |
| 344 | + }, |
284 | 345 | }, |
285 | 346 | }, |
286 | 347 |
|
@@ -340,6 +401,25 @@ package = { |
340 | 401 | * the SDL2 define, which is how upstream spells it too). */ |
341 | 402 | #if defined(MCPP_FEATURE_SDL2) |
342 | 403 | # define EUI_WINDOW_BACKEND_SDL2 1 |
| 404 | +/* 0.6.1, SDL2 backend only: upstream guards |
| 405 | + * core/window/window_backend.cpp's sendX11MoveResizeForWindow DECLARATION |
| 406 | + * (and the X11ResourceApi helpers) on SDL_VIDEO_DRIVER_X11, but calls it from |
| 407 | + * beginWindowMove/beginWindowResize UNGUARDED — so the SDL2 TU fails to |
| 408 | + * compile ('sendX11MoveResizeForWindow' was not declared in this scope) when |
| 409 | + * SDL's headers do not advertise the X11 video driver. compat.sdl2's linux |
| 410 | + * config builds the dummy+offscreen drivers only, so the macro is absent |
| 411 | + * here (measured on the eui-neo-sdl2 member, 0.6.1). Defining it for THIS |
| 412 | + * PACKAGE'S OWN TUs compiles the X11-gated block in: it only wakes up when a |
| 413 | + * window genuinely is an X11 SDL window, which compat.sdl2's runtime can |
| 414 | + * never produce, so every delegation returns false and callers keep their |
| 415 | + * programmatic fallback — upstream's own "unavailable → report failure" |
| 416 | + * contract. It must NOT go in the sdl2 feature's `defines` (interface): |
| 417 | + * that would push the lie into every consumer TU on every platform. The |
| 418 | + * header needs resolve through the same transitive compat.glfw → |
| 419 | + * compat.x11 chain the 0.6.1 x11_moveresize.h include already relies on. */ |
| 420 | +# if defined(__linux__) && !defined(__ANDROID__) |
| 421 | +# define SDL_VIDEO_DRIVER_X11 1 |
| 422 | +# endif |
343 | 423 | #endif |
344 | 424 | ]==], |
345 | 425 | ["mcpp_generated/eui_neo_platform_tu.cpp"] = [==[ |
|
0 commit comments