summaryrefslogtreecommitdiffstats
path: root/pkg/gui/files_panel.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2022-01-27 20:10:25 +1100
committerJesse Duffield <jessedduffield@gmail.com>2022-01-27 21:25:04 +1100
commit84a19920559f940b391ab3f19686e2e85039e083 (patch)
tree479b356263b51bd93831c8e98f479d9b8b722a2c /pkg/gui/files_panel.go
parent7f85bf556322eb5996b63182bbf775db68987bae (diff)
better locking of merge panel state
Diffstat (limited to 'pkg/gui/files_panel.go')
-rw-r--r--pkg/gui/files_panel.go34
1 files changed, 5 insertions, 29 deletions
diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go
index d0b4d736c..fa8cfa79c 100644
--- a/pkg/gui/files_panel.go
+++ b/pkg/gui/files_panel.go
@@ -56,18 +56,16 @@ func (gui *Gui) filesRenderToMain() error {
}
if node.File != nil && node.File.HasInlineMergeConflicts {
- hasConflicts, err := gui.setMergeState(node.File.Name)
+ ok, err := gui.setConflictsAndRenderWithLock(node.GetPath(), false)
if err != nil {
return err
}
-
- // if we don't have conflicts we'll fall through and show the diff
- if hasConflicts {
- return gui.renderConflicts(false)
+ if ok {
+ return nil
}
}
- gui.resetMergeState()
+ gui.resetMergeStateWithLock()
cmdObj := gui.Git.WorkingTree.WorktreeFileDiffCmdObj(node, false, !node.GetHasUnstagedChanges() && node.GetHasStagedChanges(), gui.State.IgnoreWhitespaceInDiffView)
@@ -143,28 +141,6 @@ func (gui *Gui) refreshFilesAndSubmodules() error {
return nil
}
-func (gui *Gui) refreshMergeState() error {
- gui.State.Panels.Merging.Lock()
- defer gui.State.Panels.Merging.Unlock()
-
- if gui.currentContext().GetKey() != MAIN_MERGING_CONTEXT_KEY {
- return nil
- }
-
- hasConflicts, err := gui.setMergeState(gui.State.Panels.Merging.GetPath())
- if err != nil {
- return gui.surfaceError(err)
- }
- if hasConflicts {
- _ = gui.renderConflicts(true)
- } else {
- _ = gui.escapeMerge()
- return nil
- }
-
- return nil
-}
-
// specific functions
func (gui *Gui) stagedFiles() []*models.File {
@@ -959,7 +935,7 @@ func (gui *Gui) switchToMerge() error {
gui.takeOverMergeConflictScrolling()
if gui.State.Panels.Merging.GetPath() != file.Name {
- hasConflicts, err := gui.setMergeState(file.Name)
+ hasConflicts, err := gui.setMergeStateWithLock(file.Name)
if err != nil {
return err
}