提交 a2c22362 编写于 作者: P Paul Mackerras

gitk: Limit how often we change the canvas scrolling region

For some unknown reason, changing the scrolling region on the canvases
provokes multiple milliseconds worth of computation in the X server,
and this can end up slowing gitk down significantly.  This works around
the problem by limiting the rate at which we update the scrolling region
after the first 100 rows to at most 2 per second.
Signed-off-by: NPaul Mackerras <paulus@samba.org>
上级 6fb735ae
......@@ -2616,6 +2616,7 @@ proc layoutmore {tmax allread} {
proc showstuff {canshow last} {
global numcommits commitrow pending_select selectedline curview
global lookingforhead mainheadid displayorder nullid selectfirst
global lastscrollset
if {$numcommits == 0} {
global phase
......@@ -2623,8 +2624,13 @@ proc showstuff {canshow last} {
allcanvs delete all
}
set r0 $numcommits
set prev $numcommits
set numcommits $canshow
setcanvscroll
set t [clock clicks -milliseconds]
if {$prev < 100 || $last || $t - $lastscrollset > 500} {
set lastscrollset $t
setcanvscroll
}
set rows [visiblerows]
set r1 [lindex $rows 1]
if {$r1 >= $canshow} {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册