[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