Skip to content

Commit

Permalink
Fix discovered devices stepping on each other (#7)
Browse files Browse the repository at this point in the history
  • Loading branch information
kmod-midori committed Jan 27, 2025
1 parent 0305a2c commit d1365fb
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 10 deletions.
Binary file removed app/img.png
Binary file not shown.
23 changes: 13 additions & 10 deletions app/src/main/java/moe/reimu/catshare/ShareActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,7 @@ fun deviceScanner(): List<DiscoveredDevice> {
LifecycleResumeEffect(context) {
val manager = context.getSystemService(BluetoothManager::class.java)
val adapter = manager.adapter
val devicesLock = Object()

val callback = object : ScanCallback() {
override fun onScanFailed(errorCode: Int) {
Expand Down Expand Up @@ -292,18 +293,20 @@ fun deviceScanner(): List<DiscoveredDevice> {
result.device, senderId, deviceName, brand, supports5Ghz
)
var replaced = false
val newList = discoveredDevices.map {
if (it.id == senderId) {
replaced = true
newDevice
} else {
it
synchronized(devicesLock) {
val newList = discoveredDevices.map {
if (it.id == senderId) {
replaced = true
newDevice
} else {
it
}
}.toMutableList()
if (!replaced) {
newList.add(newDevice)
}
}.toMutableList()
if (!replaced) {
newList.add(newDevice)
discoveredDevices = newList
}
discoveredDevices = newList
}
}

Expand Down

0 comments on commit d1365fb

Please sign in to comment.