Jean P. wrote:
> Le lundi 21 avril 2008 à 22:42 +0200, Duncan Webb a écrit :
>> Jean P. wrote:
>>
>> Would you do something for me, as I don't use the vdr_xine plug-in and I 
>> would like to know from where this is being called. Just create an error 
>> or raise an exception. This will hopefully generate a stack trace which 
>> may indicate where the problem is being caused.
>>
>>> ok that works for me
>>> here the patch for vdr_xine.py
>>>
>>> --- vdr_xine.py.old     2008-04-21 08:56:04.000000000 +0200
>>> +++ vdr_xine.py 2008-04-21 08:56:26.000000000 +0200
>>> @@ -75,7 +75,7 @@
>>>  import re
>>>  
>>>  #freevo modules
>>> -import config, menu, rc, plugin, util
>>> +import config, menu, rc, plugin, util, osd, time
>>>  from item import Item
>>>  import childapp
>>>  import pygame.locals as key
>>> @@ -152,6 +152,7 @@
>>>              config.KEYMAP[key.K_F11]       = 'YELLOW'
>>>              config.KEYMAP[key.K_F12]       = 'BLUE'
>>>              config.KEYMAP[key.K_BACKSPACE] = 'BACK'
>>> +       self.osd = osd.get_singleton()
>>>  
>>>      def actions(self):
>>>          """
>>> @@ -186,6 +187,8 @@
>>>          if self.app:
>>>              self.app.stop('quit\n')
>>>              rc.app(None)
>> You could try this too:
>>                 for i in range(10):
>>                     if not rc.app.isAlive():
>>                         break
>>                     time.sleep(0.1)
>>
>> This should exit with a stack trace
>>             raise "error"
> OK done this is my output:
> VDR_XINE: EVENT DOWN
> VDR_XINE: EVENT EXIT
> 2008-04-21 23:37:25,790 ERROR    event callback
> Traceback (most recent call last):
>   File "/usr/lib/python2.5/site-packages/kaa/notifier/event.py", line
> 191, in handle
>     handler(event)
>   File "/usr/lib/python2.5/site-packages/kaa/notifier/event.py", line
> 145, in __call__
>     super(EventHandler, self).__call__(event)
>   File "/usr/lib/python2.5/site-packages/kaa/notifier/nf_wrapper.py",
> line 97, in __call__
>     ret = super(NotifierCallback, self).__call__(*args, **kwargs)
>   File "/usr/lib/python2.5/site-packages/kaa/notifier/callback.py", line
> 168, in __call__
>     result = cb(*cb_args, **cb_kwargs)
>   File "/usr/lib/python2.5/site-packages/freevo/main.py", line 284, in
> eventhandler
>     if not rc.app()(event):
>   File "/usr/lib/python2.5/site-packages/freevo/plugins/vdr_xine.py",
> line 297, in eventhandler
>     self.stop()
>   File "/usr/lib/python2.5/site-packages/freevo/plugins/vdr_xine.py",
> line 191, in stop
>     if not rc.app.isAlive():
> AttributeError: 'function' object has no attribute 'isAlive'
> VDR_XINE: EVENT VIDEO_END
> VDR_XINE: VIDEO_END
> --------------------------------------------------------------------------------
> Freevo 1.8.0 r10581 finished at Mon Apr 21 23:34:21 2008

I've just downloaded the code for this, but not installed it. So the 
stop comes from the main.py. This code below may fix the redisplay 
problem, as the menu may redraw itself. The advantage is that freevo 
will wait up to 1 second for the app to exit, when it finished earlier 
then it waits less time.

|                 for i in range(10):
|                     if not self.app.isAlive():
|                         break
|                     time.sleep(0.1)

If this works but doesn't redisplay the screen then put the 
self.osd.update() back in, hopefully time.sleep(1) is not required.

>>> +        time.sleep(1)
>>> +        self.osd.update()
>>>  
>>>      def eventhandler(self, event, menuw=None):
>>>          """
>>
>> Will you also say if you have a fast machine or a slow one, and it has 
>> hyper-threading or dual core. AFAICT python does not use more than one 
>> core, need parallel python for that.
> 
> My hardware is an EPIA SP13000 with Openchrome driver for MPEG
> acceleration

So energy efficient and not mega fast.

Are you using X or DirectFB?

>> I would like to find out why this problem has only recently appeared. 
>> I'm guessing that vdr_xine.py is based on ChildApp instead of ChildApp2, 
> I don't think so because I see in the code:
> 
>       import childapp
> and
>       self.app = childapp.ChildApp2(command)

This is the way mplayer and xine work too except that these device a app 
class from ChildApp2.

>> if this is the case then just changing this to ChildApp2 may sort out 
>> the problem as it's stop command waits for the child to be completed 
>> before returning.
>
> Does it help? (I try to understand what you ask me to do but is my first
> time in python)

This is no problem, I'm sure that you will find Python relatively simple.


Yes thanks,
Duncan

BTW I can't always respond immediately as I'm at work during the day.

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
Freevo-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-users

Reply via email to