diff --git a/coreengine/viewdisplaymenu.c b/coreengine/viewdisplaymenu.c index 9be2a43..e857678 100644 --- a/coreengine/viewdisplaymenu.c +++ b/coreengine/viewdisplaymenu.c @@ -889,15 +889,15 @@ void cSubView::DrawStaticVEs(void) { background->Show(); background->Render(); } +} + +void cSubView::DrawDynamicVEs(void) { if (header) { header->Show(); header->Set(menuCat); if (header->Parse()) header->Render(); } -} - -void cSubView::DrawDynamicVEs(void) { if (datetime) { datetime->Show(); if (datetime->Parse()) diff --git a/coreengine/viewelementsdisplaymenu.c b/coreengine/viewelementsdisplaymenu.c index b7c20e9..cfe0540 100644 --- a/coreengine/viewelementsdisplaymenu.c +++ b/coreengine/viewelementsdisplaymenu.c @@ -11,6 +11,7 @@ * cVeDmHeader ******************************************************************/ cVeDmHeader::cVeDmHeader(void) { + changed = false; title = NULL; channelName = NULL; channelNumber = 0; @@ -48,12 +49,11 @@ void cVeDmHeader::SetTokenContainer(void) { } void cVeDmHeader::SetTitle(const char *title) { + if (this->title && !strcmp(this->title, title)) + return; + free(this->title); this->title = strdup(title); - free(channelName); - channelName = NULL; - channelNumber = 0; - free(channelId); - channelId = NULL; + changed = true; } void cVeDmHeader::SetChannel(const cChannel *channel) { @@ -65,6 +65,8 @@ void cVeDmHeader::SetChannel(const cChannel *channel) { } void cVeDmHeader::Set(eMenuCategory menuCat) { + if (!changed) + return; tokenContainer->Clear(); tokenContainer->AddStringToken((int)eDMHeaderST::title, title); tokenContainer->AddStringToken((int)eDMHeaderST::vdrversion, VDRVERSION); @@ -101,6 +103,7 @@ void cVeDmHeader::Set(eMenuCategory menuCat) { tokenContainer->AddIntToken((int)eDMHeaderIT::channelnumber, channelNumber); tokenContainer->AddIntToken((int)eDMHeaderIT::channellogoexists, imgCache->LogoExists(channelId)); } + changed = false; SetDirty(); } diff --git a/coreengine/viewelementsdisplaymenu.h b/coreengine/viewelementsdisplaymenu.h index 600af91..1ffa1d2 100644 --- a/coreengine/viewelementsdisplaymenu.h +++ b/coreengine/viewelementsdisplaymenu.h @@ -9,6 +9,7 @@ ******************************************************************/ class cVeDmHeader : public cViewElement { private: + bool changed; char *title; char *channelName; int channelNumber;