summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-sound/cantata/files/cantata-2.0.1-mpris-true.patch')
-rw-r--r--media-sound/cantata/files/cantata-2.0.1-mpris-true.patch100
1 files changed, 100 insertions, 0 deletions
diff --git a/media-sound/cantata/files/cantata-2.0.1-mpris-true.patch b/media-sound/cantata/files/cantata-2.0.1-mpris-true.patch
new file mode 100644
index 000000000000..c32f745b82f7
--- /dev/null
+++ b/media-sound/cantata/files/cantata-2.0.1-mpris-true.patch
@@ -0,0 +1,100 @@
+Always return true for MPRIS CanPlay, CanPause, etc.
+
+diff --git a/dbus/mpris.cpp b/dbus/mpris.cpp
+index 4736d19..45a539a 100644
+--- a/dbus/mpris.cpp
++++ b/dbus/mpris.cpp
+@@ -65,6 +65,31 @@ Mpris::~Mpris()
+ QDBusConnection::sessionBus().unregisterService("org.mpris.MediaPlayer2.cantata");
+ }
+
++void Mpris::Pause()
++{
++ if (MPDState_Playing==MPDStatus::self()->state()) {
++ StdActions::self()->playPauseTrackAction->trigger();
++ }
++}
++
++void Mpris::Play()
++{
++ MPDStatus * const status = MPDStatus::self();
++ if (status->playlistLength() && MPDState_Playing!=status->state()) {
++ StdActions::self()->playPauseTrackAction->trigger();
++ }
++}
++
++QString Mpris::PlaybackStatus() const
++{
++ switch(MPDStatus::self()->state()) {
++ case MPDState_Playing: return QLatin1String("Playing");
++ case MPDState_Paused: return QLatin1String("Paused");
++ default:
++ case MPDState_Stopped: return QLatin1String("Stopped");
++ }
++}
++
+ qlonglong Mpris::Position() const
+ {
+ // Cant use MPDStatus, as we dont poll for track position, but use a timer instead!
+diff --git a/dbus/mpris.h b/dbus/mpris.h
+index 64a4fbe..a1578b9 100644
+--- a/dbus/mpris.h
++++ b/dbus/mpris.h
+@@ -71,37 +71,15 @@ class Mpris : public QObject
+ // org.mpris.MediaPlayer2.Player
+ void Next() { StdActions::self()->nextTrackAction->trigger(); }
+ void Previous() { StdActions::self()->prevTrackAction->trigger(); }
+- void Pause() {
+- if (MPDState_Playing==MPDStatus::self()->state()) {
+- StdActions::self()->playPauseTrackAction->trigger();
+- }
+- }
+-
++ void Pause();
+ void PlayPause() { StdActions::self()->playPauseTrackAction->trigger(); }
+ void Stop() { StdActions::self()->stopPlaybackAction->trigger(); }
+ void StopAfterCurrent() { StdActions::self()->stopAfterCurrentTrackAction->trigger(); }
+-
+- void Play() {
+- MPDStatus * const status = MPDStatus::self();
+-
+- if (status->playlistLength() && MPDState_Playing!=status->state()) {
+- StdActions::self()->playPauseTrackAction->trigger();
+- }
+- }
+-
++ void Play();
+ void Seek(qlonglong pos) { emit setSeekId(-1, pos/1000000); }
+ void SetPosition(const QDBusObjectPath &, qlonglong pos) {emit setSeekId(-1, pos/1000000); }
+ void OpenUri(const QString &) { }
+-
+- QString PlaybackStatus() {
+- switch(MPDStatus::self()->state()) {
+- case MPDState_Playing: return QLatin1String("Playing");
+- case MPDState_Paused: return QLatin1String("Paused");
+- default:
+- case MPDState_Stopped: return QLatin1String("Stopped");
+- }
+- }
+-
++ QString PlaybackStatus() const;
+ QString LoopStatus() { return MPDStatus::self()->repeat() ? QLatin1String("Playlist") : QLatin1String("None"); }
+ void SetLoopStatus(const QString &s) { emit setRepeat(QLatin1String("None")!=s); }
+ QVariantMap Metadata() const;
+@@ -115,11 +93,11 @@ class Mpris : public QObject
+ double MinimumRate() const { return 1.0; }
+ double MaximumRate() const { return 1.0; }
+ bool CanControl() const { return true; }
+- bool CanPlay() const { return MPDState_Playing!=MPDStatus::self()->state() && MPDStatus::self()->playlistLength()>0; }
+- bool CanPause() const { return MPDState_Playing==MPDStatus::self()->state(); }
+- bool CanSeek() const { return -1!=MPDStatus::self()->songId(); }
+- bool CanGoNext() const { return MPDState_Stopped!=MPDStatus::self()->state() && MPDStatus::self()->playlistLength()>1; }
+- bool CanGoPrevious() const { return MPDState_Stopped!=MPDStatus::self()->state() && MPDStatus::self()->playlistLength()>1; }
++ bool CanPlay() const { return true; }
++ bool CanPause() const { return true; }
++ bool CanSeek() const { return true; }
++ bool CanGoNext() const { return true; }
++ bool CanGoPrevious() const { return true; }
+
+ // org.mpris.MediaPlayer2
+ bool CanQuit() const { return true; }