reset tracking variables after start scan

forgot about this when i admin and subsonic handlers reuse the same
scanner struct
This commit is contained in:
sentriz
2019-11-28 17:19:04 +00:00
parent b7a1444559
commit 4f93ea7895

View File

@@ -30,11 +30,9 @@ func IsScanning() bool {
return atomic.LoadInt32(&isScanning) == 1 return atomic.LoadInt32(&isScanning) == 1
} }
func SetScanning(status bool) { func SetScanning() func() {
switch { atomic.StoreInt32(&isScanning, 1)
case status: return func() {
atomic.StoreInt32(&isScanning, 1)
default:
atomic.StoreInt32(&isScanning, 0) atomic.StoreInt32(&isScanning, 0)
} }
} }
@@ -74,8 +72,16 @@ func (s *Scanner) Start() error {
if IsScanning() { if IsScanning() {
return errors.New("already scanning") return errors.New("already scanning")
} }
SetScanning(true) unSet := SetScanning()
defer SetScanning(false) defer unSet()
// reset tracking variables when finished
defer func() {
s.seenTracks = make(map[int]struct{})
s.seenFolders = make(map[int]struct{})
s.curFolders = &stack.Stack{}
s.seenTracksNew = 0
s.seenTracksErr = 0
}()
// //
// being walking // being walking
start := time.Now() start := time.Now()