From 09e31462778af052162caaed5826e2558712aa86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Geoffrey=20M=C3=A9tais?= Date: Mon, 20 Feb 2017 17:46:31 +0100 Subject: [PATCH] Thread audio list updates --- .../vlc/gui/audio/AudioBrowserAdapter.java | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserAdapter.java b/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserAdapter.java index 8305b34a6..18b1dc36e 100644 --- a/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserAdapter.java +++ b/vlc-android/src/org/videolan/vlc/gui/audio/AudioBrowserAdapter.java @@ -52,10 +52,12 @@ import org.videolan.vlc.util.MediaItemDiffCallback; import org.videolan.vlc.util.MediaItemFilter; import org.videolan.vlc.util.Util; +import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; +import java.util.Queue; public class AudioBrowserAdapter extends RecyclerView.Adapter implements FastScroller.SeparatedAdapter, Filterable { @@ -71,6 +73,7 @@ public class AudioBrowserAdapter extends RecyclerView.Adapter mPendingUpdates = new ArrayDeque<>(); public AudioBrowserAdapter(Activity context, int type, IEventsHandler eventsHandler, boolean sections) { mContext = context; @@ -253,15 +256,13 @@ public class AudioBrowserAdapter extends RecyclerView.Adapter 1) + return; + new Thread(new Runnable() { @Override public void run() { final MediaLibraryItem[] newList = mOriginalDataSet == null && hasSections() ? generateList(items) : items; final DiffUtil.DiffResult result = DiffUtil.calculateDiff(new MediaItemDiffCallback(mDataList, newList), false); - addAll(newList, false); - result.dispatchUpdatesTo(AudioBrowserAdapter.this); - mIEventsHandler.onUpdateFinished(AudioBrowserAdapter.this); - + VLCApplication.runOnMainThread(new Runnable() { + @Override + public void run() { + mPendingUpdates.remove(); + addAll(newList, false); + result.dispatchUpdatesTo(AudioBrowserAdapter.this); + mIEventsHandler.onUpdateFinished(AudioBrowserAdapter.this); + if (mPendingUpdates.size() > 0) + dispatchUpdate(mPendingUpdates.peek()); + } + }); } - }); + }).start(); } @MainThread -- GitLab