Repository navigation
fix(ink): responsive pen input during saves; no per-frame re-render on pan/zoom (0.3.9) - #60
Merged
Merged
Conversation
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.
Problem
After 0.3.8 (continuous documents), on iPad:
Fix
snapshotDrawing()copies committed strokes under the engine lock; serialization runs on a background thread (iOSgetBase64Data, AndroidgetBase64Data/persistEngineToFile).captureDocument(viewTag, pageCount, pageHeight)(iOS + Android) partitions the stroke copy off-thread;ContinuousDocumentCanvasuses it. No whole-document round trip through JS.resolveDocumentRenderTarget: overscanned crop reused until the view leaves it, resolution held during a gesture, nearest crisp bucket on settle, never above the native 4096 px cap.ContinuousDocumentCanvasno longer re-renders its subtree on each viewport frame.DocumentChangedDuringCaptureError/isDocumentCaptureSupersededfor superseded saves.Evidence (iPad Pro 13" M5 simulator, Release, 100-page × 200-stroke fixture — not physical-iPad numbers)
Mac engine bench, 20k strokes: serialize 23.8 ms (old main-thread work) vs snapshot copy 1.5 ms.
Tests
jest156 passed,tscclean; newdocumentRenderTargettests, capture args test.test:native:snapshot-smoke(snapshot encodes identically to live serialization; unaffected by strokes drawn while encoding off-thread). Added to CI.