diff options
Diffstat (limited to '1126.diff')
-rw-r--r-- | 1126.diff | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/1126.diff b/1126.diff new file mode 100644 index 000000000000..c7f0199bd93f --- /dev/null +++ b/1126.diff @@ -0,0 +1,87 @@ +diff --git a/js/ui/calendar.js b/js/ui/calendar.js +index 99641841768fca6ef96bb41197fce1c75040fbc2..286aac1e10ee9bd966a98a86eb10cb7210ff3ff6 100644 +--- a/js/ui/calendar.js ++++ b/js/ui/calendar.js +@@ -199,46 +199,47 @@ class DBusEventSource extends EventSourceBase { + + this._initialized = false; + this._dbusProxy = new CalendarServer(); +- this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null, (object, result) => { +- let loaded = false; +- +- try { +- this._dbusProxy.init_finish(result); +- loaded = true; +- } catch (e) { +- if (e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) { +- // Ignore timeouts and install signals as normal, because with high +- // probability the service will appear later on, and we will get a +- // NameOwnerChanged which will finish loading +- // +- // (But still _initialized to false, because the proxy does not know +- // about the HasCalendars property and would cause an exception trying +- // to read it) +- } else { +- log('Error loading calendars: %s'.format(e.message)); +- return; +- } ++ this._initProxy(); ++ } ++ ++ async _initProxy() { ++ let loaded = false; ++ ++ try { ++ await this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null); ++ loaded = true; ++ } catch (e) { ++ // Ignore timeouts and install signals as normal, because with high ++ // probability the service will appear later on, and we will get a ++ // NameOwnerChanged which will finish loading ++ // ++ // (But still _initialized to false, because the proxy does not know ++ // about the HasCalendars property and would cause an exception trying ++ // to read it) ++ if (!e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) { ++ log('Error loading calendars: %s'.format(e.message)); ++ return; + } ++ } + +- this._dbusProxy.connectSignal('Changed', this._onChanged.bind(this)); +- +- this._dbusProxy.connect('notify::g-name-owner', () => { +- if (this._dbusProxy.g_name_owner) +- this._onNameAppeared(); +- else +- this._onNameVanished(); +- }); +- +- this._dbusProxy.connect('g-properties-changed', () => { +- this.notify('has-calendars'); +- }); ++ this._dbusProxy.connectSignal('Changed', this._onChanged.bind(this)); + +- this._initialized = loaded; +- if (loaded) { +- this.notify('has-calendars'); ++ this._dbusProxy.connect('notify::g-name-owner', () => { ++ if (this._dbusProxy.g_name_owner) + this._onNameAppeared(); +- } ++ else ++ this._onNameVanished(); ++ }); ++ ++ this._dbusProxy.connect('g-properties-changed', () => { ++ this.notify('has-calendars'); + }); ++ ++ this._initialized = loaded; ++ if (loaded) { ++ this.notify('has-calendars'); ++ this._onNameAppeared(); ++ } + } + + destroy() { |