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.
This commit is contained in:
Adrian Ulrich 2021-04-02 10:14:08 +02:00
parent 25937ce3a9
commit 3b2449d000

View File

@ -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;
}
}
}