diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2003-05-04 18:00:00 +0200 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2003-05-04 18:00:00 +0200 |
commit | af2a135212088f0cba6bd8f98544b271c2f71bef (patch) | |
tree | 2cb92bca5d346a4214f5be25c3388887419585b8 /dvbdevice.c | |
parent | 0686038af36be65b666bce669957c4d94c13f409 (diff) | |
download | vdr-patch-lnbsharing-af2a135212088f0cba6bd8f98544b271c2f71bef.tar.gz vdr-patch-lnbsharing-af2a135212088f0cba6bd8f98544b271c2f71bef.tar.bz2 |
Version 1.1.30vdr-1.1.30
- Fixed minimum lifespan of deleted recordings (thanks to Jaakko Hyvätti).
- Updated French OSD texts (thanks to Olivier Jacques).
- Fixed paging through lists with repeated Left/Right keys.
- Fixed setting the PCR-PID in case it is equal to one of the other PIDs (thanks
to Oliver Endriss for reporting this one).
- Fixed double call to MainMenuAction() of a plugin if invoked via a hotkey (thanks
to Kai Moeller for reporting this one).
- Fixed handling dedicated keys.
- Now turning off live PIDs when replaying. This avoids short spikes from other
channels when switching between Transfer Mode channels, and also lets an ongoing
replay continue even if a recording is started on the primary device.
- The RCU channel display no longer changes when a recording on a different
channel starts on the primary device.
- Restoring the current channel in case a recording has switched the transponder.
If all devices are busy and none of them can provide the current channel, the
message "Channel not available!" will be displayed.
- Removed the (no longer necessary) 'panic' stuff from cThread.
- Added cStatus::OsdItem() to provide the entire list of menu items to a plugin
(thanks to Carsten Siebholz).
- The red ("Record") and yellow ("Pause") button in the "Main" menu are no longer
available when replaying.
Diffstat (limited to 'dvbdevice.c')
-rw-r--r-- | dvbdevice.c | 55 |
1 files changed, 26 insertions, 29 deletions
diff --git a/dvbdevice.c b/dvbdevice.c index d66cd76..8314ab6 100644 --- a/dvbdevice.c +++ b/dvbdevice.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbdevice.c 1.56 2003/04/27 09:44:17 kls Exp $ + * $Id: dvbdevice.c 1.59 2003/05/03 14:03:20 kls Exp $ */ #include "dvbdevice.h" @@ -567,6 +567,24 @@ bool cDvbDevice::SetPid(cPidHandle *Handle, int Type, bool On) return true; } +void cDvbDevice::TurnOffLiveMode(void) +{ + // Avoid noise while switching: + + CHECK(ioctl(fd_audio, AUDIO_SET_MUTE, true)); + CHECK(ioctl(fd_video, VIDEO_SET_BLANK, true)); + CHECK(ioctl(fd_audio, AUDIO_CLEAR_BUFFER)); + CHECK(ioctl(fd_video, VIDEO_CLEAR_BUFFER)); + + // Turn off live PIDs: + + DelPid(pidHandles[ptAudio].pid); + DelPid(pidHandles[ptVideo].pid); + DelPid(pidHandles[ptPcr].pid, ptPcr); + DelPid(pidHandles[ptTeletext].pid); + DelPid(pidHandles[ptDolby].pid); +} + bool cDvbDevice::ProvidesSource(int Source) const { int type = Source & cSource::st_Mask; @@ -649,42 +667,18 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView) // Turn off live PIDs if necessary: - if (TurnOffLivePIDs) { - - // Avoid noise while switching: - - CHECK(ioctl(fd_audio, AUDIO_SET_MUTE, true)); - CHECK(ioctl(fd_video, VIDEO_SET_BLANK, true)); - CHECK(ioctl(fd_audio, AUDIO_CLEAR_BUFFER)); - CHECK(ioctl(fd_video, VIDEO_CLEAR_BUFFER)); - - // Turn off live PIDs: - - DelPid(pidHandles[ptAudio].pid); - DelPid(pidHandles[ptVideo].pid); - DelPid(pidHandles[ptPcr].pid); - DelPid(pidHandles[ptTeletext].pid); - DelPid(pidHandles[ptDolby].pid); - } + if (TurnOffLivePIDs) + TurnOffLiveMode(); dvbTuner->Set(Channel, DoTune); - if (DoTune) { - /*XXX do we still need this??? - if (!(status & FE_HAS_LOCK)) { - esyslog("ERROR: channel %d not locked on DVB card %d!", Channel->Number(), CardIndex() + 1); - if (LiveView && IsPrimaryDevice()) - cThread::RaisePanic(); - return false; - } - XXX*/ - } // PID settings: if (TurnOnLivePIDs) { aPid1 = Channel->Apid1(); aPid2 = Channel->Apid2(); - if (!(AddPid(Channel->Ppid(), ptPcr) && AddPid(Channel->Apid1(), ptAudio) && AddPid(Channel->Vpid(), ptVideo))) {//XXX+ dolby dpid1!!! (if audio plugins are attached) + int pPid = Channel->Ppid() ? Channel->Ppid() : Channel->Vpid(); + if (!(AddPid(pPid, ptPcr) && AddPid(Channel->Apid1(), ptAudio) && AddPid(Channel->Vpid(), ptVideo))) {//XXX+ dolby dpid1!!! (if audio plugins are attached) esyslog("ERROR: failed to set PIDs for channel %d on device %d", Channel->Number(), CardIndex() + 1); return false; } @@ -782,6 +776,9 @@ bool cDvbDevice::SetPlayMode(ePlayMode PlayMode) siProcessor->SetStatus(true); break; case pmAudioVideo: + if (playMode == pmNone) + TurnOffLiveMode(); + // continue with next... case pmAudioOnlyBlack: if (siProcessor) siProcessor->SetStatus(false); |