remote-search: initialize the DBus proxy asynchronously
Initializing this synchronously means that we will possibly wait for the process to be auto-activated and answering to our call. If the process is already running it also might not answer immediately our request, as it might be doing sync I/O. The right thing to do is to initialize the proxy asynchronously; there are try/catch blocks in place for when the object is not available, or not properly initialized. https://bugzilla.gnome.org/show_bug.cgi?id=687491
This commit is contained in:
parent
cbc8ec6508
commit
10c104529f
@ -113,12 +113,16 @@ const RemoteSearchProvider = new Lang.Class({
|
|||||||
|
|
||||||
_init: function(title, icon, dbusName, dbusPath) {
|
_init: function(title, icon, dbusName, dbusPath) {
|
||||||
this._proxy = new SearchProviderProxy(Gio.DBus.session,
|
this._proxy = new SearchProviderProxy(Gio.DBus.session,
|
||||||
dbusName, dbusPath);
|
dbusName, dbusPath, Lang.bind(this, this._onProxyConstructed));
|
||||||
|
|
||||||
this.parent(title.toUpperCase());
|
this.parent(title.toUpperCase());
|
||||||
this._cancellable = new Gio.Cancellable();
|
this._cancellable = new Gio.Cancellable();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_onProxyConstructed: function(proxy) {
|
||||||
|
// Do nothing
|
||||||
|
},
|
||||||
|
|
||||||
createIcon: function(size, meta) {
|
createIcon: function(size, meta) {
|
||||||
if (meta['gicon']) {
|
if (meta['gicon']) {
|
||||||
return new St.Icon({ gicon: Gio.icon_new_for_string(meta['gicon']),
|
return new St.Icon({ gicon: Gio.icon_new_for_string(meta['gicon']),
|
||||||
|
Loading…
Reference in New Issue
Block a user