From 9e74d91474c518edf774256b45cb8eae15619754 Mon Sep 17 00:00:00 2001 From: Igor Velikorossov Date: Sun, 21 Nov 2021 16:01:56 +1100 Subject: [PATCH] squash! FormBrowse init optimizations (#9725) --- GitUI/CommandsDialogs/FormBrowse.cs | 2 +- .../RevisionGrid/RevisionGridControl.cs | 56 +++++++++++-------- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/GitUI/CommandsDialogs/FormBrowse.cs b/GitUI/CommandsDialogs/FormBrowse.cs index 8a3e14b7887..d5f9e12d008 100644 --- a/GitUI/CommandsDialogs/FormBrowse.cs +++ b/GitUI/CommandsDialogs/FormBrowse.cs @@ -582,7 +582,7 @@ private void RefreshRevisions() } Debug.Assert(RevisionGrid.CanRefresh, "Already loading revisions when running RefreshRevisions(). This could cause the commits in the grid to be loaded several times."); - RevisionGrid.ForceRefreshRevisions(); + RevisionGrid.RefreshRevisions(); InternalInitialize(); diff --git a/GitUI/UserControls/RevisionGrid/RevisionGridControl.cs b/GitUI/UserControls/RevisionGrid/RevisionGridControl.cs index 892277ee36e..6c31b6ae345 100644 --- a/GitUI/UserControls/RevisionGrid/RevisionGridControl.cs +++ b/GitUI/UserControls/RevisionGrid/RevisionGridControl.cs @@ -387,7 +387,7 @@ public void SetAndApplyPathFilter(string filter) _filterInfo.ByPathFilter = !string.IsNullOrWhiteSpace(filter); _filterInfo.PathFilter = filter; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } private void InitiateRefAction(IReadOnlyList? refs, Action action, FormQuickGitRefSelector.Action actionLabel) @@ -459,7 +459,7 @@ public void DisableContextMenu() } /// - /// Prevents revisions refreshes and stops from executing + /// Prevents revisions refreshes and stops from executing /// until is called. /// internal void SuspendRefreshRevisions() => _updatingFilters++; @@ -486,7 +486,7 @@ public void SetAndApplyBranchFilter(string filter) _filterInfo.ByBranchFilter = !string.IsNullOrWhiteSpace(newFilter); _filterInfo.BranchFilter = newFilter; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } /// @@ -502,7 +502,7 @@ public void SetAndApplyRevisionFilter(RevisionFilter filter) return; } - ForceRefreshRevisions(); + PerformRefreshRevisions(); } public override void Refresh() @@ -548,7 +548,7 @@ public new void Load() ReloadHotkeys(); } - ForceRefreshRevisions(); + PerformRefreshRevisions(); LoadCustomDifftools(); } @@ -789,11 +789,14 @@ public GitRevision GetActualRevision(GitRevision revision) return revision; } + /// + /// Refreshes the revision grid, if there are any changes reported by . + /// public void RefreshRevisions() { if (IndexWatcher.IndexChanged) { - ForceRefreshRevisions(); + PerformRefreshRevisions(); } } @@ -820,9 +823,18 @@ private void ShowLoading(bool sync = true) _loadingControlAsync.BringToFront(); } + /// + /// Indicates whether the revision grid can be refreshed, i.e. it is not currently being refreshed + /// or it is not in a middle of reconfiguration process guarded by + /// and . + /// public bool CanRefresh => !_isRefreshingRevisions && _updatingFilters == 0; - public void ForceRefreshRevisions() + /// + /// Queries git for the new set of revisions, and refreshed the grid. + /// + /// + private void PerformRefreshRevisions() { ThreadHelper.AssertOnUIThread(); @@ -1620,7 +1632,7 @@ public void ShowCurrentBranchOnly() _filterInfo.ShowCurrentBranchOnly = true; _filterInfo.ShowReflogReferences = false; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } public void ShowAllBranches() @@ -1633,7 +1645,7 @@ public void ShowAllBranches() _filterInfo.ByBranchFilter = false; _filterInfo.ShowCurrentBranchOnly = false; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } public void ShowFilteredBranches() @@ -1647,7 +1659,7 @@ public void ShowFilteredBranches() _filterInfo.ShowCurrentBranchOnly = false; _filterInfo.ShowReflogReferences = false; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } public void ShowRevisionFilterDialog() @@ -1655,7 +1667,7 @@ public void ShowRevisionFilterDialog() using FormRevisionFilter form = new(UICommands, _filterInfo); if (form.ShowDialog(ParentForm) == DialogResult.OK) { - ForceRefreshRevisions(); + PerformRefreshRevisions(); } } @@ -2018,43 +2030,43 @@ internal void ToggleShowRemoteBranches() internal void ToggleShowArtificialCommits() { AppSettings.RevisionGraphShowArtificialCommits = !AppSettings.RevisionGraphShowArtificialCommits; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } internal void ToggleAuthorDateSort() { AppSettings.SortByAuthorDate = !AppSettings.SortByAuthorDate; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } public void ToggleShowReflogReferences() { _filterInfo.ShowReflogReferences = !_filterInfo.ShowReflogReferences; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } internal void ToggleShowLatestStash() { AppSettings.ShowLatestStash = !AppSettings.ShowLatestStash; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } internal void ToggleShowSuperprojectTags() { AppSettings.ShowSuperprojectTags = !AppSettings.ShowSuperprojectTags; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } internal void ShowSuperprojectBranches_ToolStripMenuItemClick() { AppSettings.ShowSuperprojectBranches = !AppSettings.ShowSuperprojectBranches; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } internal void ShowSuperprojectRemoteBranches_ToolStripMenuItemClick() { AppSettings.ShowSuperprojectRemoteBranches = !AppSettings.ShowSuperprojectRemoteBranches; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } private void RevertCommitToolStripMenuItemClick(object sender, EventArgs e) @@ -2182,7 +2194,7 @@ private void StopBisectToolStripMenuItemClick(object sender, EventArgs e) internal void ToggleShowGitNotes() { AppSettings.ShowGitNotes = !AppSettings.ShowGitNotes; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } internal void ToggleShowMergeCommits() @@ -2197,7 +2209,7 @@ internal void ToggleShowMergeCommits() AppSettings.ShowRevisionGridGraphColumn = !AppSettings.ShowRevisionGridGraphColumn; } - ForceRefreshRevisions(); + PerformRefreshRevisions(); } internal void ToggleShowCommitBodyInRevisionGrid() @@ -2210,7 +2222,7 @@ internal void ToggleShowCommitBodyInRevisionGrid() public void ToggleShowFirstParent() { _filterInfo.ShowFirstParent = !_filterInfo.ShowFirstParent; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } internal void ToggleBetweenArtificialAndHeadCommits() @@ -2259,7 +2271,7 @@ internal void ToggleRevisionGraphColumn() if (!AppSettings.ShowMergeCommits && AppSettings.ShowRevisionGridGraphColumn) { AppSettings.ShowMergeCommits = true; - ForceRefreshRevisions(); + PerformRefreshRevisions(); } else {