Use iteration instead of recursion when processing single frame

openid
Marcin Kulik 13 years ago
parent 4c6a5bd129
commit 12cdd612d7

@ -13,7 +13,7 @@
<div id="all">
<div id="top">
<div id="logo">
<h1>vterm.tv</h1>
<h1>t3rm.tv</h1>
</div>
<div id="menu">
<ul class="links">

@ -142,38 +142,38 @@ SP.AnsiInterpreter.prototype = {
},
feed: function(data) {
if (data.length == 0) return;
// console.log(data);
var match;
var handler;
for (var i=0; i<this.COMPILED_PATTERNS.length; i++) {
var pattern = this.COMPILED_PATTERNS[i];
match = pattern[0].exec(data);
if (match) {
handler = pattern[1];
break;
while (data.length > 0) {
match = handler = null;
for (var i=0; i<this.COMPILED_PATTERNS.length; i++) {
var pattern = this.COMPILED_PATTERNS[i];
match = pattern[0].exec(data);
if (match) {
handler = pattern[1];
break;
}
}
}
if (handler) {
if (handler) {
handler.call(this, data, match);
this.feed(data.slice(match[0].length));
handler.call(this, data, match);
data = data.slice(match[0].length)
} else {
} else {
var s = data.slice(0, 10);
var hex = '';
for (i=0; i<s.length; i++) {
hex += '0x' + s[i].charCodeAt(0).toString(16) + ',';
}
console.log("failed matching: '" + s + "' (" + hex + ")");
var s = data.slice(0, 10);
var hex = '';
for (i=0; i<s.length; i++) {
hex += '0x' + s[i].charCodeAt(0).toString(16) + ',';
}
console.log("failed matching: '" + s + "' (" + hex + ")");
throw 'bummer';
return;
throw 'bummer';
return;
}
}
}

@ -25,7 +25,7 @@ SP.Player.prototype = {
this.terminal.restartCursorBlink();
// setTimeout(function() {
setTimeout(function() {
// console.log(this.dataIndex);
// console.log(this.currentData);
this.interpreter.feed(this.currentData);
@ -39,7 +39,7 @@ SP.Player.prototype = {
if (!window.stopped) {
this.nextFrame();
}
// }.bind(this), timing[0] * 1000 * (1.0 / speed));
}.bind(this), timing[0] * 1000 * (1.0 / speed));
}
}

Loading…
Cancel
Save