Repository navigation
Conversation
kean
force-pushed
the
fix/pipeline-task-wiring
branch
from
September 26, 2026 20:39
2fbf2ad to
b0b3111
Compare
kean
force-pushed
the
fix/pipeline-task-wiring
branch
4 times, most recently
from
November 1, 2026 17:22
923d0b3 to
3392c32
Compare
The invalidation and the start of a new task reach the pipeline actor in no particular order, so a task created after invalidate() returned could start before the actor learned about the invalidation. The flag is now recorded under the task-ID lock before invalidate() returns and read by the task creation.
kean
force-pushed
the
fix/pipeline-task-wiring
branch
from
November 3, 2026 00:51
3392c32 to
2cca05d
Compare
This branch has not been deployed
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.
Four fixes in the pipeline and the task engine, one commit each.
prefersIncrementalDeliveryon aDataLoadershared with another pipeline, so a pipeline derived from a progressive one's configuration turned the increments off for it and it stopped producing previews. The pipeline now only ever turns the flag on for progressive decoding and never writesfalse, which also leaves a loader the app configured by hand alone.invalidate()returned could still succeed wheninvalidate()was called from a lower-QoS thread: both reach the pipeline actor in unstructured hops, and the task's start could overtake the invalidation.invalidate()now records the flag under the existing task-ID lock before it returns, and the task creation reads it in the same lock acquisition it already takes for the ID.AsyncTask.operationunconditionally when it finished, dropping the handle to the final decode that had replaced it, so cancelling the image task or changing its priority no longer reached the final decode. The handle is now left alone when the finishing operation was cancelled.TaskLoadImagehas the same pattern for processing and decompression; it is left for the change that owns that file..skipDataLoadingQueuewas ignored forImageRequest(id:image:):loadAsyncImagealways went throughdataLoadingQueue, unlike the URL andImageRequest(id:data:)paths. It now runs the closure in aTaskof its own, cancelled throughonCancelledlike the data-closure path.The
imageTaskCreatedwiring fix moved to #1086.