summarylogtreecommitdiffstats
path: root/1126.diff
diff options
context:
space:
mode:
Diffstat (limited to '1126.diff')
-rw-r--r--1126.diff87
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() {