[mythtv-commits] Ticket #8211: Incorrect channel change with a channel group and multiple sources

MythTV mythtv at cvs.mythtv.org
Sun Mar 21 17:17:53 UTC 2010

#8211: Incorrect channel change with a channel group and multiple sources
 Reporter:  scottadmi@…          |       Owner:  ijr       
     Type:  defect               |      Status:  new       
 Priority:  minor                |   Milestone:  0.24      
Component:  MythTV - General     |     Version:  0.22-fixes
 Severity:  medium               |     Mlocked:  0         
 I generally display only favorite channels in the guide when watching live
 tv (to reduce the clutter) which means when changing channels using the
 remote (simple channel up/channel down keys) it should only cycle through
 the favorite channel group.

 The problem is, I have multiple input cards with different sources (in my
 case analog cable and a digital cable). These overlap a large number of
 channel numbers and as a result it does not correctly handle channel
 change events when the "favorites" channel group is in use. When I press
 channel up while watching from the 2nd card, it will instead go the second
 favorite on the first card.

 Digging around the code I discovered the likely cause. In tv_play.cpp,
 when the m_channellist value is populated, it (correctly) eliminates
 duplicate channel numbers leaving just one chanid for each station even if
 the same channel number exists on multiple cards. This list is passed
 along with the current chanid to GetNextChannel (in channelutil.cpp) to
 determine what to change to.

 The problem is, in my case the list mostly contains chanids from the first
 card, so when GetNextChannel tries to find the current chanid in the list
 it can't. (As an example, I'm watching channel 13 which is currently
 chanid 2013, but the list only contains 1013.) Failing to find the current
 channel, it reverts to the first item in the channel group list and thus
 incorrectly chooses an early channel on the other card.

 The fix seems like it would be to change GetNextChannel to instead search
 on a channum (not chanid) and return a channum so channel changing is
 independent of the card in use. As this function is referred to in
 multiple places, I lack the personal expertise to fix this in a clean way
 to avoid interfering with other parts of the code.

Ticket URL: <http://svn.mythtv.org/trac/ticket/8211>
MythTV <http://www.mythtv.org/>

More information about the mythtv-commits mailing list