summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkamel5 <vdr.kamel5 (at) gmx (dot) net>2021-02-01 13:31:08 +0100
committerkamel5 <vdr.kamel5 (at) gmx (dot) net>2021-02-03 13:53:25 +0100
commit1c393e23a5c1527b95313db02799ce8f0901fe98 (patch)
tree68358b652ad07c8b241555d455b684228d1f0260
parent6aeaf41467f48ff077ca83b8383f31140670250b (diff)
downloadvdr-plugin-skindesigner-1c393e23a5c1527b95313db02799ce8f0901fe98.tar.gz
vdr-plugin-skindesigner-1c393e23a5c1527b95313db02799ce8f0901fe98.tar.bz2
Fixed an error in displayreplay if no recording information are available
-rw-r--r--coreengine/viewdisplayreplay.c12
-rw-r--r--coreengine/viewelementsdisplayreplay.c18
-rw-r--r--displayreplay.c7
3 files changed, 33 insertions, 4 deletions
diff --git a/coreengine/viewdisplayreplay.c b/coreengine/viewdisplayreplay.c
index 0e4328b..9a65db2 100644
--- a/coreengine/viewdisplayreplay.c
+++ b/coreengine/viewdisplayreplay.c
@@ -191,6 +191,8 @@ void cViewReplay::GetTimers(void) {
void cViewReplay::SetTimeShiftValues(const cRecording *recording) {
//check for instant recording
+ if (!recording)
+ return;
const char *recName = recording->Name();
if (recName && *recName == '@')
return;
@@ -224,6 +226,12 @@ void cViewReplay::SetTitle(const char *title) {
if (veRecTitle) {
veRecTitle->Set(title);
}
+ if (veRecInfo) {
+ veRecInfo->Set(NULL);
+ }
+ if (veScraperContent) {
+ veScraperContent->Set(NULL);
+ }
}
void cViewReplay::SetCurrent(const char *current) {
@@ -239,7 +247,7 @@ void cViewReplay::SetTotal(const char *total) {
}
void cViewReplay::SetEndTime(int current, int total) {
- if (!veEndTime)
+ if (!veEndTime || reclength == 0)
return;
int totalLength = total;
int recordingLength = reclength;
@@ -248,7 +256,7 @@ void cViewReplay::SetEndTime(int current, int total) {
recordingLength = timeShiftLength;
}
double rest = (double)(totalLength - current) / (double)totalLength;
- time_t end = time(0) + rest*recordingLength;
+ time_t end = time(0) + rest * recordingLength;
veEndTime->Set(TimeString(end));
Render((int)eVeDisplayReplay::endtime);
}
diff --git a/coreengine/viewelementsdisplayreplay.c b/coreengine/viewelementsdisplayreplay.c
index 798bd29..8dd2727 100644
--- a/coreengine/viewelementsdisplayreplay.c
+++ b/coreengine/viewelementsdisplayreplay.c
@@ -25,10 +25,24 @@ void cVeDrRecTitle::SetTokenContainer(void) {
}
void cVeDrRecTitle::Set(const cRecording *recording) {
+ if (this->title) {
+ free(this->title);
+ this->title = NULL;
+ }
+ if (this->recording)
+ this->recording = NULL;
+ if (!recording)
+ return;
this->recording = recording;
}
void cVeDrRecTitle::Set(const char *title) {
+ if (this->title) {
+ free(this->title);
+ this->title = NULL;
+ }
+ if (this->recording)
+ this->recording = NULL;
if (!title)
return;
free(this->title);
@@ -52,9 +66,9 @@ bool cVeDrRecTitle::Parse(bool force) {
tokenContainer->AddStringToken((int)eDRRecTitleST::rectitle, recName);
tokenContainer->AddStringToken((int)eDRRecTitleST::recsubtitle, recInfo ? recInfo->ShortText() : "");
tokenContainer->AddStringToken((int)eDRRecTitleST::recdate, *ShortDateString(recording->Start()));
- tokenContainer->AddStringToken((int)eDRRecTitleST::rectime, *TimeString(recording->Start()));
+ tokenContainer->AddStringToken((int)eDRRecTitleST::rectime, *TimeString(recording->Start()));
} else if (title) {
- tokenContainer->AddStringToken((int)eDRRecTitleST::rectitle, title);
+ tokenContainer->AddStringToken((int)eDRRecTitleST::rectitle, title);
}
SetDirty();
diff --git a/displayreplay.c b/displayreplay.c
index 3472548..a3a1c8b 100644
--- a/displayreplay.c
+++ b/displayreplay.c
@@ -25,7 +25,14 @@ void cSDDisplayReplay::SetRecording(const cRecording *Recording) {
}
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) {