Aubin Paul wrote:
> This is with the latest snapshot. I commented out the 'raise OSError'
> because it's not being trapped anywhere.
It's only needed if you skip to the playlist too fast.
> At this point, nothing crashes, but the music player "stops" and it
> returns to the song list, with mplayer continuing in the background.
>
> As you can see below, I don't think there is any actions in
> playlist.py, so I don't think it could be trapped there. It would have
> to be trapped in 'player.py' maybe?
Current cvs should return and not raise an error. But we still need to
figure out _why_ the systems wants to stop.
>
> --------
>
> Tried to stop child when no child is running right now
> Please send a bug report with the following trace to the
> Freevo developers
> File "/usr/lib/python2.3/site-packages/freevo/main.py", line 454, in ?
> main_func()
> File "/usr/lib/python2.3/site-packages/freevo/main.py", line 349, in main_func
> if p.eventhandler(event=event):
> File "/usr/lib/python2.3/site-packages/freevo/audio/plugins/detach.py", line 104,
> in eventhandler
> self.player.eventhandler(event=event)
OK, this only happens when we got the event AUDIO_PLAY_END. So the player
stopped and send this event.
| # inform Freevo that the app stopped itself
| if self.mode == 'play' and not self.manual_stop:
| if hasattr(self.app, 'stopped'):
| self.app.stopped()
| else:
| _debug_('app has no stopped function, send PLAY_END')
| rc.post_event(PLAY_END)
Here we send AUDIO_PLAY_END because of mplayer.py:
def stopped(self):
rc.post_event(AUDIO_PLAY_END)
| if not freevo_shutdown:
| while self.mode == 'play':
| _debug_('waiting for main to be ready for the killing', 2)
| time.sleep(0.1)
This should block because self.mode is play. Since you don't use
DEBUG=2, there is no way to go any deeper. Please try to reproduce
with DEBUG=2.
|
| # kill the app
| self.app.kill()
|
| # Ok, we can use the OSD again.
| if self.stop_osd and config.STOP_OSD_WHEN_PLAYING:
| osd.restart()
|
| if self.stop_osd: # Implies a video file
| rc.post_event(Event(VIDEO_END))
|
| self.mode = 'idle'
> File "/usr/lib/python2.3/site-packages/freevo/util/misc.py", line 481, in __call__
> return self.__method(self.__obj, *args, **kwargs)
> File "/usr/lib/python2.3/site-packages/freevo/audio/plugins/mplayer.py", line 205,
> in eventhandler
> self.playerGUI.stop()
> File "/usr/lib/python2.3/site-packages/freevo/audio/player.py", line 107, in stop
> self.player.stop()
> File "/usr/lib/python2.3/site-packages/freevo/util/misc.py", line 481, in __call__
> return self.__method(self.__obj, *args, **kwargs)
> File "/usr/lib/python2.3/site-packages/freevo/audio/plugins/mplayer.py", line 180,
> in stop
> self.thread.stop('quit\n')
> File "/usr/lib/python2.3/site-packages/freevo/childapp.py", line 391, in stop
> traceback.print_stack()
And that's strange. There has to be a child waiting. We got a
AUDIO_PLAY_END and we only get it when fds to the child are closed and
they can only be closed when we have a child.
Dischi
P.S.: It's a random signature! Sometimes I'm afraid of the random
function in Gnus.
--
My software never has bugs. It just develops random features.
-------------------------------------------------------
This SF.net email is sponsored by: The SF.net Donation Program.
Do you like what SourceForge.net is doing for the Open
Source Community? Make a contribution, and help us add new
features and functionality. Click here: http://sourceforge.net/donate/
_______________________________________________
Freevo-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/freevo-devel