Merge "Use synchronize instead of Assert.isMainThread" into sc-dev

This commit is contained in:
Evan Laird
2021-05-05 19:56:34 +00:00
committed by Android (Google) Code Review

View File

@@ -85,8 +85,6 @@ class DemoModeController constructor(
} }
override fun addCallback(listener: DemoMode) { override fun addCallback(listener: DemoMode) {
Assert.isMainThread()
// Register this listener for its commands // Register this listener for its commands
val commands = listener.demoCommands() val commands = listener.demoCommands()
@@ -99,21 +97,24 @@ class DemoModeController constructor(
receiverMap[command]!!.add(listener) receiverMap[command]!!.add(listener)
} }
synchronized(this) {
receivers.add(listener) receivers.add(listener)
}
if (isInDemoMode) { if (isInDemoMode) {
listener.onDemoModeStarted() listener.onDemoModeStarted()
} }
} }
override fun removeCallback(listener: DemoMode) { override fun removeCallback(listener: DemoMode) {
Assert.isMainThread() synchronized(this) {
listener.demoCommands().forEach { command -> listener.demoCommands().forEach { command ->
receiverMap[command]!!.remove(listener) receiverMap[command]!!.remove(listener)
} }
receivers.remove(listener) receivers.remove(listener)
} }
}
private fun setIsDemoModeAllowed(enabled: Boolean) { private fun setIsDemoModeAllowed(enabled: Boolean) {
// Turn off demo mode if it was on // Turn off demo mode if it was on
@@ -125,7 +126,13 @@ class DemoModeController constructor(
private fun enterDemoMode() { private fun enterDemoMode() {
isInDemoMode = true isInDemoMode = true
Assert.isMainThread() Assert.isMainThread()
receivers.forEach { r ->
val copy: List<DemoModeCommandReceiver>
synchronized(this) {
copy = receivers.toList()
}
copy.forEach { r ->
r.onDemoModeStarted() r.onDemoModeStarted()
} }
} }
@@ -133,7 +140,13 @@ class DemoModeController constructor(
private fun exitDemoMode() { private fun exitDemoMode() {
isInDemoMode = false isInDemoMode = false
Assert.isMainThread() Assert.isMainThread()
receivers.forEach { r ->
val copy: List<DemoModeCommandReceiver>
synchronized(this) {
copy = receivers.toList()
}
copy.forEach { r ->
r.onDemoModeFinished() r.onDemoModeFinished()
} }
} }
@@ -168,7 +181,11 @@ class DemoModeController constructor(
pw.println(" isInDemoMode=$isInDemoMode") pw.println(" isInDemoMode=$isInDemoMode")
pw.println(" isDemoModeAllowed=$isAvailable") pw.println(" isDemoModeAllowed=$isAvailable")
pw.print(" receivers=[") pw.print(" receivers=[")
receivers.forEach { recv -> val copy: List<DemoModeCommandReceiver>
synchronized(this) {
copy = receivers.toList()
}
copy.forEach { recv ->
pw.print(" ${recv.javaClass.simpleName}") pw.print(" ${recv.javaClass.simpleName}")
} }
pw.println(" ]") pw.println(" ]")