From 928b49705ffad93845a71648b0ad2ca9874fa8cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sat, 15 Jun 2019 16:31:53 +0200 Subject: [PATCH] systemActions: Create SensorProxy unconditionally When plugging in a device with sensors that are unsupported by iio-sensor-proxy, the proxy may quit so fast that the name disappears from the bus before we get to construct the SensorProxy in response to the name-appeared handler, resulting in the following warning: JS ERROR: TypeError: this._sensorProxy is null _sensorProxyAppeared/this._sensorProxy<@resource:///org/gnome/shell/misc/systemActions.js:217:17 _makeProxyWrapper/ this._updateOrientationLock()); - Gio.DBus.system.watch_name(SENSOR_BUS_NAME, - Gio.BusNameWatcherFlags.NONE, - () => this._sensorProxyAppeared(), - () => { - this._sensorProxy = null; - this._updateOrientationLock(); - }); + this._sensorProxy = new SensorProxy(Gio.DBus.system, + SENSOR_BUS_NAME, + SENSOR_OBJECT_PATH, + (proxy, error) => { + if (error) + log(error.message); + }, + null, + Gio.DBusProxyFlags.DO_NOT_AUTO_START); + this._sensorProxy.connect('g-properties-changed', () => { + this._updateOrientationLock(); + }); + this._sensorProxy.connect('notify::g-name-owner', () => { + this._updateOrientationLock(); + }); this._updateOrientationLock(); this._updateOrientationLockIcon(); @@ -223,22 +231,9 @@ const SystemActions = GObject.registerClass({ return this._actions.get(LOCK_ORIENTATION_ACTION_ID).iconName; } - _sensorProxyAppeared() { - this._sensorProxy = new SensorProxy(Gio.DBus.system, SENSOR_BUS_NAME, SENSOR_OBJECT_PATH, - (proxy, error) => { - if (error) { - log(error.message); - return; - } - this._sensorProxy.connect('g-properties-changed', - () => this._updateOrientationLock()); - this._updateOrientationLock(); - }); - } - _updateOrientationLock() { let available = false; - if (this._sensorProxy) + if (this._sensorProxy.g_name_owner) available = this._sensorProxy.HasAccelerometer && this._monitorManager.get_is_builtin_display_on();