Skip to content
Snippets Groups Projects
Commit a53314f7 authored by Geoffrey Métais's avatar Geoffrey Métais
Browse files

Browser: Cancel adapter scope on destroy

(cherry picked from commit 3697cede)
parent 43c7d93f
No related branches found
No related tags found
No related merge requests found
......@@ -10,7 +10,7 @@ import kotlinx.coroutines.channels.actor
@ObsoleteCoroutinesApi
@ExperimentalCoroutinesApi
abstract class DiffUtilAdapter<D, VH : RecyclerView.ViewHolder> : RecyclerView.Adapter<VH>(), CoroutineScope {
override val coroutineContext = Dispatchers.Main.immediate
override val coroutineContext = Dispatchers.Main.immediate + SupervisorJob()
protected var dataset: List<D> = listOf()
private set
......
......@@ -181,6 +181,11 @@ abstract class BaseBrowserFragment : MediaBrowserFragment<BrowserModel>(), IRefr
viewModel.stop()
}
override fun onDestroy() {
adapter.cancel()
super.onDestroy()
}
override fun onSaveInstanceState(outState: Bundle) {
outState.putString(KEY_MRL, mrl)
outState.putParcelable(KEY_MEDIA, currentMedia)
......
......@@ -27,7 +27,10 @@ import android.content.Context
import android.net.Uri
import android.view.View
import androidx.databinding.ViewDataBinding
import kotlinx.coroutines.*
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.ObsoleteCoroutinesApi
import kotlinx.coroutines.launch
import org.videolan.medialibrary.interfaces.AbstractMedialibrary
import org.videolan.medialibrary.interfaces.media.AbstractMediaWrapper
import org.videolan.medialibrary.media.MediaLibraryItem
......@@ -51,7 +54,7 @@ internal class StorageBrowserAdapter(fragment: StorageBrowserFragment) : BaseBro
override fun onBindViewHolder(holder: ViewHolder<ViewDataBinding>, position: Int) {
val vh = holder as MediaViewHolder
vh.job = launch(start = CoroutineStart.UNDISPATCHED) {
vh.job = launch {
var storage = getItem(position)
if (storage.itemType == MediaLibraryItem.TYPE_MEDIA) storage = Storage((storage as AbstractMediaWrapper).uri)
var storagePath = (storage as Storage).uri.path ?: ""
......@@ -100,8 +103,6 @@ internal class StorageBrowserAdapter(fragment: StorageBrowserFragment) : BaseBro
AbstractMedialibrary.getInstance().foldersList
}
folders.forEach {
mediaDirsLocation.add(Uri.decode(if (it.startsWith("file://")) it.substring(7) else it))
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment