diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2006-01-29 18:00:00 +0100 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2006-01-29 18:00:00 +0100 |
commit | c37734080c45ef7ba60d589df0d88fb9a6064c1b (patch) | |
tree | 65bfeeeb3b380356b2da98cc56403ebe5dea76f8 /menu.c | |
parent | 446b0e8e0b94b997293aef2f63220c5f8a68bf0f (diff) | |
download | vdr-patch-lnbsharing-c37734080c45ef7ba60d589df0d88fb9a6064c1b.tar.gz vdr-patch-lnbsharing-c37734080c45ef7ba60d589df0d88fb9a6064c1b.tar.bz2 |
Version 1.3.41vdr-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.
- Fixed checking toFile in cCuttingThread::Action() (found in a larger patch from
Artur Skawina).
- Fixed a crash when pressing '0' in the "Schedule" menu on a channel that doesn't
have any EPG data (reported ny Alexander Hans).
- Updated the Danish OSD texts (thanks to Mogens Elneff).
- Fixed a missing ',' in the Greek OSD texts (thanks to Arthur Konovalov).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Fixed handling the tfRecording flag when reading timers (bug reported by Andreas
Mair).
- Now checking whether the channel exists before setting the PMT filter in
cPatFilter::Process() (thanks to Thomas Bergwinkl).
- Now trying to reestablish the connection to the LIRC daemon in case it breaks
(thanks to Ville Skyttä).
- Updated the Finnish OSD texts (thanks to Rolf Ahrenberg).
- Fixed channel switching with the Down (Up) key in case the current channel is
already the first (last) in the list (reported by Frank Krömmelbein).
- Removed the "buffer reserve" in Transfer Mode - it's no longer necessary with
recent driver/firmware versions.
- The epg.data file is now written when VDR exits (suggested by Daniel Karsubka).
- Fixed cTimers::GetNextActiveTimer() so that it won't return an expired timer
(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.
- When reading epg.data (or data from PUTE), the version number of events with
table IDs smaller than 0x50 is now ignored because otherwise the current
running status would not be set after a restart of VDR.
- Implemented a timeout for remote controls that don't deliver "repeat" keypresses
very fast (based on a suggestion by Luca Olivetti; problem with the new handling
of k_Repeat keypresses in channel switching reported by Udo Richter).
- When looking for the present or following EPG event, the running status is now
always taken into account.
- Now initializing the channels' schedule pointers when reading the epg.data file,
so that the first WhatsOn menu will come up faster.
- If a shutdown is requested, but the shutdown script doesn't actually halt the
system, it is now tried again after 5 minutes (suggested by Helmut Auer).
- Separated the 'install' target into several individual targets; renamed the
'plugins-install' target to 'install-plugins' (thanks to Helmut Auer).
Diffstat (limited to 'menu.c')
-rw-r--r-- | menu.c | 28 |
1 files changed, 17 insertions, 11 deletions
@@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 1.403 2006/01/22 16:06:39 kls Exp $ + * $Id: menu.c 1.407 2006/01/29 14:04:37 kls Exp $ */ #include "menu.h" @@ -1245,7 +1245,7 @@ void cMenuSchedule::PrepareScheduleAllThis(const cEvent *Event, const cChannel * if (schedules && Channel) { const cSchedule *Schedule = schedules->GetSchedule(Channel); if (Schedule) { - const cEvent *PresentEvent = Event ? Event : Schedule->GetPresentEvent(Channel->Number() == cDevice::CurrentChannel()); + const cEvent *PresentEvent = Event ? Event : Schedule->GetPresentEvent(); time_t now = time(NULL) - Setup.EPGLinger * 60; for (const cEvent *ev = Schedule->Events()->First(); ev; ev = Schedule->Events()->Next(ev)) { if (ev->EndTime() > now || ev == PresentEvent) @@ -1352,6 +1352,8 @@ eOSState cMenuSchedule::Number(void) Event = CurrentItem->event; Channel = Channels.GetByChannelID(Event->ChannelID(), true); } + else + Channel = Channels.GetByNumber(cDevice::CurrentChannel()); switch (cMenuScheduleItem::SortMode()) { case cMenuScheduleItem::ssmAllThis: PrepareScheduleAllThis(Event, Channel); break; case cMenuScheduleItem::ssmThisThis: PrepareScheduleThisThis(Event, Channel); break; @@ -2954,19 +2956,19 @@ 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) { const cSchedule *Schedule = Schedules->GetSchedule(Channel); if (Schedule) { - const cEvent *Present = Schedule->GetPresentEvent(true); + const cEvent *Present = Schedule->GetPresentEvent(); if (Present) Components = Present->Components(); } @@ -3056,10 +3058,10 @@ void cDisplayChannel::DisplayInfo(void) if (Schedules) { const cSchedule *Schedule = Schedules->GetSchedule(channel); if (Schedule) { - const cEvent *Present = Schedule->GetPresentEvent(true); - const cEvent *Following = Schedule->GetFollowingEvent(true); + const cEvent *Present = Schedule->GetPresentEvent(); + const cEvent *Following = Schedule->GetFollowingEvent(); 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; @@ -3172,13 +3174,15 @@ eOSState cDisplayChannel::ProcessKey(eKeys Key) cChannel *ch = NextAvailableChannel(channel, (k == kUp || k == kChanUp) ? 1 : -1); if (ch) channel = ch; + else if (channel && channel->Number() != cDevice::CurrentChannel()) + Key = k; // immediately switches channel when hitting the beginning/end of the channel list with k_Repeat } // no break here case kUp|k_Release: case kDown|k_Release: case kChanUp|k_Release: case kChanDn|k_Release: - if (!(Key & k_Repeat) && channel) + if (!(Key & k_Repeat) && channel && channel->Number() != cDevice::CurrentChannel()) NewChannel = channel; withInfo = true; group = -1; @@ -3235,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; @@ -3320,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(); |