[gnome-shell-extensions/gnome-3-26] places-menu: Don't force dispose() of uninitialized proxies
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell-extensions/gnome-3-26] places-menu: Don't force dispose() of uninitialized proxies
- Date: Thu, 18 Jan 2018 12:25:57 +0000 (UTC)
commit 61594afd687bf5883cc39fa79c5fbdb0d4cc9eda
Author: Florian Müllner <fmuellner gnome org>
Date: Wed Jan 17 21:57:49 2018 +0100
places-menu: Don't force dispose() of uninitialized proxies
Trying to dispose a proxy object before it has been properly
initialized triggers an "uncatchable exception", which gjs
treats as a fatal error since commit c7bdcaab4. We only have
anything to clean up once the proxy is initialized anyway, so
don't force dispose() before that.
https://gitlab.gnome.org/GNOME/gnome-shell-extensions/issues/44
extensions/places-menu/placeDisplay.js | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
---
diff --git a/extensions/places-menu/placeDisplay.js b/extensions/places-menu/placeDisplay.js
index ba316bf..9647d63 100644
--- a/extensions/places-menu/placeDisplay.js
+++ b/extensions/places-menu/placeDisplay.js
@@ -136,17 +136,18 @@ const RootInfo = new Lang.Class({
_init: function() {
this.parent('devices', Gio.File.new_for_path('/'), _("Computer"));
- this._proxy = new Hostname1(Gio.DBus.system,
- 'org.freedesktop.hostname1',
- '/org/freedesktop/hostname1',
- Lang.bind(this, function(obj, error) {
- if (error)
- return;
-
- this._proxy.connect('g-properties-changed',
- Lang.bind(this, this._propertiesChanged));
- this._propertiesChanged(obj);
- }));
+ new Hostname1(Gio.DBus.system,
+ 'org.freedesktop.hostname1',
+ '/org/freedesktop/hostname1',
+ Lang.bind(this, function(obj, error) {
+ if (error)
+ return;
+
+ this._proxy = obj;
+ this._proxy.connect('g-properties-changed',
+ Lang.bind(this, this._propertiesChanged));
+ this._propertiesChanged(obj);
+ }));
},
getIcon: function() {
@@ -163,7 +164,10 @@ const RootInfo = new Lang.Class({
},
destroy: function() {
- this._proxy.run_dispose();
+ if (this._proxy) {
+ this._proxy.run_dispose();
+ this._proxy = null;
+ }
this.parent();
}
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]