[Android] PlaylistManager: code factorization
Geoffrey Métais
git at videolan.org
Mon Sep 23 18:11:00 CEST 2019
vlc-android | branch: 3.2.x | Geoffrey Métais <geoffrey.metais at gmail.com> | Mon Sep 23 11:36:07 2019 +0200| [495ce5d90639bb255663bb5a187e95f6fd4cbde2] | committer: Geoffrey Métais
PlaylistManager: code factorization
(cherry picked from commit 55f39cb3576dd2ab98a7a380488b88891d10161b)
> https://code.videolan.org/videolan/vlc-android/commit/495ce5d90639bb255663bb5a187e95f6fd4cbde2
---
.../src/org/videolan/vlc/media/PlaylistManager.kt | 2 +-
.../src/org/videolan/vlc/util/Kextensions.kt | 37 +++++-----------------
2 files changed, 9 insertions(+), 30 deletions(-)
diff --git a/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt b/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
index 4cf0f7c81..a89463acd 100644
--- a/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
+++ b/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
@@ -651,7 +651,7 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList
load(list, 0)
return
}
- val list = withContext(Dispatchers.IO) { list.getWithMLMeta() }
+ val list = withContext(Dispatchers.IO) { list.updateWithMLMeta() }
mediaList.removeEventListener(this)
for (media in list) mediaList.add(media)
mediaList.addEventListener(this)
diff --git a/vlc-android/src/org/videolan/vlc/util/Kextensions.kt b/vlc-android/src/org/videolan/vlc/util/Kextensions.kt
index ae7cd6333..3d2698368 100644
--- a/vlc-android/src/org/videolan/vlc/util/Kextensions.kt
+++ b/vlc-android/src/org/videolan/vlc/util/Kextensions.kt
@@ -11,6 +11,7 @@ import android.os.Build
import android.util.DisplayMetrics
import android.view.View
import android.widget.TextView
+import androidx.annotation.WorkerThread
import androidx.appcompat.widget.AppCompatTextView
import androidx.core.text.PrecomputedTextCompat
import androidx.core.widget.TextViewCompat
@@ -23,8 +24,8 @@ import org.videolan.libvlc.Media
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.medialibrary.interfaces.AbstractMedialibrary
import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper
+import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper.TYPE_ALL
import org.videolan.medialibrary.media.MediaLibraryItem
-import org.videolan.vlc.VLCApplication
import org.videolan.vlc.startMedialibrary
import java.io.File
import java.net.URI
@@ -104,40 +105,18 @@ suspend inline fun <reified T> Context.getFromMl(crossinline block: AbstractMedi
}
}
-
-fun List<AbstractMediaWrapper>.getWithMLMeta() : List<AbstractMediaWrapper> {
- if (this is MutableList<AbstractMediaWrapper>) return updateWithMLMeta()
- val list = mutableListOf<AbstractMediaWrapper>()
+ at WorkerThread
+fun List<AbstractMediaWrapper>.updateWithMLMeta() : MutableList<AbstractMediaWrapper> {
val ml = AbstractMedialibrary.getInstance()
+ val list = mutableListOf<AbstractMediaWrapper>()
for (media in this) {
- if (media.id == 0L) {
- val mw = ml.findMedia(media)
- if (mw.id != 0L) if (mw.type == AbstractMediaWrapper.TYPE_ALL) mw.type = media.type
- list.add(mw)
- }
+ list.add(ml.findMedia(media).apply {
+ if (type == TYPE_ALL) type = media.type
+ })
}
return list
}
-
-fun MutableList<AbstractMediaWrapper>.updateWithMLMeta() : MutableList<AbstractMediaWrapper> {
- val iter = listIterator()
- val ml = AbstractMedialibrary.getInstance()
- try {
- while (iter.hasNext()) {
- val media = iter.next()
- if (media.id == 0L) {
- val mw = ml.findMedia(media)
- if (mw!!.id != 0L) {
- if (mw.type == AbstractMediaWrapper.TYPE_ALL) mw.type = media.getType()
- iter.set(mw)
- }
- }
- }
- } catch (ignored: Exception) {}
- return this
-}
-
@ExperimentalCoroutinesApi
@ObsoleteCoroutinesApi
suspend fun String.scanAllowed() = withContext(Dispatchers.IO) {
More information about the Android
mailing list