[gnome-shell] systemActions: Create SensorProxy unconditionally
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] systemActions: Create SensorProxy unconditionally
- Date: Thu, 8 Aug 2019 12:02:08 +0000 (UTC)
commit 928b49705ffad93845a71648b0ad2ca9874fa8cc
Author: Florian Müllner <fmuellner gnome org>
Date: Sat Jun 15 16:31:53 2019 +0200
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/</<@resource:///org/gnome/gjs/modules/overrides/Gio.js:243:21
Address this by creating the proxy unconditionally instead of monitoring
the bus name, and using the g-name-owner property to determine whether
iio-sensor-proxy is active.
https://gitlab.gnome.org/GNOME/gnome-shell/issues/1357
js/misc/systemActions.js | 37 ++++++++++++++++---------------------
1 file changed, 16 insertions(+), 21 deletions(-)
---
diff --git a/js/misc/systemActions.js b/js/misc/systemActions.js
index 7ab200a455..d86935f4d1 100644
--- a/js/misc/systemActions.js
+++ b/js/misc/systemActions.js
@@ -174,13 +174,21 @@ const SystemActions = GObject.registerClass({
});
Main.layoutManager.connect('monitors-changed',
() => 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();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]