From 9028a3a02fd755bf6a389ba38606df6625f4f61a Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 21 May 2025 10:11:18 +0200 Subject: [PATCH] Prevent crash in MediaViewerFragment if media player wasn't initialized --- .../ui/fileviewer/fragment/MediaViewerFragment.kt | 4 ++-- .../linphone/ui/fileviewer/viewmodel/MediaViewModel.kt | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/fileviewer/fragment/MediaViewerFragment.kt b/app/src/main/java/org/linphone/ui/fileviewer/fragment/MediaViewerFragment.kt index 9dcc8ba3f..d3e8b3dd4 100644 --- a/app/src/main/java/org/linphone/ui/fileviewer/fragment/MediaViewerFragment.kt +++ b/app/src/main/java/org/linphone/ui/fileviewer/fragment/MediaViewerFragment.kt @@ -109,7 +109,7 @@ class MediaViewerFragment : GenericMainFragment() { val textureView = binding.videoPlayer if (textureView.isAvailable) { Log.i("$TAG Surface created, setting display in mediaPlayer") - viewModel.mediaPlayer.setSurface((Surface(textureView.surfaceTexture))) + viewModel.setMediaPlayerSurface((Surface(textureView.surfaceTexture))) } else { Log.i("$TAG Surface not available yet, setting listener") textureView.surfaceTextureListener = object : SurfaceTextureListener { @@ -119,7 +119,7 @@ class MediaViewerFragment : GenericMainFragment() { p2: Int ) { Log.i("$TAG Surface available, setting display in mediaPlayer") - viewModel.mediaPlayer.setSurface(Surface(surfaceTexture)) + viewModel.setMediaPlayerSurface(Surface(surfaceTexture)) } override fun onSurfaceTextureSizeChanged( diff --git a/app/src/main/java/org/linphone/ui/fileviewer/viewmodel/MediaViewModel.kt b/app/src/main/java/org/linphone/ui/fileviewer/viewmodel/MediaViewModel.kt index eecc3ffe0..39f524b9d 100644 --- a/app/src/main/java/org/linphone/ui/fileviewer/viewmodel/MediaViewModel.kt +++ b/app/src/main/java/org/linphone/ui/fileviewer/viewmodel/MediaViewModel.kt @@ -21,6 +21,7 @@ package org.linphone.ui.fileviewer.viewmodel import android.media.AudioAttributes import android.media.MediaPlayer +import android.view.Surface import androidx.annotation.UiThread import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope @@ -225,4 +226,11 @@ class MediaViewModel updatePositionJob?.cancel() updatePositionJob = null } + + @UiThread + fun setMediaPlayerSurface(surface: Surface) { + if (::mediaPlayer.isInitialized) { + mediaPlayer.setSurface(surface) + } + } }