Prevent crash in MediaViewerFragment if media player wasn't initialized

This commit is contained in:
Sylvain Berfini 2025-05-21 10:11:18 +02:00
parent b993ba78cf
commit 9028a3a02f
2 changed files with 10 additions and 2 deletions

View file

@ -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(

View file

@ -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)
}
}
}