diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2012-12-24 09:00:55 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2012-12-24 09:00:55 +0100 |
commit | db59a8e745a6a48574f897ec0ce212f31fc87802 (patch) | |
tree | 1c9d79cc3e552dc609a79ac49cb984e57115c816 /recording.c | |
parent | ef3af3b70275056fbe3442eb0b9f56098cda4ed1 (diff) | |
download | vdr-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.c | 51 |
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)) { |