Version: 2.4.0 (using KDE 4.6.0)
The MPRIS interface on Amarok 2.4.0 has been messed up quite a bit. When
playback is paused, Amarok sends out a StatusChange signal containing 0 1 0 1,
which means it is Playing. When resuming playback it sends a StatusChange
signal containing 1 1 0 1, saying playback is Paused.
The MPRIS2 interface does pretty much the same, sending a PropertiesChanged
signal containing a PlaybackStatus of Playing when Paused and Paused when
playback is resumed. On the first change it does not send a PropertiesChanged
The MPRIS CapsChange signal is also providing wrong information: 119 on pause
(i.e. CAN_PAUSE is true and CAN_PLAY is false), and 123 on resume (CAN_PAUSE is
false and CAN_PLAY is true).
It almost looks like these signals are describing the old situation instead of
the new one, as they are supposed to be doing. All the MPRIS signals used to
work fine with Amarok 2.3.0. MPRIS2 wasn't supported in that version.
Furthermore, the MPRIS2 CanPause property is always false. According to the
MPRIS2 specifications it should at least be true when playback is paused and
CanControl is true (which it is).
Steps to Reproduce:
- In a console window, run: dbus-monitor sender=org.kde.amarok
- Pause and resume playback in Amarok
- Look at the signals reported by dbus-monitor
The signals report data that seems to match the situation before the change.
The signals should report the new situation.
Alex and/or Aurélien, could you have a look at this, please?
I can't reproduce any of this (using Amarok git as of Monday 7th March). The status change signals are completely correct - 1-0-0-0 is emitted when pausing, and 0-0-0-0 when playing.
Even if I switch to random mode, so that I get 1-1-0-1 and 0-1-0-1, it all still works fine. The caps change is also correct.
Can anyone else reproduce this on OpenSUSE, or on other systems?
I tell a lie: I can reproduce the issues with the MPRIS2 interface, but not the MPRIS1 interface.
Ah, I see, there was a commit on 17th Feb that fixed this for MPRIS1.
Git commit becb0debb81b1f1a608806131e51fdd31159b288 by Alex Merry.
Committed on 17/03/2011 at 18:56.
Pushed by alexmerry into branch 'master'.
Fix playback status for MPRIS2 interface
Make use of the playbackStatusChanged EngineController signal to find
when we should update the playback status property, otherwise we set it
too early and get the wrong value.
M +2 -0 ChangeLog
M +1 -5 src/dbus/mpris2/Mpris2DBusHandler.cpp
The MPRIS1 fix is in 2.4.1beta1, but the MPRIS2 fix won't be there until 2.4.1beta2.
Thanks for the quick action. I'll keep an eye out for a new version. For now I'm going to stick with MPRIS1 anyway because the MPRIS2 implementation is missing some other important features, most notably the tracklist related information.