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

Reply via email to