summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-09-24 08:55:47 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-09-24 08:55:47 -0300
commitd1ec80948a373fa54b6f2eb7e112b0a76f39d1e2 (patch)
tree22aa3d024a8ea7aeb6f180637e5c4a96e7d496e4
parent30ab7ae0f16ffa5153d5843310aa1df23a147e61 (diff)
parentab170d904519f13accd935899ac7317112d989c8 (diff)
downloadmullvadvpn-d1ec80948a373fa54b6f2eb7e112b0a76f39d1e2.tar.xz
mullvadvpn-d1ec80948a373fa54b6f2eb7e112b0a76f39d1e2.zip
Merge branch 'fix-npe-in-mullvad-tile-service'
-rw-r--r--CHANGELOG.md2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadTileService.kt17
2 files changed, 10 insertions, 9 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bfd78b38b1..3385e58dca 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -58,6 +58,8 @@ Line wrap the file at 100 chars. Th
- Fix the notification sometimes leaving the foreground and becoming dismissable even if the UI was
still visible.
- Fix crash if connection to service is lost while opening the Split Tunneling settings screen.
+- Fix rare crash that could occur when the tunnel state changes when showing or hiding the quick
+ settings tile.
#### Linux
- Fix split tunneling rules preventing `systemd-resolved` from performing DNS lookups for excluded
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadTileService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadTileService.kt
index f216e69726..dfd3213811 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadTileService.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadTileService.kt
@@ -5,19 +5,18 @@ import android.graphics.drawable.Icon
import android.os.Build
import android.service.quicksettings.Tile
import android.service.quicksettings.TileService
+import kotlin.properties.Delegates.observable
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.model.TunnelState
import net.mullvad.mullvadvpn.service.tunnelstate.TunnelStateListener
import net.mullvad.talpid.tunnel.ActionAfterDisconnect
class MullvadTileService : TileService() {
- private var secured = false
- set(value) {
- if (field != value) {
- field = value
- updateTileState()
- }
+ private var secured by observable(false) { _, wasSecured, isSecured ->
+ if (wasSecured != isSecured) {
+ updateTileState()
}
+ }
private lateinit var listener: TunnelStateListener
private lateinit var securedIcon: Icon
@@ -70,13 +69,13 @@ class MullvadTileService : TileService() {
}
override fun onStopListening() {
- super.onStartListening()
-
listener.onStateChange = null
+
+ super.onStartListening()
}
private fun updateTileState() {
- qsTile.apply {
+ qsTile?.apply {
if (secured) {
state = Tile.STATE_ACTIVE
icon = securedIcon