public async Task <bool> InitDiscoverer() { if (Locator.VLCService.Instance == null) { await Locator.VLCService.Initialize(); } await Locator.VLCService.PlayerInstanceReady.Task; if (Locator.VLCService.Instance == null) { return(false); } await MediaItemDiscovererSemaphoreSlim.WaitAsync(); var tcs = new TaskCompletionSource <bool>(); await Task.Run(() => { lock (discovererLock) { if (discoverers == null) { discoverers = new Dictionary <string, MediaDiscoverer>(); var discoverersDesc = Locator.VLCService.Instance.mediaDiscoverers(MediaDiscovererCategory.Lan); foreach (var discDesc in discoverersDesc) { var discoverer = new MediaDiscoverer(Locator.VLCService.Instance, discDesc.name()); var mediaList = discoverer.mediaList(); if (mediaList == null) { tcs.TrySetResult(false); } var eventManager = mediaList.eventManager(); eventManager.onItemAdded += MediaListItemAdded; eventManager.onItemDeleted += MediaListItemDeleted; discoverers.Add(discDesc.name(), discoverer); } } foreach (var discoverer in discoverers) { if (!discoverer.Value.isRunning()) { discoverer.Value.start(); } } tcs.TrySetResult(true); } }); await tcs.Task; MediaItemDiscovererSemaphoreSlim.Release(); return(tcs.Task.Result); }
private void InitializeMediaDiscoverers() { foreach (var md in _libVLC.MediaDiscoverers(MediaDiscovererCategory.Lan)) { var discoverer = new MediaDiscoverer(_libVLC, md.Name); discoverer.MediaList.ItemAdded += MediaList_ItemAdded; discoverer.MediaList.ItemDeleted += MediaList_ItemDeleted; _mediaDiscoverers.Add(discoverer); } }
public void CreateStartAndStopDiscoverer() { var mds = _libVLC.MediaDiscoverers(MediaDiscovererCategory.Lan); var md = new MediaDiscoverer(_libVLC, mds.First().Name); Assert.True(md.Start()); Assert.True(md.IsRunning); md.Stop(); Assert.False(md.IsRunning); }
public void CreateStartAndStopDiscoverer() { var instance = new Instance(); var mds = instance.MediaDiscoverers(MediaDiscoverer.Category.Lan); var md = new MediaDiscoverer(instance, mds.First().Name); Assert.True(md.Start()); Assert.True(md.IsRunning); md.Stop(); Assert.False(md.IsRunning); }
public void DisposeMediaDiscoverer() { var mds = _libVLC.MediaDiscoverers(MediaDiscovererCategory.Lan); var md = new MediaDiscoverer(_libVLC, mds.First().Name); Assert.True(md.Start()); Assert.True(md.IsRunning); Assert.NotNull(md.MediaList); md.Dispose(); Assert.IsNull(md.MediaList); Assert.False(md.IsRunning); Assert.AreEqual(IntPtr.Zero, md.NativeReference); }
public async Task DisposeMediaDiscoverer() { var mds = _libVLC.MediaDiscoverers(MediaDiscovererCategory.Lan); var md = new MediaDiscoverer(_libVLC, mds.First().Name); Assert.True(md.Start()); Assert.True(md.IsRunning); Assert.NotNull(md.MediaList); await Task.Delay(1000); foreach (var media in md.MediaList) { Debug.WriteLine(media.Mrl); } md.Dispose(); Assert.IsNull(md.MediaList); Assert.False(md.IsRunning); Assert.AreEqual(IntPtr.Zero, md.NativeReference); }