diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2008-07-17 00:48:08 +0400 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2008-07-16 22:09:28 -0400 |
commit | e6131d30c21d2c308571078729dc8d2e1b746285 (patch) | |
tree | 82d860a4c372b66ec3a60bf7a809fad4c132f90b /lib | |
parent | Add options to control the search for copies in blame. (diff) | |
download | tgif-e6131d30c21d2c308571078729dc8d2e1b746285.tar.xz |
Kill the blame back-end on window close.
Currently 'git-gui blame' does not kill its back-end
process, hoping that it will die anyway when the pipe
is closed. However, in some cases the process works
for a long time without producing any output. This
behavior results in a runaway CPU hog.
Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/blame.tcl | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/blame.tcl b/lib/blame.tcl index 192505d983..2c190482df 100644 --- a/lib/blame.tcl +++ b/lib/blame.tcl @@ -326,19 +326,27 @@ constructor new {i_commit i_path} { bind $w.file_pane <Configure> \ "if {{$w.file_pane} eq {%W}} {[cb _resize %h]}" + wm protocol $top WM_DELETE_WINDOW "destroy $top" + bind $top <Destroy> [cb _kill] + _load $this {} } +method _kill {} { + if {$current_fd ne {}} { + kill_file_process $current_fd + catch {close $current_fd} + set current_fd {} + } +} + method _load {jump} { variable group_colors _hide_tooltip $this if {$total_lines != 0 || $current_fd ne {}} { - if {$current_fd ne {}} { - catch {close $current_fd} - set current_fd {} - } + _kill $this foreach i $w_columns { $i conf -state normal |