Use AtomicBoolean

This commit is contained in:
topjohnwu 2022-06-17 01:52:36 -07:00
parent 4e2ecdb920
commit 90013e486d

View File

@ -37,6 +37,7 @@ import java.io.*
import java.nio.ByteBuffer import java.nio.ByteBuffer
import java.security.SecureRandom import java.security.SecureRandom
import java.util.* import java.util.*
import java.util.concurrent.atomic.AtomicBoolean
import java.util.zip.ZipEntry import java.util.zip.ZipEntry
import java.util.zip.ZipFile import java.util.zip.ZipFile
@ -420,20 +421,15 @@ abstract class MagiskInstallImpl protected constructor(
protected abstract suspend fun operations(): Boolean protected abstract suspend fun operations(): Boolean
open suspend fun exec(): Boolean { open suspend fun exec(): Boolean {
synchronized(Companion) { if (haveActiveSession.getAndSet(true))
if (haveActiveSession) return false
return false
haveActiveSession = true
}
val result = withContext(Dispatchers.IO) { operations() } val result = withContext(Dispatchers.IO) { operations() }
synchronized(Companion) { haveActiveSession.set(false)
haveActiveSession = false
}
return result return result
} }
companion object { companion object {
private var haveActiveSession = false private var haveActiveSession = AtomicBoolean(false)
} }
} }