Fix the native items from the review - #893
Merged
Merged
Conversation
- Both native renderers drop decoded pictures the frame just drawn did not
use. An entry used to go only when its own path was asked for again and had
changed, so every image reviewed in a session stayed decoded until it ended.
- A macOS drag clamps to the rows the pane drew, as Linux's RowAt does, rather
than to the body's capacity. A drag past the end reached rows the managed
side holds back, so the status line counted, and a copy took, rows nobody
saw highlighted.
- The Linux queue header says "Pending (N)", as every other renderer does.
- RenderDrawData flips scissor rectangles with the draw data's height rather
than the window's, which a capture's render texture need not share.
- The Linux gutter takes one width for every row of a frame, wide enough for
the longest line number drawn. Formatted per row, a five digit number moved
its own row's text a cell right of the rows above, where the hit test did not
look.
- Every macOS export runs in an autorelease pool. With no NSApplication.run to
drain one per event, everything a frame autoreleased stayed until the
process exited.
- An app delegate turns a Dock Quit or logout into a close, which the managed
loop answers by persisting an owned queue and exiting. terminate: exited from
inside the pump, so that cleanup never ran.
- NativeResolver probes a musl RID and nothing else, as BundledViewerDirectory
does. The linux-{arch} candidate after it names the glibc build.
A top level window is held to the screen's size. The windows build agent's screen is 1024 by 768, so every canvas CanvasHost docked came out 1028 by 749 whatever was asked for: HighlightAtColumn66CoversItsGlyph drew no column 66, and WhatTheFirstWindowHoldsAtEachScale measured a 200% window at 1028 wide. Both have failed the windows job on main since #890. A child control has no such limit.
This was referenced Sep 23, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This fixes the "Native" group from
todo.md, apart from App Nap, which needs a Mac to check. The binaries are rebuilt bybuild-native(#892, fast-forwarded into this branch).ForgetUnusedPictures). macOS keeps only the paths the frame namesdraggedRowclamps to the pane's rows, as Linux'sRowAtdoespendingCountPending (N)###Pending, so the column id does not change with the countdeview_captureflips scissors with the window heightdrawData->DisplaySize.yGutterDigits, at least four), so the text start read from the first row holds for allautoreleasepoolPersistOwned.terminateCancel; the managed loop exits and persists as it does for the close buttonNativeResolverloads the glibc build on muslBundledViewerDirectory.RidsdoesNativeTests.MuslProbesItsOwnRidAndNothingElse,OtherRidsStillFallBackToTheSynthesisedRidThe Linux pixel tests compare at SSIM 0.999, which the header's extra characters stay above, so the old baselines still passed. They were recaptured on CI rather than left describing the old header. The other four came back byte-identical, so the gutter and scissor changes leave ordinary output alone.
This also fixes the
windowsjob, red onmainsince #890.FormsHeadTests.CanvasHostdocked its canvas to a form, and a top-level window is held to the screen's size: on the 1024×768 agent every canvas came out 1028×749, soHighlightAtColumn66CoversItsGlyphdrew no column 66 andWhatTheFirstWindowHoldsAtEachScalemeasured a 200% window at 1028 wide. The canvas is now sized itself, as a child control that no screen limits.A refused quit also cancels a logout that asked for it, as with GLFW apps; the viewer has exited by the time the logout is tried again.
The full solution passes locally in Release: 2,090 passed, 22 skipped.