diff options
author | Timo Eskola <timo@tolleri.net> | 2018-09-03 09:54:41 +0300 |
---|---|---|
committer | Timo Eskola <timo@tolleri.net> | 2018-09-03 09:54:41 +0300 |
commit | 143c520f9894e777b95a72a65b1261922001c7b0 (patch) | |
tree | 9a27c38c2e6ebc5c5d63149e5bec4fffbe4c1731 | |
parent | e793e61250bc01c5c8ab30c61ee88b38ffe56429 (diff) | |
download | vdr-plugin-duplicates-143c520f9894e777b95a72a65b1261922001c7b0.tar.gz vdr-plugin-duplicates-143c520f9894e777b95a72a65b1261922001c7b0.tar.bz2 |
Wait if recordings state changed while scanning.
-rw-r--r-- | recording.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/recording.c b/recording.c index 6dee18c..e670289 100644 --- a/recording.c +++ b/recording.c @@ -119,7 +119,7 @@ void cDuplicateRecordingScannerThread::Action(void) { Scan(); } if (Running()) - cCondWait::SleepMs(250); + cCondWait::SleepMs(500); } } @@ -171,16 +171,15 @@ void cDuplicateRecordingScannerThread::Scan(void) { duplicates.Add(descriptionless); } else delete descriptionless; + if (RecordingsStateChanged()) + return; cStateKey duplicateRecordingsStateKey; DuplicateRecordings.Lock(duplicateRecordingsStateKey, true); - if (!RecordingsStateChanged()) { - DuplicateRecordings.Clear(); - for (cDuplicateRecording *duplicate = duplicates.First(); duplicate; duplicate = duplicates.Next(duplicate)) { - DuplicateRecordings.Add(new cDuplicateRecording(*duplicate)); - } - duplicateRecordingsStateKey.Remove(); - } else - duplicateRecordingsStateKey.Remove(false); + DuplicateRecordings.Clear(); + for (cDuplicateRecording *duplicate = duplicates.First(); duplicate; duplicate = duplicates.Next(duplicate)) { + DuplicateRecordings.Add(new cDuplicateRecording(*duplicate)); + } + duplicateRecordingsStateKey.Remove(); gettimeofday(&stopTime, NULL); double seconds = (((long long)stopTime.tv_sec * 1000000 + stopTime.tv_usec) - ((long long)startTime.tv_sec * 1000000 + startTime.tv_usec)) / 1000000.0; dsyslog("duplicates: Scanning of duplicates took %.2f seconds.", seconds); @@ -191,6 +190,7 @@ bool cDuplicateRecordingScannerThread::RecordingsStateChanged(void) { recordingsStateKey.Reset(); recordingsStateKey.Remove(); dsyslog("duplicates: Recordings state changed while scanning."); + cCondWait::SleepMs(500); return true; } return false; |