[gnome-shell] status/nightLight: Use promise to initialize proxy
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] status/nightLight: Use promise to initialize proxy
- Date: Mon, 1 Aug 2022 12:38:12 +0000 (UTC)
commit 80e4ae7d7f996361b77f1e20d1553d3c2a7d1cc2
Author: Florian Müllner <fmuellner gnome org>
Date: Sun Jul 24 20:12:54 2022 +0200
status/nightLight: Use promise to initialize proxy
There's no good reason for waiting for the proxy to be initialized
to connect signals. In fact, connecting the signal beforehand
ensures that the handler is in place when the proxy fetches the
properties, so we don't have to call the handler explicitly.
That in turn will allow us in a follow-up to rely on the signal
parameters to only process changed properties.
To achieve that, construct the proxy manually, and then initialize
it asynchronously in a Promise.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2391>
js/ui/status/nightLight.js | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
---
diff --git a/js/ui/status/nightLight.js b/js/ui/status/nightLight.js
index c595c3da02..109fe67912 100644
--- a/js/ui/status/nightLight.js
+++ b/js/ui/status/nightLight.js
@@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported Indicator */
-const { Gio, GObject } = imports.gi;
+const {Gio, GLib, GObject} = imports.gi;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
@@ -13,7 +13,7 @@ const BUS_NAME = 'org.gnome.SettingsDaemon.Color';
const OBJECT_PATH = '/org/gnome/SettingsDaemon/Color';
const ColorInterface = loadInterfaceXML('org.gnome.SettingsDaemon.Color');
-const ColorProxy = Gio.DBusProxy.makeProxyWrapper(ColorInterface);
+const colorInfo = Gio.DBusInterfaceInfo.new_for_xml(ColorInterface);
var Indicator = GObject.registerClass(
class Indicator extends PanelMenu.SystemIndicator {
@@ -22,16 +22,17 @@ class Indicator extends PanelMenu.SystemIndicator {
this._indicator = this._addIndicator();
this._indicator.icon_name = 'night-light-symbolic';
- this._proxy = new ColorProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH,
- (proxy, error) => {
- if (error) {
- log(error.message);
- return;
- }
- this._proxy.connect('g-properties-changed',
- this._sync.bind(this));
- this._sync();
- });
+
+ this._proxy = new Gio.DBusProxy({
+ g_connection: Gio.DBus.session,
+ g_name: BUS_NAME,
+ g_object_path: OBJECT_PATH,
+ g_interface_name: colorInfo.name,
+ g_interface_info: colorInfo,
+ });
+ this._proxy.connect('g-properties-changed', () => this._sync());
+ this._proxy.init_async(GLib.PRIORITY_DEFAULT, null)
+ .catch(e => console.error(e.message));
this._item = new PopupMenu.PopupSubMenuMenuItem("", true);
this._item.icon.icon_name = 'night-light-symbolic';
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]