bgTokenizer worker should not redraw unnecessarily
This commit is contained in:
parent
fa13f377e1
commit
069bbda6a6
1 changed files with 20 additions and 12 deletions
|
|
@ -68,29 +68,37 @@ var BackgroundTokenizer = function(tokenizer, editor) {
|
||||||
if (!self.running) { return; }
|
if (!self.running) { return; }
|
||||||
|
|
||||||
var workerStart = new Date();
|
var workerStart = new Date();
|
||||||
var startLine = self.currentLine;
|
var currentLine = self.currentLine;
|
||||||
|
var endLine = -1;
|
||||||
var doc = self.doc;
|
var doc = self.doc;
|
||||||
|
|
||||||
var processedLines = 0;
|
while (self.lines[currentLine])
|
||||||
|
currentLine++;
|
||||||
|
|
||||||
|
var startLine = currentLine;
|
||||||
|
|
||||||
var len = doc.getLength();
|
var len = doc.getLength();
|
||||||
while (self.currentLine < len) {
|
var processedLines = 0;
|
||||||
self.$tokenizeRow(self.currentLine);
|
self.running = false;
|
||||||
while (self.lines[self.currentLine])
|
while (currentLine < len) {
|
||||||
self.currentLine++;
|
self.$tokenizeRow(currentLine);
|
||||||
|
endLine = currentLine;
|
||||||
|
do {
|
||||||
|
currentLine++;
|
||||||
|
} while (self.lines[currentLine]);
|
||||||
|
|
||||||
// only check every 5 lines
|
// only check every 5 lines
|
||||||
processedLines ++;
|
processedLines ++;
|
||||||
if ((processedLines % 5 == 0) && (new Date() - workerStart) > 20) {
|
if ((processedLines % 5 == 0) && (new Date() - workerStart) > 20) {
|
||||||
self.fireUpdateEvent(startLine, self.currentLine-1);
|
|
||||||
self.running = setTimeout(self.$worker, 20);
|
self.running = setTimeout(self.$worker, 20);
|
||||||
|
self.currentLine = currentLine;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
self.currentLine = currentLine;
|
||||||
|
|
||||||
self.running = false;
|
if (startLine <= endLine)
|
||||||
|
self.fireUpdateEvent(startLine, endLine);
|
||||||
self.fireUpdateEvent(startLine, len - 1);
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue