1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-23 16:12:26 +01:00

Load Bookmarks/History in a background thread

This commit is contained in:
Kris Maglione
2008-11-17 20:21:39 +00:00
parent bc66cf405c
commit 8cf49a0665
4 changed files with 7 additions and 10 deletions

View File

@@ -217,7 +217,7 @@ function Bookmarks() //{{{
{ {
// Forces a load, if not already loaded but wait 10sec // Forces a load, if not already loaded but wait 10sec
// so most tabs should be restored and the CPU should be idle again usually // so most tabs should be restored and the CPU should be idle again usually
setTimeout(function() { cache.bookmarks; }, 10000); setTimeout(function() { liberator.callFunctionInThread(null, function () cache.load()); }, 10000);
} }
}); });
@@ -587,7 +587,7 @@ function History() //{{{
{ {
// Forces a load, if not already loaded but wait 15sec // Forces a load, if not already loaded but wait 15sec
// so that we don't load it at the same time as bookmarks // so that we don't load it at the same time as bookmarks
setTimeout(function() { load(); }, 15000); setTimeout(function() { liberator.callFunctionInThread(null, load); }, 15000);
} }
}); });

View File

@@ -1335,7 +1335,7 @@ function Buffer() //{{{
var prog = args.shift(); var prog = args.shift();
args.push(url); args.push(url);
liberator.callFunctionInThread(null, io.run, [prog, args, true]); liberator.callFunctionInThread(null, io.run, prog, args, true);
} }
else else
{ {

View File

@@ -849,7 +849,7 @@ function Editor() //{{{
} }
// TODO: save return value in v:shell_error // TODO: save return value in v:shell_error
liberator.callFunctionInThread(null, io.run, [prog, args, true]); liberator.callFunctionInThread(null, io.run, prog, args, true);
if (textBox) if (textBox)
textBox.removeAttribute("readonly"); textBox.removeAttribute("readonly");

View File

@@ -1255,13 +1255,10 @@ const liberator = (function () //{{{
}, },
// be sure to call GUI related methods like alert() or dump() ONLY in the main thread // be sure to call GUI related methods like alert() or dump() ONLY in the main thread
callFunctionInThread: function (thread, func, args) callFunctionInThread: function (thread, func)
{ {
function CallbackEvent(func, args) function CallbackEvent(func, args)
{ {
if (!(args instanceof Array))
args = [];
return { return {
QueryInterface: function (iid) QueryInterface: function (iid)
{ {
@@ -1279,10 +1276,10 @@ const liberator = (function () //{{{
} }
if (!thread) if (!thread)
thread = Components.classes["@mozilla.org/thread-manager;1"].getService().newThread(0); thread = threadManager.newThread(0);
// DISPATCH_SYNC is necessary, otherwise strange things will happen // DISPATCH_SYNC is necessary, otherwise strange things will happen
thread.dispatch(new CallbackEvent(func, args), thread.DISPATCH_SYNC); thread.dispatch(new CallbackEvent(func, Array.slice(arguments, 2)), thread.DISPATCH_SYNC);
} }
}; };