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