Browse Source

Fix crash when creating a new equalizer and improve the eq list live data

merge-requests/2298/head
Nicolas Pomepuy 1 year ago
parent
commit
9078bcc920
  1. 5
      application/mediadb/src/main/java/org/videolan/vlc/database/EqualizerDao.kt
  2. 3
      application/vlc-android/src/org/videolan/vlc/media/PlayerController.kt
  3. 5
      application/vlc-android/src/org/videolan/vlc/repository/EqualizerRepository.kt
  4. 7
      application/vlc-android/src/org/videolan/vlc/viewmodels/EqualizerViewModel.kt

5
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?
}

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

5
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()
}

7
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) {

Loading…
Cancel
Save