diff options
-rw-r--r-- | common/content/commandline.js | 4 | ||||
-rw-r--r-- | common/content/completion.js | 22 | ||||
-rw-r--r-- | common/content/dactyl.js | 4 | ||||
-rw-r--r-- | common/content/editor.js | 2 | ||||
-rw-r--r-- | common/content/io.js | 5 | ||||
-rw-r--r-- | common/modules/base.jsm | 18 | ||||
-rw-r--r-- | common/modules/util.jsm | 50 |
7 files changed, 11 insertions, 94 deletions
diff --git a/common/content/commandline.js b/common/content/commandline.js index b7a47c8a..8fa7309a 100644 --- a/common/content/commandline.js +++ b/common/content/commandline.js @@ -648,7 +648,7 @@ const CommandLine = Module("commandline", { * commandline.FORCE_MULTILINE - Forces the message to appear in * the MOW. */ - echo: requiresMainThread(function echo(str, highlightGroup, flags) { + echo: function echo(str, highlightGroup, flags) { // dactyl.echo uses different order of flags as it omits the highlight group, change commandline.echo argument order? --mst if (this._silent) return; @@ -694,7 +694,7 @@ const CommandLine = Module("commandline", { if (action) action.call(this, str, highlightGroup, single); - }), + }, /** * Prompt the user. Sets modes.main to COMMAND_LINE, which the user may diff --git a/common/content/completion.js b/common/content/completion.js index ddd8f1a2..365ac1fd 100644 --- a/common/content/completion.js +++ b/common/content/completion.js @@ -287,7 +287,7 @@ const CompletionContext = Class("CompletionContext", { if (this._completions) this.hasItems = this._completions.length > 0; if (this.updateAsync && !this.noUpdate) - util.callInMainThread(function () { this.onUpdate(); }, this); + this.onUpdate(); }, get createRow() this._createRow || template.completionRow, // XXX @@ -364,22 +364,6 @@ const CompletionContext = Class("CompletionContext", { set generate(arg) { this.hasItems = true; this._generate = arg; - if (this.background && this.regenerate) { - let lock = {}; - this.cache.backgroundLock = lock; - this.incomplete = true; - let thread = this.getCache("backgroundThread", util.newThread); - util.callAsync(thread, this, function () { - if (this.cache.backgroundLock != lock) - return; - let items = this.generate(); - if (this.cache.backgroundLock != lock) - return; - this.incomplete = false; - if (items != null) - this.completions = items; - }); - } }, get ignoreCase() { @@ -395,11 +379,11 @@ const CompletionContext = Class("CompletionContext", { set ignoreCase(val) this._ignoreCase = val, get items() { - if (!this.hasItems || this.backgroundLock) + if (!this.hasItems) return []; // Regenerate completions if we must - if (this.generate && !this.background) { + if (this.generate) { // XXX this.noUpdate = true; this.completions = this.generate(); diff --git a/common/content/dactyl.js b/common/content/dactyl.js index 088a4504..018f32d8 100644 --- a/common/content/dactyl.js +++ b/common/content/dactyl.js @@ -136,7 +136,7 @@ const Dactyl = Module("dactyl", { * bell may be either audible or visual depending on the value of the * 'visualbell' option. */ - beep: requiresMainThread(function () { + beep: function () { if (options["visualbell"]) { // flash the visual bell let panel = document.getElementById("dactyl-deck-bell"); @@ -156,7 +156,7 @@ const Dactyl = Module("dactyl", { let soundService = Cc["@mozilla.org/sound;1"].getService(Ci.nsISound); soundService.beep(); } - }), + }, /** * Reads a string from the system clipboard. diff --git a/common/content/editor.js b/common/content/editor.js index c00242ae..73960e85 100644 --- a/common/content/editor.js +++ b/common/content/editor.js @@ -251,7 +251,7 @@ const Editor = Module("editor", { dactyl.assert(args.length >= 1, "No editor specified"); args.push(path); - util.callInThread(null, io.run, io.expandPath(args.shift()), args, true); + io.run(io.expandPath(args.shift()), args, true); }, // TODO: clean up with 2 functions for textboxes and currentEditor? diff --git a/common/content/io.js b/common/content/io.js index f9cb098e..b23029e9 100644 --- a/common/content/io.js +++ b/common/content/io.js @@ -263,12 +263,11 @@ lookup: } let process = services.create("process"); - let isMain = services.get("threading").isMainThread; process.init(file); - process.run(blocking && !isMain, args.map(String), args.length); + process.run(false, args.map(String), args.length); try { - if (blocking && isMain) + if (blocking) while (process.isRunning) util.threadYield(false, true); } diff --git a/common/modules/base.jsm b/common/modules/base.jsm index 51b0ae35..e145d551 100644 --- a/common/modules/base.jsm +++ b/common/modules/base.jsm @@ -177,7 +177,7 @@ defineModule("base", { "call", "callable", "ctypes", "curry", "debuggerProperties", "defineModule", "endModule", "forEach", "isArray", "isGenerator", "isinstance", "isObject", "isString", "isSubclass", "iter", "iterAll", "keys", - "memoize", "properties", "requiresMainThread", "set", "update", "values", + "memoize", "properties", "set", "update", "values", "withCallerGlobal" ], use: ["services", "util"] @@ -587,22 +587,6 @@ function curry(fn, length, self, acc) { }; } -/** - * Wraps a function so that when called it will always run synchronously - * in the main thread. Return values are not preserved. - * - * @param {function} - * @returns {function} - */ -function requiresMainThread(callback) - function wrapper() { - let mainThread = services.get("threading").mainThread; - if (services.get("threading").isMainThread) - callback.apply(this, arguments); - else - mainThread.dispatch(Runnable(this, callback, arguments), mainThread.DISPATCH_NORMAL); - } - let sandbox = Cu.Sandbox(this); sandbox.__proto__ = this; /** diff --git a/common/modules/util.jsm b/common/modules/util.jsm index be3b04ad..867b517f 100644 --- a/common/modules/util.jsm +++ b/common/modules/util.jsm @@ -98,54 +98,6 @@ const Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]) }, /** - * Calls a function synchronously in the main thread. Return values are not - * preserved. - * - * @param {function} callback - * @param {object} self The this object for the call. - * @returns {function} - */ - callInMainThread: function (callback, self) { - let mainThread = services.get("threading").mainThread; - if (services.get("threading").isMainThread) - callback.call(self); - else - mainThread.dispatch(Runnable(self, callback, Array.slice(arguments, 2)), mainThread.DISPATCH_NORMAL); - }, - - /** - * Calls a function asynchronously on a new thread. - * - * @param {nsIThread} thread The thread to call the function on. If no - * thread is specified a new one is created. - * @optional - * @param {Object} self The 'this' object used when executing the - * function. - * @param {function} func The function to execute. - * - */ - callAsync: function (thread, self, func) { - thread = thread || services.get("threading").newThread(0); - thread.dispatch(Runnable(self, func, Array.slice(arguments, 3)), thread.DISPATCH_NORMAL); - }, - - /** - * Calls a function synchronously on a new thread. - * - * NOTE: Be sure to call GUI related methods like alert() or dump() - * ONLY in the main thread. - * - * @param {nsIThread} thread The thread to call the function on. If no - * thread is specified a new one is created. - * @optional - * @param {function} func The function to execute. - */ - callInThread: function (thread, func) { - thread = thread || services.get("threading").newThread(0); - thread.dispatch(Runnable(null, func, Array.slice(arguments, 2)), thread.DISPATCH_SYNC); - }, - - /** * Returns a shallow copy of *obj*. * * @param {Object} obj @@ -605,8 +557,6 @@ const Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference]) return ary; }, - newThread: function () services.get("threading").newThread(0), - /** * Converts a URI string into a URI object. * |