vdr slowness when browsing channels

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Reinhard Nissl wrote:
> Hi,
> 
> Klaus Schmidinger wrote:
> 
>>>> I notice that vdr is slow when i try to quickly browse channels. it 
>>>> eats around 18-20% of the cpu (atlon1200) when
>>>> i hold left or right key when browsing channels (vdr 1.3.27 vanilla 
>>>> - classic skin) .
>>>> With text2skin (1.0) and Enigma, it eats around 40-50% of
>>>> the cpu and browsing channels is very very slow ...
>>>> Note: cat channels.conf | wc -l  --> 2600 lines
>>>
>>>
>>> Just give the attached patch a try and report the effect.
>>>
>>> The problem seems to be, that for scrolling one line, all 2600 
>>> channels are sent to plugins. The patch changes this behaviour to 
>>> just send those channels to plugins that will be shown on screen by VDR.
>>
>>
>> These are only sent to plugins that actually implement a cStatus object.
>> Why would text2skin need a cStatus?
> 
> 
>  From the sources:
> .
> .
> class cText2SkinStatus: public cStatus {
> .
> .
> 
> But it doesn't implement OsdItem(), so maybe my assumption was wrong.
> 
> Maybe it would make sense to have a second list of status monitors which 
> contains all those cStatus objects which implement OsdItem() and to skip 
> the loop completely if noone is interested this information.
> 
> What do you think about that, Klaus?
> Shall I create a patch for this?

I don't think so.
Besides, OsdItem() and OsdCurrentItem() don't really play that well
together, anyway. As it is now, a cStatus object gets the full list
of all items when cOsdMenu::Display() is called, but the current
item is only referred to by its text, no index is given.
So I think this needs some more thought.

But let's first find out whether this is really the problem here.
On my system I also have a cStatus object in the RCU remote control,
and it also doesn't implement OsdItem(). Paging through the channel
list is not slow at all.

@Guy: please comment out the lines

        for (cOsdItem *item = First(); item; item = Next(item))
            cStatus::MsgOsdItem(item->Text(), ni++);

in cOsdMenu::Display() (osdbase.c) and let us know whether this
makes any change.

Klaus


[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux