diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2003-04-21 18:00:00 +0200 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2003-04-21 18:00:00 +0200 |
commit | 21a52ccb6d43cce35f7a381f55ea291195416f33 (patch) | |
tree | bc7d86214e695434ca7170bff799bcc4aaca5401 /menu.c | |
parent | 9f919801465f49be6b2118f54bd54df846e2f865 (diff) | |
download | vdr-patch-lnbsharing-21a52ccb6d43cce35f7a381f55ea291195416f33.tar.gz vdr-patch-lnbsharing-21a52ccb6d43cce35f7a381f55ea291195416f33.tar.bz2 |
Version 1.1.28vdr-1.1.28
- Using masks in EIT filtering to reduce the number of filters (thanks to Andreas
Schultz).
- Fixed handling Ca descriptors (thanks to Stefan Huelswitt).
- Now only those Ca descriptors are sent to a CAM that are actually understood
by that CAM.
- Re-enabled CAM communication during replay and on non-Ca channels. This requires
a DVB driver with firmware version 2613 or later.
- It is now possible to do simultaneous recording and replay with a single DVB
card, even with encrypted channels. This requires the use of the Link Layer
firmware, version 2613 or higher; the -icam firmware is still limited to live
encrypted channels only. Finally we have time shift for encrypted channels on
single card systems!
- Enhanced detection of pending user I/O from CAMs to avoid sluggish reaction
to remote control keypresses.
- Implemented "pause live video". You can now press "Menu/Yellow" or "Pause" on
your remote control while watching live video to start an instant recording
of the current programme and immediately start replaying that recording.
Diffstat (limited to 'menu.c')
-rw-r--r-- | menu.c | 31 |
1 files changed, 28 insertions, 3 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.235 2003/04/12 09:40:48 kls Exp $ + * $Id: menu.c 1.237 2003/04/21 14:57:13 kls Exp $ */ #include "menu.h" @@ -1636,7 +1636,7 @@ cOsdObject *CamControl(void) cDevice *Device = cDevice::GetDevice(d); if (Device) { cCiHandler *CiHandler = Device->CiHandler(); - if (CiHandler) { + if (CiHandler && CiHandler->HasUserIO()) { cCiMenu *CiMenu = CiHandler->GetMenu(); if (CiMenu) return new cMenuCam(CiMenu); @@ -2488,7 +2488,7 @@ void cMenuMain::Set(const char *Plugin) // Color buttons: - SetHelp(tr("Record"), cDevice::PrimaryDevice()->NumAudioTracks() > 1 ? tr("Language") : NULL, NULL, replaying ? tr("Button$Stop") : cReplayControl::LastReplayed() ? tr("Resume") : NULL); + SetHelp(tr("Record"), cDevice::PrimaryDevice()->NumAudioTracks() > 1 ? tr("Language") : NULL, replaying ? NULL : tr("Pause"), replaying ? tr("Button$Stop") : cReplayControl::LastReplayed() ? tr("Resume") : NULL); Display(); lastActivity = time(NULL); } @@ -2560,6 +2560,9 @@ eOSState cMenuMain::ProcessKey(eKeys Key) } } break; + case kYellow: if (!HasSubMenu()) + state = osPause; + break; case kBlue: if (!HasSubMenu()) state = replaying ? osStopReplay : cReplayControl::LastReplayed() ? osReplay : osContinue; break; @@ -2936,6 +2939,8 @@ cRecordControl::cRecordControl(cDevice *Device, cTimer *Timer) if (device->AttachReceiver(recorder)) { Recording.WriteSummary(); cStatus::MsgRecording(device, Recording.Name()); + if (!Timer && !cReplayControl::LastReplayed()) // an instant recording, maybe from cRecordControls::PauseLiveVideo() + cReplayControl::SetRecording(fileName, Recording.Name()); } else DELETENULL(recorder); @@ -3073,6 +3078,26 @@ bool cRecordControls::StopPrimary(bool DoIt) return false; } +bool cRecordControls::PauseLiveVideo(void) +{ + Interface->Open(Setup.OSDwidth, -1); + Interface->Status(tr("Pausing live video...")); + Interface->Flush(); + cReplayControl::SetRecording(NULL, NULL); // make sure the new cRecordControl will set cReplayControl::LastReplayed() + if (Start()) { + sleep(2); // allow recorded file to fill up enough to start replaying + cReplayControl *rc = new cReplayControl; + cControl::Launch(rc); + cControl::Attach(); + sleep(1); // allow device to replay some frames, so we have a picture + Interface->Close(); + rc->ProcessKey(kPause); // pause, allowing replay mode display + return true; + } + Interface->Close(); + return false; +} + const char *cRecordControls::GetInstantId(const char *LastInstantId) { for (int i = 0; i < MAXRECORDCONTROLS; i++) { |