Fix Interactions with TreeObserver Manager moved to main thread
Reviewed By: lblasa Differential Revision: D42608384 fbshipit-source-id: 20c074eeac1372405f44edc8eb8ab41cb7dd2be9
This commit is contained in:
committed by
Facebook GitHub Bot
parent
73afa391f8
commit
f996f90cf4
@@ -18,9 +18,6 @@ import com.facebook.flipper.plugins.uidebugger.descriptors.MetadataRegister
|
||||
import com.facebook.flipper.plugins.uidebugger.model.InitEvent
|
||||
import com.facebook.flipper.plugins.uidebugger.model.MetadataUpdateEvent
|
||||
import com.facebook.flipper.plugins.uidebugger.observers.TreeObserverFactory
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.serialization.json.Json
|
||||
|
||||
const val LogTag = "ui-debugger"
|
||||
@@ -31,7 +28,6 @@ class UIDebuggerFlipperPlugin(
|
||||
observerFactory: TreeObserverFactory?
|
||||
) : FlipperPlugin {
|
||||
|
||||
val mainScope = CoroutineScope(Dispatchers.Main)
|
||||
private val context: Context =
|
||||
Context(
|
||||
ApplicationRef(application),
|
||||
@@ -65,7 +61,7 @@ class UIDebuggerFlipperPlugin(
|
||||
MetadataUpdateEvent.serializer(),
|
||||
MetadataUpdateEvent(MetadataRegister.extractPendingMetadata())))
|
||||
|
||||
mainScope.launch { context.treeObserverManager.start() }
|
||||
context.treeObserverManager.start()
|
||||
}
|
||||
|
||||
@Throws(Exception::class)
|
||||
@@ -75,10 +71,8 @@ class UIDebuggerFlipperPlugin(
|
||||
|
||||
MetadataRegister.reset()
|
||||
|
||||
mainScope.launch {
|
||||
context.treeObserverManager.stop()
|
||||
context.bitmapPool.recycleAll()
|
||||
}
|
||||
context.treeObserverManager.stop()
|
||||
context.bitmapPool.recycleAll()
|
||||
}
|
||||
|
||||
override fun runInBackground(): Boolean {
|
||||
|
||||
@@ -9,6 +9,7 @@ package com.facebook.flipper.plugins.uidebugger.observers
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.graphics.Bitmap
|
||||
import android.os.Looper
|
||||
import android.util.Base64
|
||||
import android.util.Base64OutputStream
|
||||
import android.util.Log
|
||||
@@ -51,6 +52,7 @@ class TreeObserverManager(val context: Context) {
|
||||
|
||||
private var job: Job? = null
|
||||
private val workerScope = CoroutineScope(Dispatchers.IO)
|
||||
private val mainScope = CoroutineScope(Dispatchers.Main)
|
||||
private val txId = AtomicInteger()
|
||||
|
||||
fun enqueueUpdate(update: SubtreeUpdate) {
|
||||
@@ -68,6 +70,9 @@ class TreeObserverManager(val context: Context) {
|
||||
@SuppressLint("NewApi")
|
||||
fun start() {
|
||||
|
||||
if (Looper.myLooper() != Looper.getMainLooper()) {
|
||||
mainScope.launch { start() }
|
||||
}
|
||||
batchedUpdates = Channel(Channel.UNLIMITED)
|
||||
rootObserver.subscribe(context.applicationRef)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user