vdr-plugin-skindesigner/displayreplay.c
kamel5 6972a59e1b A bug with timeshift in connection with global timers has been fixed
With commit 8a04a17 an error was introduced which did not take the global
timers into account in the timeshift replay.
thanks to @machtnix at vdr-portal.de for finding the bug
2021-02-08 11:05:51 +01:00

90 lines
2.1 KiB
C

#include "displayreplay.h"
cSDDisplayReplay::cSDDisplayReplay(cViewReplay *replayView, bool ModeOnly) {
init = true;
view = replayView;
ok = view->Init();
if (!ok)
esyslog("skindesigner: Error initiating displayreplay view - aborting");
view->SetModeOnly(ModeOnly);
}
cSDDisplayReplay::~cSDDisplayReplay() {
view->Close();
}
void cSDDisplayReplay::SetRecording(const cRecording *Recording) {
if (ok) {
view->SetRecording(Recording);
if (init) {
view->SetRecordingLength(Recording->LengthInSeconds());
view->SetTimeShiftValues(Recording);
init = false;
}
}
}
void cSDDisplayReplay::SetTitle(const char *Title) {
if (!ok)
return;
view->SetTitle(Title);
if (init) {
view->SetRecordingLength(0);
view->SetTimeShiftValues(NULL);
init = false;
}
}
void cSDDisplayReplay::SetMode(bool Play, bool Forward, int Speed) {
if (!ok)
return;
if (!Play && Speed < 0) {
cControl *control = cControl::Control();
if (control) {
const cRecording *recording = control->GetRecording();
if (recording && recording->FileName()) {
view->StartOnPause(recording->FileName());
}
}
} else {
view->ClearOnPause();
}
view->SetControlIcons(Play, Forward, Speed);
}
void cSDDisplayReplay::SetProgress(int Current, int Total) {
if (ok) {
view->SetProgressbar(Current, Total);
view->SetMarks(marks, Current, Total);
view->SetEndTime(Current, Total);
view->DelayOnPause();
}
}
void cSDDisplayReplay::SetCurrent(const char *Current) {
if (ok)
view->SetCurrent(Current);
}
void cSDDisplayReplay::SetTotal(const char *Total) {
if (ok)
view->SetTotal(Total);
}
void cSDDisplayReplay::SetJump(const char *Jump) {
if (ok)
view->SetJump(Jump);
}
void cSDDisplayReplay::SetMessage(eMessageType Type, const char *Text) {
if (ok)
view->SetMessage(Type, Text);
}
void cSDDisplayReplay::Flush(void) {
if (!ok)
return;
view->Flush();
}