[Android] Revert "Fix the upnp service discover crashing when browsing while the remote access is running"
Nicolas Pomepuy
git at videolan.org
Fri Jan 31 09:56:52 UTC 2025
vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Wed Jan 29 09:39:20 2025 +0100| [799f15fbc5b736777cfe4288b28857d246167d39] | committer: Nicolas Pomepuy
Revert "Fix the upnp service discover crashing when browsing while the remote access is running"
This reverts commit 4702f6951534445c711e77774426632d4ed3bc8d.
> https://code.videolan.org/videolan/vlc-android/commit/799f15fbc5b736777cfe4288b28857d246167d39
---
.../org/videolan/vlc/providers/BrowserProvider.kt | 12 +-----
.../org/videolan/vlc/providers/NetworkProvider.kt | 44 ----------------------
2 files changed, 2 insertions(+), 54 deletions(-)
diff --git a/application/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt b/application/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt
index 5e5087660b..bd7418cb44 100644
--- a/application/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt
+++ b/application/vlc-android/src/org/videolan/vlc/providers/BrowserProvider.kt
@@ -130,7 +130,7 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me
mediabrowser?.release()
} catch (e: IllegalStateException) {
}
- cleanMediaBrowser()
+ mediabrowser = null
}
}
}
@@ -152,21 +152,13 @@ abstract class BrowserProvider(val context: Context, val dataset: LiveDataset<Me
mediabrowser?.release()
} catch (e: Exception) {
}
- cleanMediaBrowser()
+ mediabrowser = null
}
is BrowseUrl -> action.deferred.complete(browseUrlImpl(action.url))
}
}
}
- /**
- * Clean the media browser
- *
- */
- open fun cleanMediaBrowser() {
- mediabrowser = null
- }
-
protected open fun initBrowser() {
if (mediabrowser == null) {
registerCreator { MediaBrowser(VLCInstance.getInstance(context), null, browserHandler) }
diff --git a/application/vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt b/application/vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt
index 1649ea6d77..27f61459d4 100644
--- a/application/vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt
+++ b/application/vlc-android/src/org/videolan/vlc/providers/NetworkProvider.kt
@@ -26,8 +26,6 @@ import android.net.Uri
import androidx.core.net.toUri
import androidx.lifecycle.Observer
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.delay
-import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.videolan.libvlc.util.MediaBrowser
import org.videolan.medialibrary.MLServiceLocator
@@ -35,46 +33,12 @@ import org.videolan.medialibrary.interfaces.Medialibrary
import org.videolan.medialibrary.interfaces.media.MediaWrapper
import org.videolan.medialibrary.media.DummyItem
import org.videolan.medialibrary.media.MediaLibraryItem
-import org.videolan.tools.AppScope
import org.videolan.tools.NetworkMonitor
import org.videolan.tools.livedata.LiveDataset
import org.videolan.vlc.R
-import java.util.concurrent.atomic.AtomicBoolean
class NetworkProvider(context: Context, dataset: LiveDataset<MediaLibraryItem>, url: String? = null, val mocked: ArrayList<MediaLibraryItem>? = null): BrowserProvider(context, dataset, url, Medialibrary.SORT_FILENAME, false), Observer<List<MediaWrapper>> {
- override fun initBrowser() {
- if (alreadyRunning.getAndSet(true)) {
- // Use the cached [MediaBrowser] instead of creating a new one
- if (cachedMediaBrowser != null) {
- mediabrowser = cachedMediaBrowser
- } else {
- AppScope.launch(Dispatchers.IO) {
- while (cachedMediaBrowser == null && alreadyRunning.get()) {
- delay(50)
- }
- if (alreadyRunning.get()) {
- mediabrowser = cachedMediaBrowser
- } else {
- super.initBrowser()
- }
- }
- }
- return
- }
- super.initBrowser()
- cachedMediaBrowser = mediabrowser
- }
-
- /**
- * Also clean the cached [MediaBrowser]
- *
- */
- override fun cleanMediaBrowser() {
- super.cleanMediaBrowser()
- cachedMediaBrowser = null
- alreadyRunning.set(false)
- }
override suspend fun browseRootImpl() {
dataset.clear()
@@ -143,12 +107,4 @@ class NetworkProvider(context: Context, dataset: LiveDataset<MediaLibraryItem>,
}
return null
}
-
- companion object {
- // For network discovery, we don't want multiple [MediaBrowser] simultaneously running
- // as it will spawn two service discovery that VLC cannot run simultaneously
- // So we cache the [MediaBrowser] instance here and clean it when the [NetworkProvider] is cleared
- var cachedMediaBrowser: MediaBrowser? = null
- var alreadyRunning = AtomicBoolean(false)
- }
}
\ No newline at end of file
More information about the Android
mailing list