Merge "Use synchronize instead of Assert.isMainThread" into sc-dev
This commit is contained in:
@@ -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,20 +97,23 @@ class DemoModeController constructor(
|
|||||||
receiverMap[command]!!.add(listener)
|
receiverMap[command]!!.add(listener)
|
||||||
}
|
}
|
||||||
|
|
||||||
receivers.add(listener)
|
synchronized(this) {
|
||||||
|
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 ->
|
||||||
|
receiverMap[command]!!.remove(listener)
|
||||||
|
}
|
||||||
|
|
||||||
listener.demoCommands().forEach { command ->
|
receivers.remove(listener)
|
||||||
receiverMap[command]!!.remove(listener)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
receivers.remove(listener)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setIsDemoModeAllowed(enabled: Boolean) {
|
private fun setIsDemoModeAllowed(enabled: Boolean) {
|
||||||
@@ -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(" ]")
|
||||||
|
|||||||
Reference in New Issue
Block a user