Render revision graph in the background #11719
Merged
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.
Fixes #11700
Proposed changes
Have clear chains of revision grid updates (one for graph loading affecting RowCount, one for visible row range).
Get rid of several workarounds and of the mix-up of revision loading and graph-only operations.
Avoid unnecessary blocking the UI thread.
in order to avoid calling the potentially expensive
RevisionGraphRow.BuildSegmentLanes
from the UI threadRevisionDataGridView.UpdateGraphAsync
, just callRevisionGraph.CacheTo
once with cancellationbecause
CacheTo
is needed for graph rendering onlyUpdateVisibleRowRange
call on unhandledOnCellPainting
because there no need to for this additional trigger of graph update
RevisionDataGridView
: Remove specialOnScroll
handler which calledUpdate
from time to timebecause the revision graph rendering does not block the UI any longer
Screenshots
N/A
Test methodology
Merge strategy
Please do not squash merge!
✒️ I contribute this code under The Developer Certificate of Origin.