Browse Source

Get medialibrary meta on 'load last playlist'

4.0-vulkan
Geoffrey Métais 8 years ago
parent
commit
0e8d280c37
  1. 20
      vlc-android/src/org/videolan/vlc/media/MediaWrapperList.java
  2. 6
      vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt

20
vlc-android/src/org/videolan/vlc/media/MediaWrapperList.java

@ -20,10 +20,13 @@
*****************************************************************************/
package org.videolan.vlc.media;
import org.videolan.medialibrary.Medialibrary;
import org.videolan.medialibrary.media.MediaWrapper;
import org.videolan.vlc.VLCApplication;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import androidx.annotation.Nullable;
@ -143,7 +146,7 @@ public class MediaWrapperList {
}
}
public int size() {
public synchronized int size() {
return mInternalList.size();
}
@ -169,6 +172,21 @@ public class MediaWrapperList {
return mVideoCount == 0;
}
public void updateWithMLMeta() {
final ListIterator<MediaWrapper> iter = mInternalList.listIterator();
final Medialibrary ml = VLCApplication.getMLInstance();
while (iter.hasNext()) {
final MediaWrapper media = iter.next();
if (media.getId() == 0L) {
final MediaWrapper mw = ml.findMedia(media);
if (mw.getId() != 0) {
if (mw.getType() == MediaWrapper.TYPE_ALL) mw.setType(media.getType());
synchronized (this) { iter.set(mw); }
}
}
}
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();

6
vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt

@ -104,7 +104,7 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList
}
@MainThread
fun load(list: List<MediaWrapper>, position: Int) {
fun load(list: List<MediaWrapper>, position: Int, mlUpdate: Boolean = false) {
mediaList.removeEventListener(this)
mediaList.clear()
previous.clear()
@ -124,6 +124,7 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList
clearABRepeat()
playIndex(currentIndex)
onPlaylistLoaded()
if (mlUpdate) launch(Dispatchers.IO) { mediaList.updateWithMLMeta() }
}
}
@ -159,7 +160,7 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList
val rate = settings.getFloat(PreferencesActivity.VIDEO_SPEED, player.getRate())
if (rate != 1.0f) player.setRate(rate, false)
}
load(playList, position)
load(playList, position, true)
loadingLastPlaylist = false
}
return true
@ -168,7 +169,6 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList
private suspend fun onPlaylistLoaded() {
service.onPlaylistLoaded()
determinePrevAndNextIndices()
// launch(Dispatchers.IO) { mediaList.updateWithMLMeta() }
}
fun play() {

Loading…
Cancel
Save