From 3b2449d000bd07e62eb73854a6fa6c57a33890a3 Mon Sep 17 00:00:00 2001 From: Adrian Ulrich <adrian@blinkenlights.ch> Date: Fri, 2 Apr 2021 10:14:08 +0200 Subject: [PATCH] fix scan status Just inspecting if there is a pending scan plan is wrong, as we will assume the scan is finished while we are in the last phase. So instead, we now track the scan state explicitly. --- .../android/medialibrary/MediaScanner.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaScanner.java b/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaScanner.java index a15b0018..722c06f7 100644 --- a/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaScanner.java +++ b/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaScanner.java @@ -65,6 +65,10 @@ public class MediaScanner implements Handler.Callback { * Set by KICKSTART rpc */ private boolean mIsInitialScan; + /** + * True if we are currently in a scan phase + */ + private boolean mScanIsRunning; /** * True if we must do a full cleanup of orphaned entries after the scan finished. */ @@ -178,7 +182,7 @@ public class MediaScanner implements Handler.Callback { MediaLibrary.Preferences prefs = MediaLibrary.getPreferences(mContext); MediaScanPlan.Statistics stats = mScanPlan.getStatistics(); - progress.isRunning = mScanPlan.hasNextStep(); + progress.isRunning = mScanIsRunning; progress.lastFile = stats.lastFile; progress.seen = stats.seen; progress.changed = stats.changed; @@ -207,6 +211,7 @@ public class MediaScanner implements Handler.Callback { break; } case MSG_SCAN_FINISHED: { + mScanIsRunning = false; if (mIsInitialScan) { mIsInitialScan = false; MediaLibrary.notifyObserver(LibraryObserver.Type.PLAYLIST, LibraryObserver.Value.OUTDATED, false); @@ -270,6 +275,7 @@ public class MediaScanner implements Handler.Callback { } if (message.what == MSG_SCAN_RPC && !mHandler.hasMessages(MSG_SCAN_RPC)) { + mScanIsRunning = true; MediaScanPlan.Step step = mScanPlan.getNextStep(); if (step == null) { mHandler.sendEmptyMessage(MSG_SCAN_FINISHED); @@ -816,13 +822,6 @@ public class MediaScanner implements Handler.Callback { mStats.reset(); return next; } - - /** - * Returns true if the scan plan has a step to execute - */ - boolean hasNextStep() { - return mSteps.size() > 0; - } } }