-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi! When pressing the back key during replay, the replay is not really stopped immediately. It has another behaviour than pressing stop or blue. When pressing back, the replay stops, and I get back to the menu. But the recording seems to be still open.
I derived the cReplayControl class in my plugin, to add the archive-hdd functions. Before play, the archive-hdd gets mounted, then the videofiles are symlinked to the recordingdir under /video. After stopping the replay, the symlinks should be removed again, and the archive-hdd should be unmounted. I did not find a better place to do the unlinking and unmounting, than the destructor of my class cMyReplayControl. This works only, when stopping the replay with stop or blue. When stopping with back, I get a "busy" while unmounting. And my derived class only implements my own destructor, nothing else.
Klaus, can you check the exact behaviour when pressing back during replay? I cannot see kBack in cReplayControl::ProcessKey.
Thomas
- -- gpg-id: D31AAEEA http://www.setho.org/people
On 06.09.2013 21:55, Thomas Maass wrote:
... When pressing the back key during replay, the replay is not really stopped immediately. It has another behaviour than pressing stop or blue. When pressing back, the replay stops, and I get back to the menu. But the recording seems to be still open.
That's because when pressing kBack, the cReplayControl::ProcessKey() returns osRecordings
case kBack: if (Setup.DelTimeshiftRec) { cRecordControl* rc = cRecordControls::GetRecordControl(fileName); return rc && rc->InstantId() ? osEnd : osRecordings; } return osRecordings;
which, in turn, makes the main loop in vdr.c call cControl::Shutdown():
case osRecordings: DELETE_MENU; cControl::Shutdown(); Menu = new cMenuMain(osRecordings); break;
I derived the cReplayControl class in my plugin, to add the archive-hdd functions. Before play, the archive-hdd gets mounted, then the videofiles are symlinked to the recordingdir under /video. After stopping the replay, the symlinks should be removed again, and the archive-hdd should be unmounted. I did not find a better place to do the unlinking and unmounting, than the destructor of my class cMyReplayControl. This works only, when stopping the replay with stop or blue. When stopping with back, I get a "busy" while unmounting. And my derived class only implements my own destructor, nothing else.
Klaus, can you check the exact behaviour when pressing back during replay? I cannot see kBack in cReplayControl::ProcessKey.
But it *is* there - see above.
Since kBlue and kBack are both supposed to end replay, and the only difference is that kBack shall open the Recordings menu, I see no reason why the code should actually be different. What is done in case kBack is also done in cReplayControl::Stop(), so I guess the following change should make it behave as you expect:
--- menu.c 2013/08/21 10:45:11 3.3 +++ menu.c 2013/09/07 10:03:16 @@ -4990,10 +4990,8 @@ else Show(); break; - case kBack: if (Setup.DelTimeshiftRec) { - cRecordControl* rc = cRecordControls::GetRecordControl(fileName); - return rc && rc->InstantId() ? osEnd : osRecordings; - } + case kBack: Hide(); + Stop(); return osRecordings; default: return osUnknown; }
Klaus