Skip to content

Commit 0e129cb

Browse files
committed
enhance: calculate the merge state for history commits in background thread instead of UIThread
Signed-off-by: leo <longshuang@msn.cn>
1 parent 717a7df commit 0e129cb

2 files changed

Lines changed: 13 additions & 18 deletions

File tree

src/ViewModels/Histories.cs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ public List<Models.Commit> Commits
7575
get => _commits;
7676
set
7777
{
78-
RecalculateMergeState(value);
7978
GenerateGraph(value);
8079
if (SetProperty(ref _commits, value))
8180
PostCommitsChanged();
@@ -511,23 +510,6 @@ private void PostSelectedCommitsChanged()
511510
GenerateGraph(_commits);
512511
}
513512

514-
private void RecalculateMergeState(List<Models.Commit> commits)
515-
{
516-
var merged = new HashSet<string>();
517-
518-
foreach (var commit in commits)
519-
{
520-
if (merged.Remove(commit.SHA))
521-
commit.IsMerged = true;
522-
523-
if (commit.IsMerged)
524-
{
525-
foreach (var p in commit.Parents)
526-
merged.Add(p);
527-
}
528-
}
529-
}
530-
531513
private void GenerateGraph(List<Models.Commit> commits)
532514
{
533515
var firstParentOnly = _repo.UIStates.HistoryShowFlags.HasFlag(Models.HistoryShowFlags.FirstParentOnly);

src/ViewModels/Repository.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1242,6 +1242,19 @@ public void RefreshCommits()
12421242
.GetResultAsync()
12431243
.ConfigureAwait(false);
12441244

1245+
var merged = new HashSet<string>();
1246+
foreach (var c in commits)
1247+
{
1248+
if (merged.Remove(c.SHA))
1249+
c.IsMerged = true;
1250+
1251+
if (c.IsMerged)
1252+
{
1253+
foreach (var p in c.Parents)
1254+
merged.Add(p);
1255+
}
1256+
}
1257+
12451258
Dispatcher.UIThread.Invoke(() =>
12461259
{
12471260
if (token.IsCancellationRequested)

0 commit comments

Comments
 (0)