summaryrefslogtreecommitdiff
path: root/recording.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2012-12-24 09:00:55 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2012-12-24 09:00:55 +0100
commitdb59a8e745a6a48574f897ec0ce212f31fc87802 (patch)
tree1c9d79cc3e552dc609a79ac49cb984e57115c816 /recording.c
parentef3af3b70275056fbe3442eb0b9f56098cda4ed1 (diff)
downloadvdr-db59a8e745a6a48574f897ec0ce212f31fc87802.tar.gz
vdr-db59a8e745a6a48574f897ec0ce212f31fc87802.tar.bz2
Fixed replaying ongoing recordings from other VDR instances1.7.34
Diffstat (limited to 'recording.c')
-rw-r--r--recording.c51
1 files changed, 4 insertions, 47 deletions
diff --git a/recording.c b/recording.c
index f40a9c95..ca50f433 100644
--- a/recording.c
+++ b/recording.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: recording.c 2.80 2012/12/23 13:34:06 kls Exp $
+ * $Id: recording.c 2.81 2012/12/23 15:11:28 kls Exp $
*/
#include "recording.h"
@@ -1666,7 +1666,8 @@ void cIndexFileGenerator::Action(void)
#define INDEXFILESUFFIX "/index"
// The maximum time to wait before giving up while catching up on an index file:
-#define MAXINDEXCATCHUP 8 // seconds
+#define MAXINDEXCATCHUP 8 // number of retries
+#define INDEXCATCHUPWAIT 100 // milliseconds
struct tIndexPes {
uint32_t offset;
@@ -1693,9 +1694,6 @@ struct tIndexTs {
#define INDEXFILECHECKINTERVAL 500 // ms between checks for existence of the regenerated index file
#define INDEXFILETESTINTERVAL 10 // ms between tests for the size of the index file in case of pausing live video
-cMutex cIndexFile::indexListMutex;
-cVector<const cIndexFile *> cIndexFile::indexList;
-
cIndexFile::cIndexFile(const char *FileName, bool Record, bool IsPesRecording, bool PauseLive)
:resumeFile(FileName, IsPesRecording)
{
@@ -1776,13 +1774,10 @@ cIndexFile::cIndexFile(const char *FileName, bool Record, bool IsPesRecording, b
LOG_ERROR_STR(*fileName);
}
}
- if (Record)
- AddToIndexList(this);
}
cIndexFile::~cIndexFile()
{
- RemoveFromIndexList(this);
if (f >= 0)
close(f);
free(index);
@@ -1829,11 +1824,6 @@ bool cIndexFile::CatchUp(int Index)
for (int i = 0; i <= MAXINDEXCATCHUP && (Index < 0 || Index >= last); i++) {
struct stat buf;
if (fstat(f, &buf) == 0) {
- if (!IsInIndexList(this)) {
- close(f);
- f = -1;
- break;
- }
int newLast = int(buf.st_size / sizeof(tIndexTs) - 1);
if (newLast > last) {
int NewSize = size;
@@ -1873,7 +1863,7 @@ bool cIndexFile::CatchUp(int Index)
LOG_ERROR_STR(*fileName);
if (Index < last)
break;
- cCondWait::SleepMs(1000);
+ cCondWait::SleepMs(INDEXCATCHUPWAIT);
}
}
return index != NULL;
@@ -2028,39 +2018,6 @@ int cIndexFile::GetLength(const char *FileName, bool IsPesRecording)
return -1;
}
-void cIndexFile::AddToIndexList(const cIndexFile *IndexFile)
-{
- cMutexLock MutexLock(&indexListMutex);
- for (int i = 0; i < indexList.Size(); i++) {
- if (!indexList[i]) {
- indexList[i] = IndexFile;
- return;
- }
- }
- indexList.Append(IndexFile);
-}
-
-void cIndexFile::RemoveFromIndexList(const cIndexFile *IndexFile)
-{
- cMutexLock MutexLock(&indexListMutex);
- for (int i = 0; i < indexList.Size(); i++) {
- if (indexList[i] == IndexFile) {
- indexList[i] = NULL;
- return;
- }
- }
-}
-
-bool cIndexFile::IsInIndexList(const cIndexFile *IndexFile)
-{
- cMutexLock MutexLock(&indexListMutex);
- for (int i = 0; i < indexList.Size(); i++) {
- if (indexList[i] && !strcmp(indexList[i]->fileName, IndexFile->fileName))
- return true;
- }
- return false;
-}
-
bool GenerateIndex(const char *FileName)
{
if (DirectoryOk(FileName)) {