summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2024-01-27 22:28:54 +0100
committersfan5 <sfan5@live.de>2024-01-27 22:35:25 +0100
commitc6ccabe5854254320b175cde4106ec40d7a30946 (patch)
tree95d18cc94e8dd62c2216cf3363aead222e26e55a
parentdcf8adf28967cb138ece45d0f383d3e83f14f826 (diff)
downloadmpv-c6ccabe5854254320b175cde4106ec40d7a30946.tar.bz2
mpv-c6ccabe5854254320b175cde4106ec40d7a30946.tar.xz
hwdec_aimagereader: handle lack of JNI gracefully
Hwdec drivers are always loaded so it's rude to abort. fixes #13367
-rw-r--r--video/out/hwdec/hwdec_aimagereader.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/video/out/hwdec/hwdec_aimagereader.c b/video/out/hwdec/hwdec_aimagereader.c
index 0dd5497516..c08f97b3c7 100644
--- a/video/out/hwdec/hwdec_aimagereader.c
+++ b/video/out/hwdec/hwdec_aimagereader.c
@@ -138,6 +138,10 @@ static int init(struct ra_hwdec *hw)
if (!gl_check_extension(exts, "EGL_ANDROID_image_native_buffer"))
return -1;
+ JNIEnv *env = MP_JNI_GET_ENV(hw);
+ if (!env)
+ return -1;
+
if (!load_lib_functions(p, hw->log))
return -1;
@@ -167,8 +171,6 @@ static int init(struct ra_hwdec *hw)
}
assert(window);
- JNIEnv *env = MP_JNI_GET_ENV(hw);
- assert(env);
jobject surface = p->ANativeWindow_toSurface(env, window);
p->surface = (*env)->NewGlobalRef(env, surface);
(*env)->DeleteLocalRef(env, surface);
@@ -192,10 +194,10 @@ static int init(struct ra_hwdec *hw)
static void uninit(struct ra_hwdec *hw)
{
struct priv_owner *p = hw->priv;
- JNIEnv *env = MP_JNI_GET_ENV(hw);
- assert(env);
if (p->surface) {
+ JNIEnv *env = MP_JNI_GET_ENV(hw);
+ assert(env);
(*env)->DeleteGlobalRef(env, p->surface);
p->surface = NULL;
}