summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/dreams/homecontrols/TaskFragmentComponent.kt20
1 files changed, 13 insertions, 7 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/dreams/homecontrols/TaskFragmentComponent.kt b/packages/SystemUI/src/com/android/systemui/dreams/homecontrols/TaskFragmentComponent.kt
index befd822e14cd..d547de24beb5 100644
--- a/packages/SystemUI/src/com/android/systemui/dreams/homecontrols/TaskFragmentComponent.kt
+++ b/packages/SystemUI/src/com/android/systemui/dreams/homecontrols/TaskFragmentComponent.kt
@@ -43,6 +43,8 @@ import com.android.systemui.util.concurrency.DelayableExecutor
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
+import java.lang.ref.WeakReference
+import java.util.concurrent.Executor
typealias FragmentInfoCallback = (TaskFragmentInfo) -> Unit
@@ -68,14 +70,18 @@ constructor(
}
private val fragmentToken = Binder()
- private val organizer: TaskFragmentOrganizer =
- object : TaskFragmentOrganizer(executor) {
- override fun onTransactionReady(transaction: TaskFragmentTransaction) {
- handleTransactionReady(transaction)
- }
- }
- .apply { registerOrganizer(true /* isSystemOrganizer */) }
+ class Organizer(val component: WeakReference<TaskFragmentComponent>, executor: Executor) :
+ TaskFragmentOrganizer(executor) {
+ override fun onTransactionReady(transaction: TaskFragmentTransaction) {
+ component.get()?.handleTransactionReady(transaction)
+ }
+ }
+
+ private val organizer: TaskFragmentOrganizer =
+ Organizer(WeakReference(this), executor).apply {
+ registerOrganizer(true /* isSystemOrganizer */)
+ }
private fun handleTransactionReady(transaction: TaskFragmentTransaction) {
val resultT = WindowContainerTransaction()