From 143c520f9894e777b95a72a65b1261922001c7b0 Mon Sep 17 00:00:00 2001 From: Timo Eskola Date: Mon, 3 Sep 2018 09:54:41 +0300 Subject: Wait if recordings state changed while scanning. --- recording.c | 18 +++++++++--------- 1 file 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; -- cgit v1.2.3