[Android] Fix crash when creating a new equalizer and improve the eq list live data
Nicolas Pomepuy
git at videolan.org
Fri Jul 25 11:46:43 UTC 2025
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Thu Jun 26 09:41:51 2025 +0200| [9078bcc920790b57f5e917fd2c2ed1a41787e1d2] | committer: Nicolas Pomepuy
Fix crash when creating a new equalizer and improve the eq list live data
> https://code.videolan.org/videolan/vlc-android/commit/9078bcc920790b57f5e917fd2c2ed1a41787e1d2
---
.../src/main/java/org/videolan/vlc/database/EqualizerDao.kt | 5 -----
.../vlc-android/src/org/videolan/vlc/media/PlayerController.kt | 3 +--
.../src/org/videolan/vlc/repository/EqualizerRepository.kt | 5 -----
.../src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt | 7 ++++++-
4 files changed, 7 insertions(+), 13 deletions(-)
diff --git a/application/mediadb/src/main/java/org/videolan/vlc/database/EqualizerDao.kt b/application/mediadb/src/main/java/org/videolan/vlc/database/EqualizerDao.kt
index 4ef70c583b..56499deea6 100644
--- a/application/mediadb/src/main/java/org/videolan/vlc/database/EqualizerDao.kt
+++ b/application/mediadb/src/main/java/org/videolan/vlc/database/EqualizerDao.kt
@@ -56,12 +56,7 @@ interface EqualizerDao {
@Query("SELECT * FROM equalizer_entry WHERE is_disabled = 0 ORDER BY preset_index ASC LIMIT 1")
fun getFirstEqualizerEntry(): EqualizerWithBands
- @Transaction
- @Query("SELECT * FROM equalizer_entry WHERE is_disabled = 0 ORDER BY preset_index ASC")
- fun getEnabledEqualizerEntries(): Flow<List<EqualizerWithBands>>
-
@Query("SELECT * FROM equalizer_entry WHERE id = :id")
fun getCurrentEqualizer(id: Long): EqualizerWithBands?
-
}
diff --git a/application/vlc-android/src/org/videolan/vlc/media/PlayerController.kt b/application/vlc-android/src/org/videolan/vlc/media/PlayerController.kt
index 06e43d6b2f..0c836ec7e8 100644
--- a/application/vlc-android/src/org/videolan/vlc/media/PlayerController.kt
+++ b/application/vlc-android/src/org/videolan/vlc/media/PlayerController.kt
@@ -84,9 +84,8 @@ class PlayerController(val context: Context) : IVLCVout.Callback, MediaPlayer.Ev
withContext(Dispatchers.IO) { if (!mediaplayer.isReleased) mediaplayer.media = media.apply { if (hasRenderer) parse() } }
mediaplayer.setEventListener(this at PlayerController)
if (!mediaplayer.isReleased) {
- val repository = EqualizerRepository.getInstance(context)
- repository.equalizerEntries
if (Settings.getInstance(context).getBoolean(KEY_EQUALIZER_ENABLED, false)) withContext(Dispatchers.IO) {
+ val repository = EqualizerRepository.getInstance(context)
mediaplayer.setEqualizer(repository.getCurrentEqualizer(context).getEqualizer())
}
mediaplayer.setVideoTitleDisplay(MediaPlayer.Position.Disable, 0)
diff --git a/application/vlc-android/src/org/videolan/vlc/repository/EqualizerRepository.kt b/application/vlc-android/src/org/videolan/vlc/repository/EqualizerRepository.kt
index cf8582cbc6..6665b1caf2 100644
--- a/application/vlc-android/src/org/videolan/vlc/repository/EqualizerRepository.kt
+++ b/application/vlc-android/src/org/videolan/vlc/repository/EqualizerRepository.kt
@@ -37,11 +37,6 @@ import androidx.core.content.edit
class EqualizerRepository(private val equalizerDao: EqualizerDao, private val coroutineContextProvider: CoroutineContextProvider = CoroutineContextProvider()) {
-
- val equalizerEntries by lazy {
- equalizerDao.getEnabledEqualizerEntries()
- }
-
val equalizerEntriesUnfiltered by lazy {
equalizerDao.getAllEqualizerEntries()
}
diff --git a/application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt b/application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt
index bbcbb45e5d..c4df32a234 100644
--- a/application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt
+++ b/application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt
@@ -28,6 +28,7 @@ import android.content.Context
import android.net.Uri
import androidx.core.content.edit
import androidx.fragment.app.FragmentActivity
+import androidx.lifecycle.MediatorLiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
@@ -64,8 +65,12 @@ class EqualizerViewModel(context: Context, private val equalizerRepository: Equa
var presetToDelete:EqualizerWithBands? = null
private var oldEqualizer: EqualizerWithBands? = null
- val equalizerEntries = equalizerRepository.equalizerEntries.asLiveData()
val equalizerUnfilteredEntries = equalizerRepository.equalizerEntriesUnfiltered.asLiveData()
+ val equalizerEntries = MediatorLiveData<List<EqualizerWithBands>>().apply {
+ addSource(equalizerUnfilteredEntries) {
+ value = it.filter { !it.equalizerEntry.isDisabled }.sortedBy { it.equalizerEntry.presetIndex }
+ }
+ }
var currentEqualizerId = 1L
set(value) {
More information about the Android
mailing list