gitk: Kill back-end processes on window close
When collecting commits for a rarely changed, or recently created file or directory, rev-list may work for a noticeable period of time without producing any output. Such processes don't receive SIGPIPE for a while after gitk is closed, thus becoming runaway CPU hogs. Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com> Signed-off-by: Paul Mackerras <paulus@samba.org>main
parent
c11ff120f3
commit
e2f90ee45c
35
gitk
35
gitk
|
@ -375,19 +375,33 @@ proc start_rev_list {view} {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
proc stop_instance {inst} {
|
||||||
|
global commfd leftover
|
||||||
|
|
||||||
|
set fd $commfd($inst)
|
||||||
|
catch {
|
||||||
|
set pid [pid $fd]
|
||||||
|
exec kill $pid
|
||||||
|
}
|
||||||
|
catch {close $fd}
|
||||||
|
nukefile $fd
|
||||||
|
unset commfd($inst)
|
||||||
|
unset leftover($inst)
|
||||||
|
}
|
||||||
|
|
||||||
|
proc stop_backends {} {
|
||||||
|
global commfd
|
||||||
|
|
||||||
|
foreach inst [array names commfd] {
|
||||||
|
stop_instance $inst
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
proc stop_rev_list {view} {
|
proc stop_rev_list {view} {
|
||||||
global commfd viewinstances leftover
|
global viewinstances
|
||||||
|
|
||||||
foreach inst $viewinstances($view) {
|
foreach inst $viewinstances($view) {
|
||||||
set fd $commfd($inst)
|
stop_instance $inst
|
||||||
catch {
|
|
||||||
set pid [pid $fd]
|
|
||||||
exec kill $pid
|
|
||||||
}
|
|
||||||
catch {close $fd}
|
|
||||||
nukefile $fd
|
|
||||||
unset commfd($inst)
|
|
||||||
unset leftover($inst)
|
|
||||||
}
|
}
|
||||||
set viewinstances($view) {}
|
set viewinstances($view) {}
|
||||||
}
|
}
|
||||||
|
@ -2103,6 +2117,7 @@ proc makewindow {} {
|
||||||
bind . <$M1B-minus> {incrfont -1}
|
bind . <$M1B-minus> {incrfont -1}
|
||||||
bind . <$M1B-KP_Subtract> {incrfont -1}
|
bind . <$M1B-KP_Subtract> {incrfont -1}
|
||||||
wm protocol . WM_DELETE_WINDOW doquit
|
wm protocol . WM_DELETE_WINDOW doquit
|
||||||
|
bind . <Destroy> {stop_backends}
|
||||||
bind . <Button-1> "click %W"
|
bind . <Button-1> "click %W"
|
||||||
bind $fstring <Key-Return> {dofind 1 1}
|
bind $fstring <Key-Return> {dofind 1 1}
|
||||||
bind $sha1entry <Key-Return> gotocommit
|
bind $sha1entry <Key-Return> gotocommit
|
||||||
|
|
Loading…
Reference in New Issue