From 68fa547b0645cde72ad3d20fc193790320af5fcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20H=C3=A4cker?= Date: Mon, 4 Feb 2019 17:56:37 +0100 Subject: [PATCH] Implement MPRIS pause and play methods. Till now we were only using the play_pause method and was enough for most of the usecases, but looks like some mpris clients only use the individual methods. https://specifications.freedesktop.org/mpris-spec/latest/Player_Interface.html#Method:PlayPause Close #115 --- podcasts-gtk/src/widgets/player.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/podcasts-gtk/src/widgets/player.rs b/podcasts-gtk/src/widgets/player.rs index e2e0d39..a4d0e6e 100644 --- a/podcasts-gtk/src/widgets/player.rs +++ b/podcasts-gtk/src/widgets/player.rs @@ -588,7 +588,7 @@ impl PlayerWrapper { fn connect_mpris_buttons(&self, sender: &Sender) { let weak = Rc::downgrade(self); - // FIXME: Refference cycle with mpris + // FIXME: Reference cycle with mpris let mpris = self.info.mpris.clone(); self.info.mpris.connect_play_pause(clone!(weak => move || { let player = match weak.upgrade() { @@ -605,6 +605,24 @@ impl PlayerWrapper { } })); + self.info.mpris.connect_play(clone!(weak => move || { + let player = match weak.upgrade() { + Some(s) => s, + None => return + }; + + player.play(); + })); + + self.info.mpris.connect_pause(clone!(weak => move || { + let player = match weak.upgrade() { + Some(s) => s, + None => return + }; + + player.pause(); + })); + self.info.mpris.connect_next(clone!(weak => move || { weak.upgrade().map(|p| p.fast_forward()); }));