From 89258646b0cbf3817da497011e5489faab9c233f Mon Sep 17 00:00:00 2001 From: geeksville Date: Wed, 17 Jun 2020 13:59:32 -0700 Subject: [PATCH] Fix autobug if service goes away while we are changing devices --- .../com/geeksville/mesh/ui/SettingsFragment.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt index 9b04376a4..9f1eadf5b 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt @@ -16,6 +16,7 @@ import android.hardware.usb.UsbDevice import android.hardware.usb.UsbManager import android.os.Bundle import android.os.ParcelUuid +import android.os.RemoteException import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -429,10 +430,16 @@ class BTScanModel(app: Application) : AndroidViewModel(app), Logging { /// Change to a new macaddr selection, updating GUI and radio fun changeScanSelection(context: MainActivity, newAddr: String) { - info("Changing device to ${newAddr.anonymize}") - selectedAddress = newAddr - changeDeviceSelection(context, newAddr) - devices.value = devices.value // Force a GUI update + try { + info("Changing device to ${newAddr.anonymize}") + changeDeviceSelection(context, newAddr) + selectedAddress = + newAddr // do this after changeDeviceSelection, so if it throws the change will be discarded + devices.value = devices.value // Force a GUI update + } catch (ex: RemoteException) { + errormsg("Failed talking to service, probably it is shutting down $ex.message") + // ignore the failure and the GUI won't be updating anyways + } } }