Fixed displaying the current audio track in the channel display

This commit is contained in:
Klaus Schmidinger 2006-01-29 11:15:08 +01:00
parent e93ff79da8
commit f03ed68807
2 changed files with 10 additions and 7 deletions

View File

@ -4228,7 +4228,7 @@ Video Disk Recorder Revision History
- Fixed handling the '0' key for switching between the last two channels (thanks
to Thomas Bergwinkl).
2006-01-28: Version 1.3.41
2006-01-29: Version 1.3.41
- EPG events from epg.data or SVDRP's PUTE command now have their Title set to
"No Title" if none was set.
@ -4259,3 +4259,4 @@ Video Disk Recorder Revision History
(reported by Rolf Ahrenberg).
- Changed DVBS_TUNE_TIMEOUT and DVBC_TUNE_TIMEOUT to 9000ms to avoid problems with
channels that have low symbol rates (reported by Suur Karu).
- Fixed displaying the current audio track in the channel display.

14
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: menu.c 1.405 2006/01/28 12:37:02 kls Exp $
* $Id: menu.c 1.406 2006/01/29 11:13:51 kls Exp $
*/
#include "menu.h"
@ -2956,13 +2956,13 @@ eOSState cMenuMain::ProcessKey(eKeys Key)
// --- SetTrackDescriptions --------------------------------------------------
static void SetTrackDescriptions(bool Live)
static void SetTrackDescriptions(int LiveChannel)
{
cDevice::PrimaryDevice()->ClrAvailableTracks(true);
const cComponents *Components = NULL;
cSchedulesLock SchedulesLock;
if (Live) {
cChannel *Channel = Channels.GetByNumber(cDevice::CurrentChannel());
if (LiveChannel) {
cChannel *Channel = Channels.GetByNumber(LiveChannel);
if (Channel) {
const cSchedules *Schedules = cSchedules::Schedules(SchedulesLock);
if (Schedules) {
@ -3061,7 +3061,7 @@ void cDisplayChannel::DisplayInfo(void)
const cEvent *Present = Schedule->GetPresentEvent(true);
const cEvent *Following = Schedule->GetFollowingEvent(true);
if (Present != lastPresent || Following != lastFollowing) {
SetTrackDescriptions(true);
SetTrackDescriptions(channel->Number());
displayChannel->SetEvents(Present, Following);
cStatus::MsgOsdProgramme(Present ? Present->StartTime() : 0, Present ? Present->Title() : NULL, Present ? Present->ShortText() : NULL, Following ? Following->StartTime() : 0, Following ? Following->Title() : NULL, Following ? Following->ShortText() : NULL);
lastPresent = Present;
@ -3239,7 +3239,9 @@ eOSState cDisplayChannel::ProcessKey(eKeys Key)
DisplayInfo();
displayChannel->Flush();
if (NewChannel) {
SetTrackDescriptions(NewChannel->Number()); // to make them immediately visible in the channel display
Channels.SwitchTo(NewChannel->Number());
SetTrackDescriptions(NewChannel->Number()); // switching the channel has cleared them
channel = NewChannel;
}
return osContinue;
@ -3324,7 +3326,7 @@ cDisplayTracks::cDisplayTracks(void)
:cOsdObject(true)
{
cDevice::PrimaryDevice()->EnsureAudioTrack();
SetTrackDescriptions(!cDevice::PrimaryDevice()->Replaying() || cTransferControl::ReceiverDevice());
SetTrackDescriptions(!cDevice::PrimaryDevice()->Replaying() || cTransferControl::ReceiverDevice() ? cDevice::CurrentChannel() : 0);
currentDisplayTracks = this;
numTracks = track = 0;
audioChannel = cDevice::PrimaryDevice()->GetAudioChannel();