Read the marks rather than the queue to decide the walk is done
Review of the two commits above. The queue was the walk's only record of what was left, so a mark that reached `needs_redraw` without going through `mark` -- an `on_undraw` handler is the reachable one -- would have waited for the next frame. The set is read again once the queue drains, which is what the scan it replaced did for free. `pop_last` takes the deepest entry in one step rather than reading and then removing it. The rest is comments: nine lines shorter, and the arm that takes an ordinary ask said only what it does for a declared length. Unchanged by all of it: 109 suite and 20 core tests, the four fuzzer runs (100 seeds, 400 trees at depth 5, 1000 at depth 6, 2000 at depth 4), the five reference renders and the resized `tabs`, and every counter on the diagnostics rig. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3bf22935ce
commit
34cafb6edc
3 files changed
+50
-49
No files matched your search
@@ -43,8 +43,8 @@ pub struct ActiveData {
|
||||
pub mask_region: Option<DrawRegion>,
|
||||
/// The children whose box is a part of this widget's extent rather than
|
||||
/// of its frame, and which part each was given. Moving the extent
|
||||
/// re-places them, so this widget's drawing does not have to depend on
|
||||
/// where its own drawing sits.
|
||||
/// re-places them through that part, so the drawing need not depend on
|
||||
/// where it sits.
|
||||
pub(crate) extent_children: Vec<(WidgetId, ExtentPlacement)>,
|
||||
pub children: Vec<WidgetId>,
|
||||
/// The children whose size this widget read while drawing.
|
||||
|
||||
Reference in new issue
Block a user