mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Version 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.
This commit is contained in:
55
dvbdevice.c
55
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);
|
||||
|
||||
Reference in New Issue
Block a user