From b7548e51cfc6c42a57f9a81b7e53c912e068bff4 Mon Sep 17 00:00:00 2001 From: lynxnb Date: Thu, 20 Apr 2023 15:47:29 +0200 Subject: [PATCH] Use AndroidX `use` extension function instead of Kotlin built-in one The Kotlin built-in `use` extension function applies to `AutoCloseable` only, and throws an error if the object it's being called on is not an `AutoCloseable`. This causes `OnScreenView` to fail to inflate on SDK < 31 as it retrieved the current theme primary color with a `TypedArray`, which only implements `AutoCloseable` since SDK 31 (Android 12). The AndroidX core library provides a `use` extension function that applies to `TypeArray` instead of `AutoCloseable` so the fix is just a simple import. --- app/src/main/java/emu/skyline/input/onscreen/OnScreenButton.kt | 1 + .../java/emu/skyline/input/onscreen/OnScreenControllerView.kt | 1 + .../java/emu/skyline/input/onscreen/OnScreenItemDefinitions.kt | 1 + 3 files changed, 3 insertions(+) diff --git a/app/src/main/java/emu/skyline/input/onscreen/OnScreenButton.kt b/app/src/main/java/emu/skyline/input/onscreen/OnScreenButton.kt index fca2162f..e2d33c06 100644 --- a/app/src/main/java/emu/skyline/input/onscreen/OnScreenButton.kt +++ b/app/src/main/java/emu/skyline/input/onscreen/OnScreenButton.kt @@ -16,6 +16,7 @@ import android.graphics.drawable.GradientDrawable import android.graphics.drawable.LayerDrawable import android.util.TypedValue import androidx.core.content.ContextCompat +import androidx.core.content.res.use import emu.skyline.R import emu.skyline.input.ButtonId import kotlin.math.roundToInt diff --git a/app/src/main/java/emu/skyline/input/onscreen/OnScreenControllerView.kt b/app/src/main/java/emu/skyline/input/onscreen/OnScreenControllerView.kt index 8f66a489..75f91b8b 100644 --- a/app/src/main/java/emu/skyline/input/onscreen/OnScreenControllerView.kt +++ b/app/src/main/java/emu/skyline/input/onscreen/OnScreenControllerView.kt @@ -21,6 +21,7 @@ import android.view.MotionEvent import android.view.View import android.view.View.OnTouchListener import androidx.annotation.IntRange +import androidx.core.content.res.use import emu.skyline.R import emu.skyline.input.ButtonId import emu.skyline.input.ButtonState diff --git a/app/src/main/java/emu/skyline/input/onscreen/OnScreenItemDefinitions.kt b/app/src/main/java/emu/skyline/input/onscreen/OnScreenItemDefinitions.kt index 4683f2c0..ead604da 100644 --- a/app/src/main/java/emu/skyline/input/onscreen/OnScreenItemDefinitions.kt +++ b/app/src/main/java/emu/skyline/input/onscreen/OnScreenItemDefinitions.kt @@ -13,6 +13,7 @@ import android.graphics.Rect import android.graphics.RectF import android.graphics.Typeface import android.os.SystemClock +import androidx.core.content.res.use import androidx.core.graphics.minus import emu.skyline.R import emu.skyline.input.ButtonId