Hello community, here is the log from the commit of package polari for openSUSE:Factory checked in at 2016-10-22 13:04:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/polari (Old) and /work/SRC/openSUSE:Factory/.polari.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "polari" Changes: -------- --- /work/SRC/openSUSE:Factory/polari/polari.changes 2016-10-18 10:29:15.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.polari.new/polari.changes 2016-10-22 13:04:22.000000000 +0200 @@ -1,0 +2,9 @@ +Wed Oct 19 17:13:19 UTC 2016 - [email protected] + +- Add polari-run-as-background-service.patch: Fix launching through + mission-control (bgo#770749, boo#1001553). When other Telepathy + clients (e.g. Empathy) query dbus for potential channel handlers + polari failed to startup and reply. This resulted in Empathy + waiting for the timeout before opening any chat window. + +------------------------------------------------------------------- New: ---- polari-run-as-background-service.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ polari.spec ++++++ --- /var/tmp/diff_new_pack.t5E9Wt/_old 2016-10-22 13:04:23.000000000 +0200 +++ /var/tmp/diff_new_pack.t5E9Wt/_new 2016-10-22 13:04:23.000000000 +0200 @@ -26,6 +26,8 @@ Url: http://wiki.gnome.org/Apps/Polari Source0: http://download.gnome.org/sources/polari/3.22/%{name}-%{version}.tar.xz Source99: polari-rpmlintrc +# PATCH-FIX-UPSTREAM polari-run-as-background-service.patch bgo#770749 boo#1001553 [email protected] -- Fix launching through mission-control +Patch0: polari-run-as-background-service.patch BuildRequires: gjs >= 1.45.0 BuildRequires: hicolor-icon-theme BuildRequires: intltool >= 0.50.0 @@ -60,6 +62,7 @@ %lang_package %prep %setup -q +%patch0 -p1 %build %configure ++++++ polari-run-as-background-service.patch ++++++ >From 5be7218ae3b040849c6ba136709cfacad5a833b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= <[email protected]> Date: Thu, 14 Jul 2016 16:04:43 +0200 Subject: [PATCH 1/4] app: Stop using a private property to track the main window We will eventually allow running without open windows, and possibly with multiple windows as well, at which point using a private property to track the main window gets in the way more than it helps, so adapt the code to either use the :active-window or iterate over all windows as appropriate. https://bugzilla.gnome.org/show_bug.cgi?id=770749 --- src/application.js | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/application.js b/src/application.js index 898bff0..c6d19e2 100644 --- a/src/application.js +++ b/src/application.js @@ -30,7 +30,6 @@ const Application = new Lang.Class({ flags: Gio.ApplicationFlags.HANDLES_OPEN }); GLib.set_application_name('Polari'); - this._window = null; this._retryData = new Map(); }, @@ -153,17 +152,17 @@ const Application = new Lang.Class({ this._telepathyClient = new TelepathyClient.TelepathyClient(params); } - if (!this._window) { - this._window = new MainWindow.MainWindow({ application: this }); - this._window.connect('destroy', - () => { this.emit('prepare-shutdown'); }); - this._window.connect('notify::active-room', - () => { this.emit('room-focus-changed'); }); - this._window.connect('notify::is-active', - () => { this.emit('room-focus-changed'); }); - this._window.show_all(); + if (!this.active_window) { + let window = new MainWindow.MainWindow({ application: this }); + window.connect('destroy', + () => { this.emit('prepare-shutdown'); }); + window.connect('notify::active-room', + () => { this.emit('room-focus-changed'); }); + window.connect('notify::is-active', + () => { this.emit('room-focus-changed'); }); + window.show_all(); } - this._window.present(); + this.active_window.present(); }, vfunc_window_added: function(window) { @@ -294,13 +293,13 @@ const Application = new Lang.Class({ }, _onShowJoinDialog: function() { - this._window.showJoinRoomDialog(); + this.active_window.showJoinRoomDialog(); }, _maybePresent: function(time) { let [present, ] = Tp.user_action_time_should_present(time); - if (!this._window || present) + if (!this.active_window || present) this.activate(); }, @@ -417,7 +416,7 @@ const Application = new Lang.Class({ }, _onLeaveCurrentRoom: function() { - let room = this._window.active_room; + let room = this.active_window.active_room; if (!room) return; let action = this.lookup_action('leave-room'); @@ -463,7 +462,7 @@ const Application = new Lang.Class({ let accountPath = parameter.deep_unpack(); let account = this._accountsMonitor.lookupAccount(accountPath); let dialog = new Connections.ConnectionProperties(account); - dialog.transient_for = this._window; + dialog.transient_for = this.active_window; dialog.connect('response', Lang.bind(this, function(w, response) { w.destroy(); @@ -509,7 +508,7 @@ const Application = new Lang.Class({ website_label: _("Learn more about Polari"), website: 'https://wiki.gnome.org/Apps/Polari', - transient_for: this._window, + transient_for: this.active_window, modal: true }; @@ -522,6 +521,6 @@ const Application = new Lang.Class({ }, _onQuit: function() { - this._window.destroy(); + this.get_windows().reverse().forEach(w => { w.destroy(); }); } }); -- 2.10.1 >From 7cf5e101496dc864809aa0e39d516642db982a6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= <[email protected]> Date: Sat, 6 Aug 2016 05:26:55 +0200 Subject: [PATCH 2/4] telepathyClient: Hold application while running The application runtime is currently tied to having a window, however it can be useful to have only the telepathy client running in the background. In order to support this, hold the application while the client is running. https://bugzilla.gnome.org/show_bug.cgi?id=770749 --- src/telepathyClient.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/telepathyClient.js b/src/telepathyClient.js index 5a9d504..9b0c89c 100644 --- a/src/telepathyClient.js +++ b/src/telepathyClient.js @@ -119,7 +119,9 @@ const TelepathyClient = new Lang.Class({ this._app.connect('prepare-shutdown', () => { [...this._pendingRequests.values()].forEach(r => { r.cancel(); }); [...this._pendingBotPasswords.keys()].forEach(a => { this._discardIdentifyPassword(a); }); + this._app.release(); }); + this._app.hold(); this._pendingBotPasswords = new Map(); this._pendingRequests = new Map(); -- 2.10.1 >From 0f67348375f9b71393c1dccc6db84cb6e8b40ad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= <[email protected]> Date: Sat, 6 Aug 2016 04:56:14 +0200 Subject: [PATCH 3/4] app: Factor out 'start-client' action The telepathy client is currently started if necessary when the application is activated. However as there are cases for running the client without activating the application (read: creating a window), it makes sense to split out the code. While for now a separate function would do just fine, we'll eventually want the functionality available even when Polari is not running, so add a corresponding action. https://bugzilla.gnome.org/show_bug.cgi?id=770749 --- src/application.js | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/application.js b/src/application.js index c6d19e2..9925d67 100644 --- a/src/application.js +++ b/src/application.js @@ -81,6 +81,8 @@ const Application = new Lang.Class({ parameter_type: GLib.VariantType.new('o') }, { name: 'discard-identify-password', parameter_type: GLib.VariantType.new('o') }, + { name: 'start-client', + activate: Lang.bind(this, this._onStartClient) }, { name: 'help', activate: Lang.bind(this, this._onShowHelp), accels: ['F1'] }, @@ -143,14 +145,7 @@ const Application = new Lang.Class({ }, vfunc_activate: function() { - if (!this._telepathyClient) { - let params = { - name: 'Polari', - account_manager: this._accountsMonitor.accountManager, - uniquify_name: false - }; - this._telepathyClient = new TelepathyClient.TelepathyClient(params); - } + this.activate_action('start-client', null); if (!this.active_window) { let window = new MainWindow.MainWindow({ application: this }); @@ -470,6 +465,18 @@ const Application = new Lang.Class({ dialog.show(); }, + _onStartClient: function() { + if (this._telepathyClient) + return; + + let params = { + name: 'Polari', + account_manager: this._accountsMonitor.accountManager, + uniquify_name: false + }; + this._telepathyClient = new TelepathyClient.TelepathyClient(params); + }, + _onShowHelp: function() { Utils.openURL('help:org.gnome.Polari', Gtk.get_current_event_time()); }, -- 2.10.1 >From 39dc313fcafad55d9d9f62b954566b146cd3a3df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= <[email protected]> Date: Sat, 6 Aug 2016 05:04:29 +0200 Subject: [PATCH 4/4] data: Fix telepathy client service We register Polari as a Telepathy client so mission-control can launch us to handle channel requests even when not running. However as the specified command does not actually start the telepathy client, the request will fail after a timeout in this case. Fix this by exposing the newly-added 'start-client' action on the command line and use it to launch the telepathy service. https://bugzilla.gnome.org/show_bug.cgi?id=770749 --- ...org.freedesktop.Telepathy.Client.Polari.service.in | 2 +- src/application.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/data/org.freedesktop.Telepathy.Client.Polari.service.in b/data/org.freedesktop.Telepathy.Client.Polari.service.in index 741036d..e5d9aee 100644 --- a/data/org.freedesktop.Telepathy.Client.Polari.service.in +++ b/data/org.freedesktop.Telepathy.Client.Polari.service.in @@ -1,3 +1,3 @@ [D-BUS Service] Name=org.freedesktop.Telepathy.Client.Polari -Exec=@bindir@/polari --gapplication-service +Exec=@bindir@/polari --start-client diff --git a/src/application.js b/src/application.js index 9925d67..090569d 100644 --- a/src/application.js +++ b/src/application.js @@ -31,6 +31,25 @@ const Application = new Lang.Class({ GLib.set_application_name('Polari'); this._retryData = new Map(); + + this.add_main_option('start-client', 0, + GLib.OptionFlags.NONE, GLib.OptionArg.NONE, + _("Start Telephathy client"), null); + this.connect('handle-local-options', (o, dict) => { + try { + this.register(null); + } catch(e) { + return 1; + } + + let v = dict.lookup_value('start-client', null); + if (v && v.get_boolean()) { + this.activate_action('start-client', null); + return 0; + } + + return -1; + }); }, isRoomFocused: function(room) { -- 2.10.1
