git-gui: Start UI with the index locked.
authorShawn O. Pearce <spearce@spearce.org>
Sat, 18 Nov 2006 08:31:25 +0000 (03:31 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Sat, 18 Nov 2006 08:31:25 +0000 (03:31 -0500)
Because we immediately start a rescan operation, but do so slightly
delayed (by 1 ms, to let the UI show before we start forking off
git processes), we can't let the user try to activate any of the
restricted GUI commands before the 1 ms timer expires and we kick
off the rescan.

So now we lock the index before we enter the Tk event loop, ensuring
that it is impossible for the user to inject a conflicting UI event
before our rescan can begin.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui

diff --git a/git-gui b/git-gui
index c2b4dd70676103db57dea0fa748b7cad0ddfa0c2..4850e78ab0e4203d5f9a7a37e8f0287b3de2defc 100755 (executable)
--- a/git-gui
+++ b/git-gui
@@ -211,7 +211,7 @@ proc lock_index {type} {
                        uplevel #0 $w disabled
                }
                return 1
-       } elseif {$index_lock_type eq {begin-update} && $type eq {update}} {
+       } elseif {$index_lock_type eq "begin-$type"} {
                set index_lock_type $type
                return 1
        }
@@ -2906,4 +2906,5 @@ if {!$single_commit} {
        populate_pull_menu .mbar.pull
        populate_push_menu .mbar.push
 }
+lock_index begin-read
 after 1 do_rescan