Sam Sung
fa5568dcdc
Creating or freeing a frame or region re-derives only what it touches ( #915 )
...
Any write that changed the layout graph's roster (a frame or region created, freed, re-owned or re-pointed) made the next resolve derive the whole graph: about 1.35 ms for one `CreateTexture` or `CreateFrame` on the stock UI, against 0.05 ms for a no-op.
A write now names the nodes it touched, and the resolve re-derives just those in the cached graph: a joining node is added with its edges, a leaving one is removed and its dependents seeded, a staying one has its edges and inputs re-synced. The full derivation stays the fallback. A region's owner and an art change are now layout inputs that name their region. Verify now also compares the graph itself.
A randomized test checks rects and graph against a scratch solve after every batch of creates, frees, re-owns and re-anchors. `CreateTexture` now costs 0.14 ms, `CreateFrame` 0.15 ms, a backdrop rebuild 0.22 ms.
Fixes #903
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-12 01:05:23 +07:00
..
2026-09-29 02:30:40 +07:00
2026-10-11 23:02:34 +07:00
2026-10-12 01:05:23 +07:00
2026-09-25 01:58:49 +07:00
2026-10-12 01:05:23 +07:00
2026-10-12 01:05:23 +07:00
2026-10-05 22:08:33 +07:00
2026-10-12 01:05:23 +07:00
2026-10-12 01:05:23 +07:00
2026-10-12 01:05:23 +07:00
2026-10-12 01:05:23 +07:00
2026-10-11 23:33:17 +07:00
2026-09-25 17:26:43 +07:00
2026-09-25 17:26:43 +07:00
2026-10-08 08:09:41 +07:00
2026-09-25 01:58:49 +07:00
2026-09-29 03:19:56 +07:00
2026-09-28 10:11:40 +07:00
2026-09-25 01:58:49 +07:00
2026-09-25 01:58:49 +07:00
2026-10-11 19:12:21 +07:00
2026-09-28 11:40:53 +07:00
2026-10-12 01:05:23 +07:00
2026-09-29 01:44:52 +07:00
2026-09-25 01:58:49 +07:00
2026-09-29 15:53:20 +07:00
2026-09-25 01:58:49 +07:00
2026-09-25 01:58:49 +07:00
2026-10-11 23:02:34 +07:00
2026-09-25 01:58:49 +07:00
2026-10-12 01:05:23 +07:00
2026-09-29 21:11:47 +07:00
2026-09-25 01:58:49 +07:00
2026-09-25 17:01:02 +07:00
2026-09-29 03:19:56 +07:00
2026-10-02 09:23:08 +07:00
2026-09-28 15:09:27 +07:00
2026-09-25 01:58:49 +07:00
2026-09-25 17:26:43 +07:00
2026-10-11 19:12:21 +07:00
2026-09-25 01:58:49 +07:00
2026-09-29 02:30:40 +07:00
2026-10-12 01:05:23 +07:00
2026-10-12 01:05:23 +07:00
2026-09-25 17:26:43 +07:00
2026-10-11 23:02:34 +07:00
2026-09-29 01:21:17 +07:00
2026-10-11 23:02:34 +07:00
2026-09-29 10:09:02 +07:00
2026-09-25 01:58:49 +07:00
2026-09-25 01:58:49 +07:00
2026-09-25 01:58:49 +07:00
2026-10-12 01:05:23 +07:00
2026-10-11 19:12:21 +07:00
2026-10-11 23:10:33 +07:00
2026-09-25 01:58:49 +07:00
2026-09-30 18:37:30 +07:00
2026-09-25 01:58:49 +07:00
2026-09-28 22:12:45 +07:00
2026-09-25 01:58:49 +07:00
2026-09-29 01:44:52 +07:00
2026-09-25 17:26:43 +07:00
2026-09-25 01:58:49 +07:00
2026-09-29 10:51:21 +07:00
2026-09-30 10:20:16 +07:00
2026-09-25 01:58:49 +07:00
2026-09-29 03:19:56 +07:00
2026-09-25 17:26:43 +07:00
2026-09-25 01:58:49 +07:00
2026-09-29 10:51:21 +07:00
2026-10-11 19:12:21 +07:00
2026-10-12 01:05:23 +07:00
2026-10-12 01:05:23 +07:00
2026-10-11 23:02:34 +07:00
2026-10-12 01:05:23 +07:00
2026-09-25 17:01:02 +07:00
2026-09-29 03:19:56 +07:00
2026-09-29 03:19:56 +07:00
2026-10-01 07:38:38 +07:00
2026-10-11 23:02:34 +07:00
2026-10-09 13:17:23 +07:00
2026-10-11 22:20:26 +07:00
2026-10-12 01:05:23 +07:00
2026-10-12 00:25:14 +07:00
2026-10-12 01:05:23 +07:00
2026-09-25 01:58:49 +07:00
2026-10-12 01:05:23 +07:00
2026-09-29 02:30:40 +07:00
2026-09-30 11:49:14 +07:00
2026-09-29 03:19:56 +07:00
2026-10-11 22:37:01 +07:00
2026-10-08 08:09:41 +07:00
2026-09-29 01:44:52 +07:00
2026-09-25 01:58:49 +07:00
2026-10-12 01:05:23 +07:00
2026-09-26 08:57:47 +07:00
2026-09-25 01:58:49 +07:00
2026-09-25 01:58:49 +07:00
2026-10-12 01:05:23 +07:00
2026-10-09 11:38:06 +07:00
2026-09-29 02:30:40 +07:00
2026-09-25 17:26:43 +07:00
2026-10-11 19:12:21 +07:00
2026-10-12 01:05:23 +07:00
2026-09-25 17:26:43 +07:00
2026-09-29 01:44:52 +07:00
2026-10-02 13:45:16 +07:00
2026-09-25 01:58:49 +07:00
2026-10-12 01:05:23 +07:00
2026-10-11 19:12:21 +07:00
2026-09-25 01:58:49 +07:00
2026-09-25 01:58:49 +07:00
2026-10-12 01:05:23 +07:00
2026-10-11 23:02:34 +07:00
2026-10-12 01:05:23 +07:00
2026-10-12 00:25:14 +07:00
2026-10-11 23:33:17 +07:00
2026-10-11 23:33:17 +07:00
2026-09-29 01:44:52 +07:00
2026-09-25 01:58:49 +07:00
2026-10-11 23:10:33 +07:00
2026-09-25 01:58:49 +07:00
2026-10-09 13:17:23 +07:00
2026-10-12 00:25:14 +07:00
2026-09-28 22:12:45 +07:00
2026-10-11 22:37:01 +07:00
2026-09-25 01:58:49 +07:00
2026-09-29 19:08:28 +07:00
2026-09-25 01:58:49 +07:00
2026-10-08 11:24:25 +07:00
2026-09-25 01:58:49 +07:00
2026-09-25 01:58:49 +07:00
2026-10-08 08:53:16 +07:00