refactor worker creation. Fix issue #245
This commit is contained in:
parent
0c1245091e
commit
2f906bb2c6
1 changed files with 29 additions and 15 deletions
|
|
@ -439,15 +439,11 @@ var EditSession = function(text, mode) {
|
||||||
if (this.$useWorker == useWorker)
|
if (this.$useWorker == useWorker)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (useWorker && !this.$worker && window.Worker)
|
|
||||||
this.$worker = mode.createWorker(this);
|
|
||||||
|
|
||||||
if (!useWorker && this.$worker) {
|
|
||||||
this.$worker.terminate();
|
|
||||||
this.$worker = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$useWorker = useWorker;
|
this.$useWorker = useWorker;
|
||||||
|
|
||||||
|
this.$stopWorker();
|
||||||
|
if (useWorker)
|
||||||
|
this.$startWorker();
|
||||||
};
|
};
|
||||||
|
|
||||||
this.getUseWorker = function() {
|
this.getUseWorker = function() {
|
||||||
|
|
@ -463,14 +459,12 @@ var EditSession = function(text, mode) {
|
||||||
this.$mode = null;
|
this.$mode = null;
|
||||||
this.setMode = function(mode) {
|
this.setMode = function(mode) {
|
||||||
if (this.$mode === mode) return;
|
if (this.$mode === mode) return;
|
||||||
|
this.$mode = mode;
|
||||||
|
|
||||||
if (this.$worker)
|
this.$stopWorker();
|
||||||
this.$worker.terminate();
|
|
||||||
|
|
||||||
if (this.$useWorker && typeof Worker !== "undefined" && !require.noWorker)
|
if (this.$useWorker)
|
||||||
this.$worker = mode.createWorker(this);
|
this.$startWorker();
|
||||||
else
|
|
||||||
this.$worker = null;
|
|
||||||
|
|
||||||
var tokenizer = mode.getTokenizer();
|
var tokenizer = mode.getTokenizer();
|
||||||
|
|
||||||
|
|
@ -492,10 +486,30 @@ var EditSession = function(text, mode) {
|
||||||
this.bgTokenizer.setDocument(this.getDocument());
|
this.bgTokenizer.setDocument(this.getDocument());
|
||||||
this.bgTokenizer.start(0);
|
this.bgTokenizer.start(0);
|
||||||
|
|
||||||
this.$mode = mode;
|
|
||||||
this._dispatchEvent("changeMode");
|
this._dispatchEvent("changeMode");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.$stopWorker = function() {
|
||||||
|
if (this.$worker)
|
||||||
|
this.$worker.terminate();
|
||||||
|
|
||||||
|
this.$worker = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.$startWorker = function() {
|
||||||
|
if (typeof Worker !== "undefined" && !require.noWorker) {
|
||||||
|
try {
|
||||||
|
this.$worker = this.$mode.createWorker(this);
|
||||||
|
} catch (e) {
|
||||||
|
console.log("Could not load worker");
|
||||||
|
console.log(e);
|
||||||
|
this.$worker = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this.$worker = null;
|
||||||
|
};
|
||||||
|
|
||||||
this.getMode = function() {
|
this.getMode = function() {
|
||||||
return this.$mode;
|
return this.$mode;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue