Panflute 0.6.1 + Exaile 0.3.0.1 : Play/Pause button does not work

Bug #515253 reported by agonified
20
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Panflute
Status tracked in Trunk
0.6
Fix Released
Medium
Paul Kuliniewicz
Trunk
Fix Released
Medium
Paul Kuliniewicz

Bug Description

Fire up Exaile 0.3.0.1 and start playing a radio station. Panflute starts showing song info and pops up bubbles upon song change, but the Play/Pause button does not work. It stays in Play state (as if there is nothing being played in Exaile) and when you press Play button, it restarts the playback in Exaile. This only happens when playing radio.

Related branches

Changed in panflute:
status: New → Confirmed
importance: Undecided → Medium
assignee: nobody → Paul Kuliniewicz (kuliniew)
Revision history for this message
agonified (hakanakkan) wrote :

How impossible is it to put a "Stop" button in Panflute when the selected preferred player is Exaile? On the contrary to the most linux media players, Exaile has a Stop button which behaves differently than the Pause button and I think it is essential. There are times where I want to "pause" the playback and other times where I want to "stop" the playback. Besides, consider the radio; pausing does not make any sense because it never continues from where it left. So it actually stops the playback.

It would be really nice if there was a configuration option for showing/hiding stop button for Exaile. Why would Panflute limit a functionality that the underlying player can provide? Please give us that precious stop button (at least for Exaile).. :)

Revision history for this message
Paul Kuliniewicz (kuliniew) wrote :

It actually might be *easier* to have separate play/pause and stop buttons. You're right about the one-button approach not working well for players like Exaile that support pausing streams -- both the pause and stop operations should be available. That's unrelated to this bug, however, so I'll open up a separate bug for that. (This one's actually caused by a bug in Exaile, which I still need to report to its developers.)

Revision history for this message
Paul Kuliniewicz (kuliniew) wrote :

Filed the stop button issue as lp:516891

Revision history for this message
Paul Kuliniewicz (kuliniew) wrote :

I filed a bug with Exaile (lp:518640) about it reporting the wrong status, but it should be possible to implement a workaround in Panflute. There's also some other inconsistencies I noticed when Panflute listens for status changes from Exaile.

summary: - Panflute 0.6.1 + Exaile 0.3.0.1 : Play/Pause button does not work with
- radio
+ Panflute 0.6.1 + Exaile 0.3.0.1 : Play/Pause button does not work
Revision history for this message
Paul Kuliniewicz (kuliniew) wrote :

I believe I've fixed status reporting in the latest revision (371) in the bzr repo, but I'd appreciate it if anyone having this problem could verify that it's fixed there. If not, please give precise instructions on how to reproduce, in case there's some particular corner case that still triggers problems.

Revision history for this message
agonified (hakanakkan) wrote :

I downloaded the revision 371 and tried to ./configure + make + make install after removing the one that was installed via your ppa. I first had several configuration/compilation problems but I think I managed to install it. When I right click the applet and open the About dialog, it says "Panflute Applet 0.6.1.bzr" which, I think, means its the one that I downloaded from the bzr repo.

Now, if I indeed was able to install the 371, I am sorry to say that the issue I reported in this bug remains. Absolutely no change...

Revision history for this message
agonified (hakanakkan) wrote :

Forgot to add; precise instructions on how to reproduce the issue are in the original bug report.

Revision history for this message
Paul Kuliniewicz (kuliniew) wrote :

DId you make sure to kill any panflute-daemon process that might have still been running?

Revision history for this message
agonified (hakanakkan) wrote :

Yep. I rebooted the machine couple of times afterwards.

If there is anything I could do in order to debug the problem, please let me know.

Revision history for this message
Paul Kuliniewicz (kuliniew) wrote :

I just tried reproducing the problem per your instructions and get the correct behavior. Are you absolutely sure that Panflute is running the version of panflute-daemon from the bzr repo and not the one from the 0.6.1 release? (To check, run "dbus-send --session --print-reply --dest=org.mpris.panflute / org.freedesktop.MediaPlayer.Identity" from the command line while Panflute is running; the message should say "Panflute trunk" and not "Panflute 0.6.1".) One thing to try, especially if Panflute-from-bzr is not installed in your usual $PATH, is to run it explicitly before adding the applet to the panel.

If you've confirmed you're running Panflute from trunk and *still* experience the bug, please kill all panflute processes, run panflute-daemon -d from the command line, trigger the bug, and post the spew of debugging output that panflute-daemon generates.

Revision history for this message
agonified (hakanakkan) wrote :

I first got rid of every bit of panflute with find&delete method because "make uninstall" didn't do it. Anyway.

After a reboot, I installed it again, started the deamon with -d option and reproduced the bug. Here's what happens when I press Play/Pause button (it stays as a Play button) when Exaile is playing a radio station:

DEBUG [panflute.daemon.exaile.v0_3.Player] Play
DEBUG [panflute.daemon.exaile.v0_3.Player] signalled status dbus.Struct((dbus.Int32(2), dbus.Int32(0), dbus.Int32(0), dbus.Int32(1)), signature=None), but returned status dbus.Struct((dbus.Int32(2), dbus.Int32(0), dbus.Int32(0), dbus.Int32(1)), signature=None)
DEBUG [panflute.daemon.exaile.v0_3.Player] sending StatusChange dbus.Struct((dbus.Int32(2), dbus.Int32(0), dbus.Int32(0), dbus.Int32(1)), signature=None)
DEBUG [panflute.daemon.exaile.v0_3.Player] track changed: dbus.Dictionary({dbus.String(u'genre'): dbus.String(u'alternative, punk, rock', variant_level=1), dbus.String(u'title'): dbus.String(u'Semi-Charmed Life', variant_level=1), dbus.String(u'location'): dbus.String(u'http://s2.total-streaming.com:8000', variant_level=1), dbus.String(u'artist'): dbus.String(u'Third Eye Blind', variant_level=1)}, signature=dbus.Signature('sv'))

[After some while...]

DEBUG [panflute.daemon.exaile.v0_3.Player] Play
DEBUG [panflute.daemon.exaile.v0_3.Player] signalled status dbus.Struct((dbus.Int32(2), dbus.Int32(0), dbus.Int32(0), dbus.Int32(1)), signature=None), but returned status dbus.Struct((dbus.Int32(2), dbus.Int32(0), dbus.Int32(0), dbus.Int32(1)), signature=None)
DEBUG [panflute.daemon.exaile.v0_3.Player] sending StatusChange dbus.Struct((dbus.Int32(2), dbus.Int32(0), dbus.Int32(0), dbus.Int32(1)), signature=None)
DEBUG [panflute.daemon.exaile.v0_3.Player] track changed: dbus.Dictionary({dbus.String(u'genre'): dbus.String(u'alternative, punk, rock', variant_level=1), dbus.String(u'title'): dbus.String(u'Semi-Charmed Life', variant_level=1), dbus.String(u'location'): dbus.String(u'http://s2.total-streaming.com:8000', variant_level=1), dbus.String(u'artist'): dbus.String(u'Third Eye Blind', variant_level=1)}, signature=dbus.Signature('sv')).

Again, Exaile pauses for a very short time (half a second, maybe) then continues playing.

Revision history for this message
Paul Kuliniewicz (kuliniew) wrote :

It looks like what's happening here is that Exaile still misreports its playback status when starting to play a radio stream. Panflute trunk tries to account for this by ignoring the status that Exaile says in its StatusChange signal and calling GetStatus, which ordinarily returns the correct information. I say ordinarily, because it seems there's a time window when it too is wrong, so Panflute is now convinced that Exaile isn't playing. When you hit the Play button, Panflute tells Exaile to start playing the stream anew; the "pause" is actually Exaile stopping the stream and re-starting it. Then the same problem occurs, and Panflute still thinks Exaile is stopped, because Exaile still reports the wrong information.

If you pause and unpause the stream in Exaile first, though, then the workaround currently in Panflute trunk works, which was why I was having problems reproducing this behavior.

I'm going to hope that using Exaile's native D-Bus interface instead of MPRIS reports correct status information and use that for the workaround instead. If not, the alternative is an ugly ask-Exaile-for-its-status-again-in-a-couple-seconds hack.

Revision history for this message
Paul Kuliniewicz (kuliniew) wrote :

That seems to have worked; bzr trunk as of rev 373 should have the working workaround for this bug in Exaile.

Revision history for this message
agonified (hakanakkan) wrote :

Great! I'll give rev 373 a try as soon as I can and let you know.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Related questions

Remote bug watches

Bug watches keep track of this bug in other bug trackers.