bgTokenizer worker should not redraw unnecessarily

This commit is contained in:
nightwing 2013-06-13 21:56:52 +04:00
commit 069bbda6a6

View file

@ -68,29 +68,37 @@ var BackgroundTokenizer = function(tokenizer, editor) {
if (!self.running) { return; }
var workerStart = new Date();
var startLine = self.currentLine;
var currentLine = self.currentLine;
var endLine = -1;
var doc = self.doc;
var processedLines = 0;
while (self.lines[currentLine])
currentLine++;
var startLine = currentLine;
var len = doc.getLength();
while (self.currentLine < len) {
self.$tokenizeRow(self.currentLine);
while (self.lines[self.currentLine])
self.currentLine++;
var processedLines = 0;
self.running = false;
while (currentLine < len) {
self.$tokenizeRow(currentLine);
endLine = currentLine;
do {
currentLine++;
} while (self.lines[currentLine]);
// only check every 5 lines
processedLines ++;
if ((processedLines % 5 == 0) && (new Date() - workerStart) > 20) {
self.fireUpdateEvent(startLine, self.currentLine-1);
if ((processedLines % 5 == 0) && (new Date() - workerStart) > 20) {
self.running = setTimeout(self.$worker, 20);
self.currentLine = currentLine;
return;
}
}
self.running = false;
self.fireUpdateEvent(startLine, len - 1);
self.currentLine = currentLine;
if (startLine <= endLine)
self.fireUpdateEvent(startLine, endLine);
};
};