diff options
author | kamel5 <vdr.kamel5 (at) gmx (dot) net> | 2021-02-01 13:31:08 +0100 |
---|---|---|
committer | kamel5 <vdr.kamel5 (at) gmx (dot) net> | 2021-02-03 13:53:25 +0100 |
commit | 1c393e23a5c1527b95313db02799ce8f0901fe98 (patch) | |
tree | 68358b652ad07c8b241555d455b684228d1f0260 | |
parent | 6aeaf41467f48ff077ca83b8383f31140670250b (diff) | |
download | vdr-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.c | 12 | ||||
-rw-r--r-- | coreengine/viewelementsdisplayreplay.c | 18 | ||||
-rw-r--r-- | displayreplay.c | 7 |
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) { |