mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2026-02-10 13:45:47 +01:00
@@ -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;
|
||||
/**
|
||||
|
||||
@@ -97,54 +97,6 @@ const Util = Module("Util", XPCOM([Ci.nsIObserver, Ci.nsISupportsWeakReference])
|
||||
throw new FailedAssertion(message);
|
||||
},
|
||||
|
||||
/**
|
||||
* 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*.
|
||||
*
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user