From 1c393e23a5c1527b95313db02799ce8f0901fe98 Mon Sep 17 00:00:00 2001 From: kamel5 Date: Mon, 1 Feb 2021 13:31:08 +0100 Subject: [PATCH] Fixed an error in displayreplay if no recording information are available --- coreengine/viewdisplayreplay.c | 12 ++++++++++-- coreengine/viewelementsdisplayreplay.c | 18 ++++++++++++++++-- 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) {