Skip to content

Commit f64f5b1

Browse files
committed
Properly drop Binder connections on death on some providers
1 parent 8dc079a commit f64f5b1

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

bridge-system/src/main/java/com/penumbraos/bridge_system/provider/HandGestureProvider.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.penumbraos.bridge_system.provider
22

3+
import android.os.IBinder
34
import android.os.Looper
45
import android.util.Log
56
import android.view.InputChannel
@@ -81,6 +82,12 @@ class HandGestureProvider(private val looper: Looper) : IHandGestureProvider.Stu
8182
}
8283

8384
override fun registerCallback(callback: IHandGestureCallback) {
85+
callback.asBinder().linkToDeath(object : IBinder.DeathRecipient {
86+
override fun binderDied() {
87+
deregisterCallback(callback)
88+
}
89+
}, 0)
90+
8491
callbacks.add(callback)
8592
registerListenerIfNecessary()
8693
}

bridge-system/src/main/java/com/penumbraos/bridge_system/provider/TouchpadProvider.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.penumbraos.bridge_system.provider
22

3+
import android.os.IBinder
34
import android.os.Looper
45
import android.util.Log
56
import android.view.InputChannel
@@ -37,6 +38,12 @@ class TouchpadProvider(private val looper: Looper) :
3738
}
3839

3940
override fun registerCallback(callback: ITouchpadCallback) {
41+
callback.asBinder().linkToDeath(object : IBinder.DeathRecipient {
42+
override fun binderDied() {
43+
deregisterCallback(callback)
44+
}
45+
}, 0)
46+
4047
callbacks.add(callback)
4148
registerListenerIfNecessary()
4249
}

0 commit comments

Comments
 (0)