1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Fixed cleaning up old EPG events in case no epg data file is given

This commit is contained in:
Klaus Schmidinger 2013-08-31 13:21:09 +02:00
parent bd6da13a67
commit b931724b75
3 changed files with 14 additions and 8 deletions

View File

@ -2965,6 +2965,7 @@ Johan Andersson <jna@jna.pp.se>
Dave Pickles <dave@pickles.me.uk> Dave Pickles <dave@pickles.me.uk>
for adding support for "content identifier descriptor" and "default authority for adding support for "content identifier descriptor" and "default authority
descriptor" to 'libsi' descriptor" to 'libsi'
for reporting that old EPG events are not cleaned up in case no epg data file is given
Holger Dengler <holger.dengler@gmx.de> Holger Dengler <holger.dengler@gmx.de>
for making the isnumber() function check the given pointer for NULL for making the isnumber() function check the given pointer for NULL

View File

@ -7917,3 +7917,5 @@ Video Disk Recorder Revision History
character was always skipped). character was always skipped).
- Fixed wrong initialization of Setup.PositionerSwing (reported by Arthur Konovalov). - Fixed wrong initialization of Setup.PositionerSwing (reported by Arthur Konovalov).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov). - Updated the Estonian OSD texts (thanks to Arthur Konovalov).
- Fixed cleaning up old EPG events in case no epg data file is given (reported by
Dave Pickles).

9
epg.c
View File

@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by * Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
* *
* $Id: epg.c 3.1 2013/08/23 10:46:33 kls Exp $ * $Id: epg.c 3.2 2013/08/31 13:21:09 kls Exp $
*/ */
#include "epg.h" #include "epg.h"
@ -1140,16 +1140,19 @@ bool cSchedule::Read(FILE *f, cSchedules *Schedules)
class cEpgDataWriter : public cThread { class cEpgDataWriter : public cThread {
private: private:
cMutex mutex; cMutex mutex;
bool dump;
protected: protected:
virtual void Action(void); virtual void Action(void);
public: public:
cEpgDataWriter(void); cEpgDataWriter(void);
void SetDump(bool Dump) { dump = Dump; }
void Perform(void); void Perform(void);
}; };
cEpgDataWriter::cEpgDataWriter(void) cEpgDataWriter::cEpgDataWriter(void)
:cThread("epg data writer", true) :cThread("epg data writer", true)
{ {
dump = false;
} }
void cEpgDataWriter::Action(void) void cEpgDataWriter::Action(void)
@ -1169,6 +1172,7 @@ void cEpgDataWriter::Perform(void)
p->Cleanup(now); p->Cleanup(now);
} }
} }
if (dump)
cSchedules::Dump(); cSchedules::Dump();
} }
@ -1203,6 +1207,7 @@ void cSchedules::SetEpgDataFileName(const char *FileName)
{ {
free(epgDataFileName); free(epgDataFileName);
epgDataFileName = FileName ? strdup(FileName) : NULL; epgDataFileName = FileName ? strdup(FileName) : NULL;
EpgDataWriter.SetDump(epgDataFileName != NULL);
} }
void cSchedules::SetModified(cSchedule *Schedule) void cSchedules::SetModified(cSchedule *Schedule)
@ -1217,12 +1222,10 @@ void cSchedules::Cleanup(bool Force)
lastDump = 0; lastDump = 0;
time_t now = time(NULL); time_t now = time(NULL);
if (now - lastDump > EPGDATAWRITEDELTA) { if (now - lastDump > EPGDATAWRITEDELTA) {
if (epgDataFileName) {
if (Force) if (Force)
EpgDataWriter.Perform(); EpgDataWriter.Perform();
else if (!EpgDataWriter.Active()) else if (!EpgDataWriter.Active())
EpgDataWriter.Start(); EpgDataWriter.Start();
}
lastDump = now; lastDump = now;
} }
} }