summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY4
-rw-r--r--epg.c14
-rw-r--r--epg.h8
-rw-r--r--vdr.c5
5 files changed, 27 insertions, 5 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 9ba9c0fa..8a9f0e1f 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -604,6 +604,7 @@ Helmut Auer <vdr@helmutauer.de>
for a patch that was used to implement the command line options --edit and
--genindex
for suggesting to disable EPG processing for a while after a CLRE command
+ for suggesting to read the epg.data file in a separate thread
Jeremy Hall <jhall@UU.NET>
for fixing an incomplete initialization of the filter parameters in eit.c
diff --git a/HISTORY b/HISTORY
index 81117f0a..749b0eb6 100644
--- a/HISTORY
+++ b/HISTORY
@@ -6836,7 +6836,7 @@ Video Disk Recorder Revision History
- Fixed frozen live view with device bonding in case the bonded master is used for
live viewing (reported by Uwe Scheffler).
-2012-01-26: Version 1.7.24
+2012-02-11: Version 1.7.24
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- Fixed a high load in case a transponder can't be received.
@@ -6851,3 +6851,5 @@ Video Disk Recorder Revision History
minutes (thanks to Christoph Haubrich).
- Symbolic links are no longer resolved in cRecordings::ScanVideoDir() (thanks to
Sundararaj Reel).
+- The epg.data file is now read in a separate thread to make the startup process
+ faster in case the file is very large (suggested by Helmut Auer).
diff --git a/epg.c b/epg.c
index e1e317d5..0cce64d9 100644
--- a/epg.c
+++ b/epg.c
@@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
*
- * $Id: epg.c 2.8 2012/01/08 14:59:38 kls Exp $
+ * $Id: epg.c 2.9 2012/02/11 12:33:04 kls Exp $
*/
#include "epg.h"
@@ -1284,3 +1284,15 @@ const cSchedule *cSchedules::GetSchedule(const cChannel *Channel, bool AddIfMiss
}
return Channel->schedule != &DummySchedule? Channel->schedule : NULL;
}
+
+// --- cEpgDataReader --------------------------------------------------------
+
+cEpgDataReader::cEpgDataReader(void)
+:cThread("epg data reader")
+{
+}
+
+void cEpgDataReader::Action(void)
+{
+ cSchedules::Read();
+}
diff --git a/epg.h b/epg.h
index e5f4bdae..9d6b605b 100644
--- a/epg.h
+++ b/epg.h
@@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
*
- * $Id: epg.h 2.5 2011/02/25 14:14:38 kls Exp $
+ * $Id: epg.h 2.6 2012/02/11 12:29:55 kls Exp $
*/
#ifndef __EPG_H
@@ -213,6 +213,12 @@ public:
const cSchedule *GetSchedule(const cChannel *Channel, bool AddIfMissing = false) const;
};
+class cEpgDataReader : public cThread {
+public:
+ cEpgDataReader(void);
+ virtual void Action(void);
+ };
+
void ReportEpgBugFixStats(bool Reset = false);
#endif //__EPG_H
diff --git a/vdr.c b/vdr.c
index 3d79eef4..0913614f 100644
--- a/vdr.c
+++ b/vdr.c
@@ -22,7 +22,7 @@
*
* The project's page is at http://www.tvdr.de
*
- * $Id: vdr.c 2.27 2011/12/03 15:35:09 kls Exp $
+ * $Id: vdr.c 2.28 2012/02/11 12:34:01 kls Exp $
*/
#include <getopt.h>
@@ -569,6 +569,7 @@ int main(int argc, char *argv[])
// Main program loop variables - need to be here to have them initialized before any EXIT():
+ cEpgDataReader EpgDataReader;
cOsdObject *Menu = NULL;
int LastChannel = 0;
int LastTimerChannel = -1;
@@ -633,7 +634,7 @@ int main(int argc, char *argv[])
cSchedules::SetEpgDataFileName(AddDirectory(EpgDirectory, EpgDataFileName));
else
cSchedules::SetEpgDataFileName(EpgDataFileName);
- cSchedules::Read();
+ EpgDataReader.Start();
}
// DVB interfaces: