[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