xP: avoid expensive updates/refreshes
This commit is contained in:
parent
69eccc7065
commit
ef257cd575
@ -286,7 +286,6 @@ rpcEventHandlers.set(Relay.Event.BufferLine, e => {
|
||||
// Initial sync: skip all other processing, let highlights be.
|
||||
if (bufferCurrent === undefined) {
|
||||
b.lines.push(line)
|
||||
bufferPopExcessLines(b)
|
||||
return
|
||||
}
|
||||
|
||||
@ -302,7 +301,13 @@ rpcEventHandlers.set(Relay.Event.BufferLine, e => {
|
||||
else
|
||||
b.newMessages++
|
||||
}
|
||||
bufferPopExcessLines(b)
|
||||
|
||||
// XXX: In its unkeyed diff algorithm, Mithril.js can only efficiently
|
||||
// deal with common prefixes, i.e., indefinitely growing buffers.
|
||||
// But we don't want to key all children of Buffer,
|
||||
// so only trim buffers while they are, or once they become invisible.
|
||||
if (e.bufferName != bufferCurrent)
|
||||
bufferPopExcessLines(b)
|
||||
|
||||
if (e.leakToActive) {
|
||||
let bc = buffers.get(bufferCurrent)
|
||||
@ -313,7 +318,6 @@ rpcEventHandlers.set(Relay.Event.BufferLine, e => {
|
||||
else
|
||||
bc.newMessages++
|
||||
}
|
||||
bufferPopExcessLines(bc)
|
||||
}
|
||||
|
||||
if (line.isHighlight || (!visible && !line.isUnimportant &&
|
||||
@ -370,8 +374,16 @@ rpcEventHandlers.set(Relay.Event.BufferRemove, e => {
|
||||
|
||||
rpcEventHandlers.set(Relay.Event.BufferActivate, e => {
|
||||
let old = buffers.get(bufferCurrent)
|
||||
if (old !== undefined)
|
||||
if (old !== undefined) {
|
||||
bufferResetStats(old)
|
||||
bufferPopExcessLines(old)
|
||||
}
|
||||
|
||||
// Initial sync: trim all buffers to our limit, just for consistency.
|
||||
if (bufferCurrent === undefined) {
|
||||
for (let b of buffers.values())
|
||||
bufferPopExcessLines(b)
|
||||
}
|
||||
|
||||
bufferLast = bufferCurrent
|
||||
let b = buffers.get(e.bufferName)
|
||||
|
Loading…
Reference in New Issue
Block a user