Browse Source

Upgrade Kotlin to v1.3

4.0-vulkan
Geoffrey Métais 8 years ago
parent
commit
600c3ace69
  1. 4
      build.gradle
  2. 6
      tools/src/main/java/org/videolan/tools/IOScopedObject.kt
  3. 11
      tools/src/main/java/org/videolan/tools/KotlinExtensions.kt
  4. 2
      vlc-android/build.gradle
  5. 6
      vlc-android/src/org/videolan/vlc/MediaParsingService.kt
  6. 11
      vlc-android/src/org/videolan/vlc/MediaSessionCallback.kt
  7. 6
      vlc-android/src/org/videolan/vlc/PlaybackService.kt
  8. 7
      vlc-android/src/org/videolan/vlc/PreviewVideoInputService.kt
  9. 3
      vlc-android/src/org/videolan/vlc/RecommendationsService.kt
  10. 6
      vlc-android/src/org/videolan/vlc/RendererDelegate.kt
  11. 7
      vlc-android/src/org/videolan/vlc/database/Migrations.kt
  12. 13
      vlc-android/src/org/videolan/vlc/gui/AboutFragment.kt
  13. 12
      vlc-android/src/org/videolan/vlc/gui/DiffUtilAdapter.kt
  14. 6
      vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt
  15. 19
      vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt
  16. 6
      vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt
  17. 6
      vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserAdapter.kt
  18. 25
      vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserFragment.kt
  19. 2
      vlc-android/src/org/videolan/vlc/gui/dialogs/ContextSheet.kt
  20. 4
      vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloaderDialogFragment.kt
  21. 2
      vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitlesAdapter.kt
  22. 6
      vlc-android/src/org/videolan/vlc/gui/helpers/ImageLoader.kt
  23. 6
      vlc-android/src/org/videolan/vlc/gui/helpers/hf/BaseHeadlessFragment.kt
  24. 2
      vlc-android/src/org/videolan/vlc/gui/helpers/hf/StoragePermissionsDelegate.kt
  25. 2
      vlc-android/src/org/videolan/vlc/gui/helpers/hf/WriteExternalDelegate.kt
  26. 2
      vlc-android/src/org/videolan/vlc/gui/network/MRLAdapter.kt
  27. 2
      vlc-android/src/org/videolan/vlc/gui/network/MRLPanelFragment.kt
  28. 2
      vlc-android/src/org/videolan/vlc/gui/tv/MainTvFragment.kt
  29. 2
      vlc-android/src/org/videolan/vlc/gui/tv/SearchFragment.kt
  30. 6
      vlc-android/src/org/videolan/vlc/gui/tv/TvUtil.kt
  31. 4
      vlc-android/src/org/videolan/vlc/gui/wizard/MLWizardActivity.kt
  32. 6
      vlc-android/src/org/videolan/vlc/media/MediaUtils.kt
  33. 6
      vlc-android/src/org/videolan/vlc/media/PlayerController.kt
  34. 8
      vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
  35. 20
      vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt
  36. 8
      vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt
  37. 2
      vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt
  38. 5
      vlc-android/src/org/videolan/vlc/repository/BrowserFavRepository.kt
  39. 6
      vlc-android/src/org/videolan/vlc/repository/DirectoryRepository.kt
  40. 2
      vlc-android/src/org/videolan/vlc/repository/ExternalSubRepository.kt
  41. 4
      vlc-android/src/org/videolan/vlc/repository/OpenSubtitleRepository.kt
  42. 2
      vlc-android/src/org/videolan/vlc/repository/SlaveRepository.kt
  43. 4
      vlc-android/src/org/videolan/vlc/util/FilterDelegate.kt
  44. 9
      vlc-android/src/org/videolan/vlc/util/Kextensions.kt
  45. 2
      vlc-android/src/org/videolan/vlc/util/TvChannels.kt
  46. 2
      vlc-android/src/org/videolan/vlc/util/Workers.kt
  47. 12
      vlc-android/src/org/videolan/vlc/viewmodels/BaseModel.kt
  48. 4
      vlc-android/src/org/videolan/vlc/viewmodels/HistoryModel.kt
  49. 2
      vlc-android/src/org/videolan/vlc/viewmodels/MedialibraryModel.kt
  50. 2
      vlc-android/src/org/videolan/vlc/viewmodels/PlaylistModel.kt
  51. 6
      vlc-android/src/org/videolan/vlc/viewmodels/ScopedModel.kt
  52. 7
      vlc-android/src/org/videolan/vlc/viewmodels/StreamsModel.kt
  53. 2
      vlc-android/src/org/videolan/vlc/viewmodels/SubtitlesModel.kt
  54. 9
      vlc-android/src/org/videolan/vlc/viewmodels/VideosModel.kt
  55. 5
      vlc-android/src/org/videolan/vlc/viewmodels/audio/AlbumModel.kt
  56. 5
      vlc-android/src/org/videolan/vlc/viewmodels/audio/ArtistModel.kt
  57. 5
      vlc-android/src/org/videolan/vlc/viewmodels/audio/GenresModel.kt
  58. 5
      vlc-android/src/org/videolan/vlc/viewmodels/audio/PlaylistsModel.kt
  59. 5
      vlc-android/src/org/videolan/vlc/viewmodels/audio/TracksModel.kt
  60. 10
      vlc-android/src/org/videolan/vlc/viewmodels/browser/BrowserModel.kt
  61. 2
      vlc-android/src/org/videolan/vlc/viewmodels/paged/MLPagedModel.kt
  62. 7
      vlc-android/src/org/videolan/vlc/viewmodels/paged/PagedTracksModel.kt

4
build.gradle

@ -1,8 +1,8 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.android_plugin_version = '3.2.1'
ext.kotlin_version = '1.2.71'
ext.kotlinx_version = '0.30.2'
ext.kotlin_version = '1.3.0'
ext.kotlinx_version = '1.0.0'
repositories {
flatDir dirs: "gradle/plugins"
google()

6
tools/src/main/java/org/videolan/tools/IOScopedObject.kt

@ -1,9 +1,7 @@
package org.videolan.tools
import kotlinx.coroutines.experimental.CoroutineScope
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.IO
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
open class IOScopedObject : CoroutineScope {
override val coroutineContext = Dispatchers.IO

11
tools/src/main/java/org/videolan/tools/KotlinExtensions.kt

@ -3,10 +3,10 @@ package org.videolan.tools
import androidx.lifecycle.GenericLifecycleObserver
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import kotlinx.coroutines.experimental.CoroutineScope
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.Job
import kotlinx.coroutines.experimental.android.Main
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
fun LifecycleOwner.createJob(cancelEvent: Lifecycle.Event = Lifecycle.Event.ON_DESTROY): Job = Job().also { job ->
lifecycle.addObserver(object : GenericLifecycleObserver {
@ -20,10 +20,11 @@ fun LifecycleOwner.createJob(cancelEvent: Lifecycle.Event = Lifecycle.Event.ON_D
}
private val lifecycleCoroutineScopes = mutableMapOf<Lifecycle, CoroutineScope>()
@ExperimentalCoroutinesApi
val LifecycleOwner.coroutineScope: CoroutineScope
get() = lifecycleCoroutineScopes[lifecycle] ?: createJob().let {
val newScope = CoroutineScope(it + Dispatchers.Main.immediate)
lifecycleCoroutineScopes[lifecycle] = newScope
it.invokeOnCompletion { _ -> lifecycleCoroutineScopes -= lifecycle }
it.invokeOnCompletion { lifecycleCoroutineScopes -= lifecycle }
newScope
}

2
vlc-android/build.gradle

@ -193,8 +193,6 @@ android {
}
}
kotlin.experimental.coroutines = "enable"
task generateSources (type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs

6
vlc-android/src/org/videolan/vlc/MediaParsingService.kt

@ -38,9 +38,9 @@ import androidx.core.content.ContextCompat
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import android.text.TextUtils
import android.util.Log
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.experimental.channels.Channel
import kotlinx.coroutines.experimental.channels.actor
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.actor
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.interfaces.DevicesDiscoveryCb

11
vlc-android/src/org/videolan/vlc/MediaSessionCallback.kt

@ -5,9 +5,11 @@ import android.net.Uri
import android.os.Bundle
import android.support.v4.media.session.MediaSessionCompat
import android.support.v4.media.session.PlaybackStateCompat
import android.util.Log
import android.view.KeyEvent
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Runnable
import kotlinx.coroutines.launch
import org.videolan.medialibrary.Tools
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.medialibrary.media.MediaWrapper
@ -25,11 +27,10 @@ internal class MediaSessionCallback(private val playbackService: PlaybackService
}
override fun onMediaButtonEvent(mediaButtonEvent: Intent): Boolean {
val keyEvent by lazy(LazyThreadSafetyMode.NONE) { mediaButtonEvent.getParcelableExtra(Intent.EXTRA_KEY_EVENT) as KeyEvent? }
if (!playbackService.hasMedia() && keyEvent != null
val keyEvent = mediaButtonEvent.getParcelableExtra(Intent.EXTRA_KEY_EVENT) as KeyEvent? ?: return false
if (!playbackService.hasMedia()
&& (keyEvent.keyCode == KeyEvent.KEYCODE_MEDIA_PLAY || keyEvent.keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)) {
return if (keyEvent.action == KeyEvent.ACTION_DOWN) {
Log.d(TAG, KeyEvent.keyCodeToString(keyEvent.keyCode))
PlaybackService.loadLastAudio(playbackService)
true
} else false

6
vlc-android/src/org/videolan/vlc/PlaybackService.kt

@ -41,9 +41,9 @@ import androidx.annotation.MainThread
import androidx.core.app.NotificationManagerCompat
import androidx.core.app.ServiceCompat
import androidx.core.content.ContextCompat
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.experimental.channels.Channel
import kotlinx.coroutines.experimental.channels.actor
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.actor
import org.videolan.libvlc.IVLCVout
import org.videolan.libvlc.Media
import org.videolan.libvlc.MediaPlayer

7
vlc-android/src/org/videolan/vlc/PreviewVideoInputService.kt

@ -10,10 +10,9 @@ import android.net.Uri
import android.os.Build
import android.util.Log
import android.view.Surface
import kotlinx.coroutines.experimental.CoroutineScope
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.android.Main
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.videolan.libvlc.Media
import org.videolan.libvlc.MediaPlayer
import org.videolan.vlc.media.MediaPlayerEventListener

3
vlc-android/src/org/videolan/vlc/RecommendationsService.kt

@ -31,8 +31,7 @@ import android.os.Build
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import androidx.core.content.ContextCompat
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.experimental.android.Main
import kotlinx.coroutines.*
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.vlc.gui.helpers.BitmapUtil
import org.videolan.vlc.gui.video.VideoPlayerActivity

6
vlc-android/src/org/videolan/vlc/RendererDelegate.kt

@ -21,9 +21,9 @@ package org.videolan.vlc
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.videolan.libvlc.RendererDiscoverer
import org.videolan.libvlc.RendererItem
import org.videolan.vlc.util.AppScope

7
vlc-android/src/org/videolan/vlc/database/Migrations.kt

@ -23,10 +23,9 @@ package org.videolan.vlc.database
import androidx.sqlite.db.SupportSQLiteDatabase
import androidx.room.migration.Migration
import android.content.Context
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.GlobalScope
import kotlinx.coroutines.experimental.IO
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import org.videolan.vlc.VLCApplication
import org.videolan.vlc.repository.BrowserFavRepository
import org.videolan.vlc.util.AndroidDevices

13
vlc-android/src/org/videolan/vlc/gui/AboutFragment.kt

@ -21,20 +21,15 @@
package org.videolan.vlc.gui
import android.os.Bundle
import com.google.android.material.tabs.TabLayout
import androidx.fragment.app.Fragment
import androidx.viewpager.widget.ViewPager
import androidx.appcompat.app.AppCompatActivity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.webkit.WebView
import android.widget.ScrollView
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.IO
import kotlinx.coroutines.experimental.android.UI
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.experimental.withContext
import androidx.appcompat.app.AppCompatActivity
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.tools.coroutineScope
import org.videolan.vlc.BuildConfig

12
vlc-android/src/org/videolan/vlc/gui/DiffUtilAdapter.kt

@ -2,13 +2,11 @@ package org.videolan.vlc.gui
import androidx.annotation.MainThread
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import kotlinx.coroutines.experimental.CoroutineScope
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.android.Main
import kotlinx.coroutines.experimental.channels.Channel
import kotlinx.coroutines.experimental.channels.actor
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.actor
import kotlinx.coroutines.withContext
abstract class DiffUtilAdapter<D, VH : androidx.recyclerview.widget.RecyclerView.ViewHolder> : androidx.recyclerview.widget.RecyclerView.Adapter<VH>(), CoroutineScope {
override val coroutineContext = Dispatchers.Main.immediate

6
vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt

@ -49,9 +49,9 @@ import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import android.widget.SeekBar
import android.widget.SeekBar.OnSeekBarChangeListener
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.experimental.channels.Channel
import kotlinx.coroutines.experimental.channels.actor
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.actor
import org.videolan.medialibrary.Tools
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.tools.coroutineScope

19
vlc-android/src/org/videolan/vlc/gui/browser/BaseBrowserFragment.kt

@ -22,23 +22,20 @@
*/
package org.videolan.vlc.gui.browser
import androidx.lifecycle.Observer
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.os.Message
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.core.content.ContextCompat
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import androidx.appcompat.view.ActionMode
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import android.text.TextUtils
import android.view.*
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.experimental.android.UI
import androidx.appcompat.view.ActionMode
import androidx.core.content.ContextCompat
import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Runnable
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.tools.coroutineScope

6
vlc-android/src/org/videolan/vlc/gui/browser/FilePickerFragment.kt

@ -28,12 +28,10 @@ import androidx.lifecycle.ViewModelProviders
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.text.TextUtils
import android.view.View
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.IO
import kotlinx.coroutines.experimental.runBlocking
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.vlc.R

6
vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserAdapter.kt

@ -25,12 +25,10 @@ package org.videolan.vlc.gui.browser
import android.content.Context
import android.net.Uri
import android.preference.PreferenceManager
import android.view.View
import android.widget.CheckBox
import kotlinx.coroutines.experimental.Job
import kotlinx.coroutines.experimental.android.UI
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.medialibrary.media.MediaWrapper

25
vlc-android/src/org/videolan/vlc/gui/browser/StorageBrowserFragment.kt

@ -24,25 +24,20 @@
package org.videolan.vlc.gui.browser
import android.annotation.TargetApi
import androidx.lifecycle.ViewModelProviders
import android.content.DialogInterface
import androidx.databinding.DataBindingUtil
import android.os.Build
import android.os.Bundle
import com.google.android.material.snackbar.Snackbar
import androidx.fragment.app.Fragment
import androidx.collection.SimpleArrayMap
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.AppCompatEditText
import android.text.InputType
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.CheckBox
import kotlinx.coroutines.experimental.CoroutineExceptionHandler
import kotlinx.coroutines.experimental.android.UI
import kotlinx.coroutines.experimental.launch
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.AppCompatEditText
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.ViewModelProviders
import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.launch
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.medialibrary.interfaces.EntryPointsEventsCb
import org.videolan.medialibrary.media.MediaLibraryItem
@ -53,13 +48,13 @@ import org.videolan.vlc.R
import org.videolan.vlc.VLCApplication
import org.videolan.vlc.databinding.BrowserItemBinding
import org.videolan.vlc.gui.AudioPlayerContainerActivity
import org.videolan.vlc.gui.dialogs.*
import org.videolan.vlc.gui.dialogs.showContext
import org.videolan.vlc.gui.helpers.ThreeStatesCheckbox
import org.videolan.vlc.gui.helpers.UiTools
import org.videolan.vlc.util.*
import org.videolan.vlc.util.AndroidDevices
import org.videolan.vlc.util.CTX_CUSTOM_REMOVE
import org.videolan.vlc.viewmodels.browser.BrowserModel
import org.videolan.vlc.viewmodels.browser.*
import org.videolan.vlc.viewmodels.browser.TYPE_STORAGE
import java.io.File
const val KEY_IN_MEDIALIB = "key_in_medialib"

2
vlc-android/src/org/videolan/vlc/gui/dialogs/ContextSheet.kt

@ -29,7 +29,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.launch
import org.videolan.tools.coroutineScope
import org.videolan.vlc.R
import org.videolan.vlc.databinding.ContextItemBinding

4
vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloaderDialogFragment.kt

@ -10,8 +10,8 @@ import android.view.ViewGroup
import android.widget.Toast
import androidx.annotation.StringRes
import androidx.lifecycle.ViewModelProviders
import kotlinx.coroutines.experimental.channels.actor
import kotlinx.coroutines.experimental.isActive
import kotlinx.coroutines.channels.actor
import kotlinx.coroutines.isActive
import org.videolan.tools.coroutineScope
import org.videolan.vlc.R
import org.videolan.vlc.databinding.SubtitleDownloaderDialogBinding

2
vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitlesAdapter.kt

@ -3,7 +3,7 @@ package org.videolan.vlc.gui.dialogs
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.coroutines.experimental.channels.SendChannel
import kotlinx.coroutines.channels.SendChannel
import org.videolan.vlc.databinding.SubtitleDownloadItemBinding
internal class SubtitlesAdapter(private val eventActor: SendChannel<SubtitleEvent>) : androidx.recyclerview.widget.RecyclerView.Adapter<SubtitlesAdapter.ViewHolder>() {

6
vlc-android/src/org/videolan/vlc/gui/helpers/ImageLoader.kt

@ -13,9 +13,9 @@ import androidx.core.view.ViewCompat
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.vlc.BR

6
vlc-android/src/org/videolan/vlc/gui/helpers/hf/BaseHeadlessFragment.kt

@ -27,9 +27,9 @@ import android.content.Context
import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import kotlinx.coroutines.experimental.channels.Channel
import kotlinx.coroutines.experimental.channels.SendChannel
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.SendChannel
import kotlinx.coroutines.launch
import org.videolan.vlc.util.AppScope
open class

2
vlc-android/src/org/videolan/vlc/gui/helpers/hf/StoragePermissionsDelegate.kt

@ -30,7 +30,7 @@ import android.os.Build
import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import kotlinx.coroutines.experimental.channels.Channel
import kotlinx.coroutines.channels.Channel
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.vlc.startMedialibrary
import org.videolan.vlc.util.EXTRA_FIRST_RUN

2
vlc-android/src/org/videolan/vlc/gui/helpers/hf/WriteExternalDelegate.kt

@ -12,7 +12,7 @@ import androidx.documentfile.provider.DocumentFile
import androidx.appcompat.app.AlertDialog
import androidx.preference.PreferenceManager
import android.text.TextUtils
import kotlinx.coroutines.experimental.channels.Channel
import kotlinx.coroutines.channels.Channel
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.vlc.R
import org.videolan.vlc.VLCApplication

2
vlc-android/src/org/videolan/vlc/gui/network/MRLAdapter.kt

@ -26,7 +26,7 @@ import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.coroutines.experimental.channels.SendChannel
import kotlinx.coroutines.channels.SendChannel
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.vlc.R
import org.videolan.vlc.databinding.MrlItemBinding

2
vlc-android/src/org/videolan/vlc/gui/network/MRLPanelFragment.kt

@ -37,7 +37,7 @@ import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
import android.widget.EditText
import android.widget.TextView
import kotlinx.coroutines.experimental.channels.actor
import kotlinx.coroutines.channels.actor
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.tools.coroutineScope
import org.videolan.vlc.R

2
vlc-android/src/org/videolan/vlc/gui/tv/MainTvFragment.kt

@ -34,7 +34,7 @@ import androidx.leanback.app.BrowseSupportFragment
import androidx.leanback.widget.*
import androidx.core.content.ContextCompat
import android.view.View
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.launch
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.media.DummyItem

2
vlc-android/src/org/videolan/vlc/gui/tv/SearchFragment.kt

@ -29,7 +29,7 @@ import android.os.Bundle
import androidx.leanback.app.SearchSupportFragment
import androidx.leanback.widget.*
import android.text.TextUtils
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.launch
import org.videolan.medialibrary.Tools
import org.videolan.medialibrary.media.*
import org.videolan.tools.coroutineScope

6
vlc-android/src/org/videolan/vlc/gui/tv/TvUtil.kt

@ -37,9 +37,9 @@ import androidx.fragment.app.FragmentActivity
import androidx.core.content.ContextCompat
import android.text.TextUtils
import android.view.View
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.media.DummyItem
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.medialibrary.media.MediaWrapper

4
vlc-android/src/org/videolan/vlc/gui/wizard/MLWizardActivity.kt

@ -29,8 +29,8 @@ import androidx.databinding.DataBindingUtil
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import android.view.View
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.videolan.tools.coroutineScope
import org.videolan.vlc.R
import org.videolan.vlc.databinding.MlWizardActivityBinding

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

@ -13,9 +13,9 @@ import android.provider.OpenableColumns
import android.text.TextUtils
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.experimental.channels.Channel
import kotlinx.coroutines.experimental.channels.actor
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.actor
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.medialibrary.Tools
import org.videolan.medialibrary.media.Album

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

@ -6,9 +6,9 @@ import android.support.v4.media.session.PlaybackStateCompat
import android.widget.Toast
import androidx.annotation.MainThread
import androidx.lifecycle.MutableLiveData
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.experimental.channels.Channel
import kotlinx.coroutines.experimental.channels.actor
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.actor
import org.videolan.libvlc.*
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.vlc.BuildConfig

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

@ -8,10 +8,10 @@ import android.util.Log
import android.widget.Toast
import androidx.annotation.MainThread
import androidx.lifecycle.MutableLiveData
import kotlinx.coroutines.experimental.CoroutineScope
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.videolan.libvlc.Media
import org.videolan.libvlc.MediaPlayer
import org.videolan.libvlc.RendererItem

20
vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt

@ -20,19 +20,16 @@
package org.videolan.vlc.providers
import androidx.lifecycle.MutableLiveData
import android.content.Context
import android.net.Uri
import android.os.Handler
import android.os.HandlerThread
import android.os.Process
import androidx.collection.SimpleArrayMap
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.experimental.android.Main
import kotlinx.coroutines.experimental.channels.Channel
import kotlinx.coroutines.experimental.channels.actor
import kotlinx.coroutines.experimental.channels.mapNotNullTo
import kotlinx.coroutines.experimental.channels.mapTo
import androidx.lifecycle.MutableLiveData
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.actor
import kotlinx.coroutines.channels.mapNotNullTo
import org.videolan.libvlc.Media
import org.videolan.libvlc.util.MediaBrowser
import org.videolan.libvlc.util.MediaBrowser.EventListener
@ -41,7 +38,10 @@ import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.medialibrary.media.Storage
import org.videolan.vlc.R
import org.videolan.vlc.util.*
import org.videolan.vlc.util.LiveDataset
import org.videolan.vlc.util.Settings
import org.videolan.vlc.util.VLCInstance
import org.videolan.vlc.util.isBrowserMedia
import java.util.*
const val TAG = "VLC/BrowserProvider"
@ -84,7 +84,7 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me
parseSubDirectories()
}
list?.isEmpty() == false -> launch(Dispatchers.Main) {
dataset.value = list
dataset.value = list ?: return@launch
prefetchLists.remove(url)
parseSubDirectories()
}

8
vlc-android/src/org/videolan/vlc/providers/FileBrowserProvider.kt

@ -25,10 +25,10 @@ import android.content.Context
import android.hardware.usb.UsbDevice
import android.net.Uri
import android.text.TextUtils
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.cancelAndJoin
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.cancelAndJoin
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.medialibrary.media.DummyItem
import org.videolan.medialibrary.media.MediaLibraryItem

2
vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt

@ -22,7 +22,7 @@ package org.videolan.vlc.providers
import androidx.lifecycle.Observer
import android.content.Context
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.launch
import org.videolan.medialibrary.media.DummyItem
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.medialibrary.media.MediaWrapper

5
vlc-android/src/org/videolan/vlc/repository/BrowserFavRepository.kt

@ -24,9 +24,8 @@ import androidx.lifecycle.MediatorLiveData
import android.content.Context
import android.net.Uri
import androidx.annotation.WorkerThread
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.android.Main
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.tools.IOScopedObject
import org.videolan.tools.SingletonHolder

6
vlc-android/src/org/videolan/vlc/repository/DirectoryRepository.kt

@ -2,9 +2,9 @@ package org.videolan.vlc.repository
import android.content.Context
import android.text.TextUtils
import kotlinx.coroutines.experimental.Job
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.videolan.libvlc.util.AndroidUtil
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.tools.IOScopedObject

2
vlc-android/src/org/videolan/vlc/repository/ExternalSubRepository.kt

@ -24,7 +24,7 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.Transformations
import android.content.Context
import android.net.Uri
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.*
import org.videolan.tools.SingletonHolder
import org.videolan.vlc.database.models.ExternalSub
import org.videolan.vlc.database.ExternalSubDao

4
vlc-android/src/org/videolan/vlc/repository/OpenSubtitleRepository.kt

@ -6,7 +6,9 @@ import org.videolan.vlc.api.OpenSubtitleClient
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import kotlin.coroutines.experimental.suspendCoroutine
import kotlin.coroutines.suspendCoroutine
import kotlin.coroutines.resume
import kotlin.coroutines.resumeWithException
class OpenSubtitleRepository(private val openSubtitleService: IOpenSubtitleService) {

2
vlc-android/src/org/videolan/vlc/repository/SlaveRepository.kt

@ -22,7 +22,7 @@ package org.videolan.vlc.repository
import android.content.Context
import android.net.Uri
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.*
import org.videolan.libvlc.Media
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.tools.IOScopedObject

4
vlc-android/src/org/videolan/vlc/util/FilterDelegate.kt

@ -1,8 +1,8 @@
package org.videolan.vlc.util
import androidx.lifecycle.MutableLiveData
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.vlc.VLCApplication

9
vlc-android/src/org/videolan/vlc/util/Kextensions.kt

@ -5,9 +5,9 @@ import android.content.SharedPreferences
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProviders
import androidx.preference.PreferenceManager
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.delay
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.withContext
import org.videolan.libvlc.Media
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.media.MediaWrapper
@ -18,7 +18,8 @@ import java.io.File
import java.net.URI
import java.net.URISyntaxException
import java.util.*
import kotlin.coroutines.experimental.suspendCoroutine
import kotlin.coroutines.suspendCoroutine
import kotlin.coroutines.resume
object Settings : SingletonHolder<SharedPreferences, Context>({ PreferenceManager.getDefaultSharedPreferences(it) })

2
vlc-android/src/org/videolan/vlc/util/TvChannels.kt

@ -30,7 +30,7 @@ import androidx.tvprovider.media.tv.TvContractCompat
import androidx.tvprovider.media.tv.WatchNextProgram
import android.text.TextUtils
import android.util.Log
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.*
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.vlc.*

2
vlc-android/src/org/videolan/vlc/util/Workers.kt

@ -1,7 +1,7 @@
package org.videolan.vlc.util
import android.os.Looper
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.*
fun runBackground(runnable: Runnable) {
if (Looper.myLooper() != Looper.getMainLooper()) runnable.run()

12
vlc-android/src/org/videolan/vlc/viewmodels/BaseModel.kt

@ -22,12 +22,12 @@ package org.videolan.vlc.viewmodels
import androidx.lifecycle.MediatorLiveData
import android.content.Context
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.channels.Channel
import kotlinx.coroutines.experimental.channels.actor
import kotlinx.coroutines.experimental.isActive
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.actor
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.vlc.util.FilterDelegate
import org.videolan.vlc.util.LiveDataset

4
vlc-android/src/org/videolan/vlc/viewmodels/HistoryModel.kt

@ -23,8 +23,8 @@ package org.videolan.vlc.viewmodels
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import android.content.Context
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.media.MediaWrapper

2
vlc-android/src/org/videolan/vlc/viewmodels/MedialibraryModel.kt

@ -21,7 +21,7 @@
package org.videolan.vlc.viewmodels
import android.content.Context
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.launch
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.media.MediaLibraryItem

2
vlc-android/src/org/videolan/vlc/viewmodels/PlaylistModel.kt

@ -25,7 +25,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelProviders
import androidx.fragment.app.Fragment
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.launch
import org.videolan.medialibrary.Tools
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.vlc.PlaybackService

6
vlc-android/src/org/videolan/vlc/viewmodels/ScopedModel.kt

@ -2,9 +2,9 @@ package org.videolan.vlc.viewmodels
import androidx.lifecycle.ViewModel
import android.util.Log
import kotlinx.coroutines.experimental.CoroutineScope
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.SupervisorJob
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
open class ScopedModel : ViewModel(), CoroutineScope {

7
vlc-android/src/org/videolan/vlc/viewmodels/StreamsModel.kt

@ -22,10 +22,9 @@ package org.videolan.vlc.viewmodels
import androidx.lifecycle.MutableLiveData
import androidx.databinding.ObservableField
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.IO
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.vlc.VLCApplication

2
vlc-android/src/org/videolan/vlc/viewmodels/SubtitlesModel.kt

@ -5,7 +5,7 @@ import android.content.Context
import androidx.databinding.Observable
import androidx.databinding.ObservableBoolean
import androidx.databinding.ObservableField
import kotlinx.coroutines.experimental.*
import kotlinx.coroutines.*
import org.videolan.vlc.R
import org.videolan.vlc.api.NoConnectivityException
import org.videolan.vlc.api.OpenSubtitle

9
vlc-android/src/org/videolan/vlc/viewmodels/VideosModel.kt

@ -20,15 +20,14 @@
package org.videolan.vlc.viewmodels
import android.content.Context
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelProviders
import android.content.Context
import androidx.fragment.app.Fragment
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.isActive
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.isActive
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.vlc.R

5
vlc-android/src/org/videolan/vlc/viewmodels/audio/AlbumModel.kt

@ -23,9 +23,8 @@ package org.videolan.vlc.viewmodels.audio
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import android.content.Context
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.IO
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.media.Artist
import org.videolan.medialibrary.media.Genre

5
vlc-android/src/org/videolan/vlc/viewmodels/audio/ArtistModel.kt

@ -23,9 +23,8 @@ package org.videolan.vlc.viewmodels.audio
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import android.content.Context
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.IO
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.vlc.util.EmptyMLCallbacks

5
vlc-android/src/org/videolan/vlc/viewmodels/audio/GenresModel.kt

@ -23,9 +23,8 @@ package org.videolan.vlc.viewmodels.audio
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import android.content.Context
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.IO
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.vlc.util.EmptyMLCallbacks

5
vlc-android/src/org/videolan/vlc/viewmodels/audio/PlaylistsModel.kt

@ -23,9 +23,8 @@ package org.videolan.vlc.viewmodels.audio
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import android.content.Context
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.IO
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.vlc.util.EmptyMLCallbacks

5
vlc-android/src/org/videolan/vlc/viewmodels/audio/TracksModel.kt

@ -23,9 +23,8 @@ package org.videolan.vlc.viewmodels.audio
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import android.content.Context
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.IO
import kotlinx.coroutines.experimental.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.media.*
import org.videolan.vlc.util.Settings

10
vlc-android/src/org/videolan/vlc/viewmodels/browser/BrowserModel.kt

@ -20,13 +20,13 @@
package org.videolan.vlc.viewmodels.browser
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import android.content.Context
import androidx.annotation.MainThread
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.experimental.withContext
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.medialibrary.media.MediaWrapper
import org.videolan.vlc.providers.*

2
vlc-android/src/org/videolan/vlc/viewmodels/paged/MLPagedModel.kt

@ -6,7 +6,7 @@ import androidx.paging.DataSource
import androidx.paging.LivePagedListBuilder
import androidx.paging.PagedList
import androidx.paging.PositionalDataSource
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.launch
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.vlc.viewmodels.SortableModel

7
vlc-android/src/org/videolan/vlc/viewmodels/paged/PagedTracksModel.kt

@ -1,11 +1,10 @@
package org.videolan.vlc.viewmodels.paged
import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import android.content.Context
import kotlinx.coroutines.experimental.Dispatchers
import kotlinx.coroutines.experimental.android.Main
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.videolan.medialibrary.Medialibrary
import org.videolan.medialibrary.media.*
import org.videolan.vlc.util.EmptyMLCallbacks

Loading…
Cancel
Save