diff --git a/buildsystem/azure-pipelines.yml b/buildsystem/azure-pipelines.yml index f64fd9ef7..4cd6d4170 100644 --- a/buildsystem/azure-pipelines.yml +++ b/buildsystem/azure-pipelines.yml @@ -26,7 +26,7 @@ stages: - job: Windows pool: - vmImage: 'windows-latest' + vmImage: 'windows-2022' steps: - template: windows-build.yml diff --git a/buildsystem/base-template.yml b/buildsystem/base-template.yml index 8ed7400fd..ca6b76372 100644 --- a/buildsystem/base-template.yml +++ b/buildsystem/base-template.yml @@ -3,7 +3,15 @@ steps: displayName: 'Use .NET Core SDK' inputs: packageType: sdk - version: 5.0.202 + version: 6.0.100 + +- bash: | + dotnet workload install android + dotnet workload install ios + dotnet workload install macos + dotnet workload install tvos + displayName: 'Install mobile workloads' + condition: ne( variables['Agent.OS'], 'Linux' ) - task: DotNetCoreCLI@2 displayName: 'Install Cake' diff --git a/buildsystem/build.cake b/buildsystem/build.cake index 28095dbab..a36a084b9 100644 --- a/buildsystem/build.cake +++ b/buildsystem/build.cake @@ -1,3 +1,5 @@ +#tool nuget:?package=NuGet.CommandLine&version=5.11.0 + ////////////////////////////////////////////////////////////////////// // ARGUMENTS ////////////////////////////////////////////////////////////////////// @@ -106,6 +108,8 @@ void Build(string project) settings.WithProperty("VersionSuffix", suffixVersion); } + settings.ToolVersion = MSBuildToolVersion.VS2022; + MSBuild(project, settings); } diff --git a/buildsystem/linux-build.yml b/buildsystem/linux-build.yml index 22920a520..2930deba2 100644 --- a/buildsystem/linux-build.yml +++ b/buildsystem/linux-build.yml @@ -1,10 +1,5 @@ steps: - template: base-template.yml -- bash: | - #!/bin/bash - set -ex - git apply buildsystem/linux.patch - displayName: 'Update csproj for linux' - task: DotNetCoreCLI@2 displayName: 'dotnet build' diff --git a/buildsystem/linux.patch b/buildsystem/linux.patch deleted file mode 100644 index b38590395..000000000 --- a/buildsystem/linux.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 4469dbbe84e01c611d8a3a02ee992a6ee8640d39 Mon Sep 17 00:00:00 2001 -From: Martin Finkel -Date: Mon, 6 Apr 2020 13:30:43 +0200 -Subject: [PATCH 1/1] Patch Linux csproj to work with .NET Core 3 - ---- - src/LibVLCSharp/LibVLCSharp.csproj | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/LibVLCSharp/LibVLCSharp.csproj b/src/LibVLCSharp/LibVLCSharp.csproj -index f896126..e787981 100644 ---- a/src/LibVLCSharp/LibVLCSharp.csproj -+++ b/src/LibVLCSharp/LibVLCSharp.csproj -@@ -1,4 +1,4 @@ -- -+ - - LibVLCSharp - The official .NET wrapper around LibVLC. --- -2.17.1 - diff --git a/buildsystem/windows-build.yml b/buildsystem/windows-build.yml index f9ecc92a3..bc95fd80f 100644 --- a/buildsystem/windows-build.yml +++ b/buildsystem/windows-build.yml @@ -10,6 +10,13 @@ steps: $arguments = "/i `"$msiFile`" /quiet" Start-Process msiexec.exe -ArgumentList $arguments -Wait +- task: JavaToolInstaller@0 + displayName: install JDK 11 + inputs: + versionSpec: '11' + jdkArchitectureOption: 'x64' + jdkSourceOption: 'PreInstalled' + - task: DotNetCoreCLI@2 displayName: 'Build' inputs: diff --git a/samples/Uno/LibVLCSharp.Uno.Sample.UWP/LibVLCSharp.Uno.Sample.UWP.csproj b/samples/Uno/LibVLCSharp.Uno.Sample.UWP/LibVLCSharp.Uno.Sample.UWP.csproj index 2d9e30676..3175031d6 100644 --- a/samples/Uno/LibVLCSharp.Uno.Sample.UWP/LibVLCSharp.Uno.Sample.UWP.csproj +++ b/samples/Uno/LibVLCSharp.Uno.Sample.UWP/LibVLCSharp.Uno.Sample.UWP.csproj @@ -24,8 +24,8 @@ LibVLCSharp.Uno.Sample en-US UAP - 10.0.16299.0 - 10.0.16299.0 + 10.0.18362.0 + 10.0.18362.0 14 512 {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} diff --git a/samples/Uno/Sample.MediaPlayerElement/Sample.MediaPlayerElement.UWP/Sample.MediaPlayerElement.UWP.csproj b/samples/Uno/Sample.MediaPlayerElement/Sample.MediaPlayerElement.UWP/Sample.MediaPlayerElement.UWP.csproj index 88bc92a84..17c37aaf1 100644 --- a/samples/Uno/Sample.MediaPlayerElement/Sample.MediaPlayerElement.UWP/Sample.MediaPlayerElement.UWP.csproj +++ b/samples/Uno/Sample.MediaPlayerElement/Sample.MediaPlayerElement.UWP/Sample.MediaPlayerElement.UWP.csproj @@ -24,8 +24,8 @@ Sample.MediaPlayerElement en-US UAP - 10.0.16299.0 - 10.0.16299.0 + 10.0.18362.0 + 10.0.18362.0 14 512 {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 32f47580e..c19c55133 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,14 +1,14 @@  - + $(DefineConstants);IOS;APPLE - + $(DefineConstants);MAC;APPLE - + $(DefineConstants);TVOS;APPLE - + $(DefineConstants);ANDROID diff --git a/src/LibVLCSharp.Android.AWindow/LibVLCSharp.Android.AWindow.csproj b/src/LibVLCSharp.Android.AWindow/LibVLCSharp.Android.AWindow.csproj index d00cf99eb..424875aa3 100644 --- a/src/LibVLCSharp.Android.AWindow/LibVLCSharp.Android.AWindow.csproj +++ b/src/LibVLCSharp.Android.AWindow/LibVLCSharp.Android.AWindow.csproj @@ -12,7 +12,8 @@ LibVLCSharp.Android.AWindow LibVLCSharp.Android.AWindow 512 - v9.0 + v10.0 + class-parse true diff --git a/src/LibVLCSharp.Forms.Platforms.GTK/VideoViewRenderer.cs b/src/LibVLCSharp.Forms.Platforms.GTK/VideoViewRenderer.cs index e968ae610..dc7260b57 100644 --- a/src/LibVLCSharp.Forms.Platforms.GTK/VideoViewRenderer.cs +++ b/src/LibVLCSharp.Forms.Platforms.GTK/VideoViewRenderer.cs @@ -43,7 +43,7 @@ protected override void OnElementChanged(ElementChangedEventArgs e) } } - private void OnMediaPlayerChanging(object sender, MediaPlayerChangingEventArgs e) + private void OnMediaPlayerChanging(object? sender, MediaPlayerChangingEventArgs e) { if (Control == null) { diff --git a/src/LibVLCSharp.Forms.Platforms.WPF/VideoViewRenderer.cs b/src/LibVLCSharp.Forms.Platforms.WPF/VideoViewRenderer.cs index 4d9cd3679..e098e406f 100644 --- a/src/LibVLCSharp.Forms.Platforms.WPF/VideoViewRenderer.cs +++ b/src/LibVLCSharp.Forms.Platforms.WPF/VideoViewRenderer.cs @@ -39,7 +39,7 @@ protected override void OnElementChanged(ElementChangedEventArgs e) } } - private void OnMediaPlayerChanging(object sender, MediaPlayerChangingEventArgs e) + private void OnMediaPlayerChanging(object? sender, MediaPlayerChangingEventArgs e) { Control.MediaPlayer = e.NewMediaPlayer; } diff --git a/src/LibVLCSharp.Forms/LibVLCSharp.Forms.csproj b/src/LibVLCSharp.Forms/LibVLCSharp.Forms.csproj index d4a1a7de8..b42823d83 100644 --- a/src/LibVLCSharp.Forms/LibVLCSharp.Forms.csproj +++ b/src/LibVLCSharp.Forms/LibVLCSharp.Forms.csproj @@ -12,7 +12,7 @@ LibVLCSharp.Forms contains the Xamarin.Forms support for LibVLCSharp through cus Xamarin.Forms support for GTK and WPF are in separate packages. LibVLC needs to be installed separately, see VideoLAN.LibVLC.* packages. netstandard2.0 - $(TargetFrameworks);MonoAndroid81;Xamarin.iOS10;Xamarin.Mac20 + $(TargetFrameworks);monoandroid81;xamarin.ios10;xamarin.mac20 LibVLCSharp.Forms LibVLCSharp.Forms @@ -27,10 +27,10 @@ Xamarin.Forms support for GTK and WPF are in separate packages. LibVLC needs to - + - + diff --git a/src/LibVLCSharp.Forms/Platforms/Android/VideoViewRenderer.cs b/src/LibVLCSharp.Forms/Platforms/Android/VideoViewRenderer.cs index e5ce28748..afdc7b5e4 100644 --- a/src/LibVLCSharp.Forms/Platforms/Android/VideoViewRenderer.cs +++ b/src/LibVLCSharp.Forms/Platforms/Android/VideoViewRenderer.cs @@ -51,7 +51,7 @@ protected override void OnElementChanged(ElementChangedEventArgs e) } } - private void OnMediaPlayerChanging(object sender, MediaPlayerChangingEventArgs e) + private void OnMediaPlayerChanging(object? sender, MediaPlayerChangingEventArgs e) { Control.MediaPlayer = e.NewMediaPlayer; Control.TriggerLayoutChangeListener(); diff --git a/src/LibVLCSharp.Forms/Platforms/Apple/VideoViewRenderer.cs b/src/LibVLCSharp.Forms/Platforms/Apple/VideoViewRenderer.cs index 79a49b356..9901aa4c2 100644 --- a/src/LibVLCSharp.Forms/Platforms/Apple/VideoViewRenderer.cs +++ b/src/LibVLCSharp.Forms/Platforms/Apple/VideoViewRenderer.cs @@ -59,7 +59,7 @@ protected override void OnElementChanged(ElementChangedEventArgs()) { @@ -231,7 +231,7 @@ private void PageAppearing(object sender, Page e) } } - private void PageDisappearing(object sender, Page e) + private void PageDisappearing(object? sender, Page e) { if (e == this.FindAncestor()) { @@ -240,7 +240,7 @@ private void PageDisappearing(object sender, Page e) } } - private void GestureRecognized(object sender, EventArgs e) + private void GestureRecognized(object? sender, EventArgs e) { PlaybackControls.Show(); } diff --git a/src/LibVLCSharp.Tests/CoreLoadingTests.cs b/src/LibVLCSharp.Tests/CoreLoadingTests.cs index 1ef5e6152..2aad4210c 100644 --- a/src/LibVLCSharp.Tests/CoreLoadingTests.cs +++ b/src/LibVLCSharp.Tests/CoreLoadingTests.cs @@ -10,7 +10,7 @@ public class CoreLoadingTests [Test] public void LoadLibVLCFromSpecificPath() { - var dirPath = Path.GetDirectoryName(typeof(CoreLoadingTests).Assembly.Location); + var dirPath = Path.GetDirectoryName(typeof(CoreLoadingTests).Assembly.Location)!; var finalPath = Path.Combine(dirPath, "libvlc", "win-x86"); Assert.DoesNotThrow(() => Core.Initialize(finalPath), "fail to load libVLC dll at specified location"); @@ -24,4 +24,4 @@ public void LoadLibVLCFromInferredPath() var libVLC = new LibVLC("--no-audio", "--no-video"); } } -} \ No newline at end of file +} diff --git a/src/LibVLCSharp.Tests/LibVLCAPICoverage.cs b/src/LibVLCSharp.Tests/LibVLCAPICoverage.cs index 0822249b8..176bc64d9 100644 --- a/src/LibVLCSharp.Tests/LibVLCAPICoverage.cs +++ b/src/LibVLCSharp.Tests/LibVLCAPICoverage.cs @@ -28,15 +28,15 @@ public async Task CheckLibVLCCoverage() libvlc3deprecatedSym = (await httpClient.GetStringAsync(LibVLCDeprecatedSymUrl)).Split(new[] { '\r', '\n' }).Where(s => !string.IsNullOrEmpty(s)).ToArray(); } - List dllImports = new List(); + var dllImports = new List(); // retrieving EventManager using reflection because the type is internal var eventManager = typeof(MediaPlayer).GetRuntimeProperties() .First(n => n.Name.Equals("EventManager")) .PropertyType - .BaseType; + .BaseType!; - List libvlcTypes = new List + var libvlcTypes = new List { typeof(LibVLC), typeof(MediaPlayer), @@ -77,26 +77,26 @@ public async Task CheckLibVLCCoverage() deprecatedSymbols.Add(finalSymbol.Trim()); } - List implementedButHidden = new List + var implementedButHidden = new List { "libvlc_media_player_set_android_context", // android build only "libvlc_free" // hidden in internal type }; // these symbols are internal, should not be in libvlc.sym and have been removed in libvlc 4+ - List internalSymbolsThatShouldNotBeThere = new List + var internalSymbolsThatShouldNotBeThere = new List { "libvlc_get_input_thread", "libvlc_media_new_from_input_item", "libvlc_media_set_state" }; // not implemented symbols for lack of use case or user interest - List notImplementedOnPurpose = new List + var notImplementedOnPurpose = new List { "libvlc_printerr", "libvlc_vprinterr", "libvlc_clock", "libvlc_dialog_get_context", "libvlc_dialog_set_context", "libvlc_event_type_name", "libvlc_log_get_object", "libvlc_vlm", "libvlc_media_list_player", "libvlc_media_library" }; - List exclude = new List(); + var exclude = new List(); exclude.AddRange(implementedButHidden); exclude.AddRange(internalSymbolsThatShouldNotBeThere); exclude.AddRange(notImplementedOnPurpose); @@ -115,7 +115,7 @@ public async Task CheckLibVLCCoverage() var arg = attr.NamedArguments.FirstOrDefault(a => a.MemberName.Equals("EntryPoint")); if (arg == default) continue; - var sym = (string)arg.TypedValue.Value; + var sym = (string)arg.TypedValue.Value!; dllImports.Add(sym); } @@ -141,4 +141,4 @@ public async Task CheckLibVLCCoverage() Assert.Zero(missingApisCount); } } -} \ No newline at end of file +} diff --git a/src/LibVLCSharp.Tests/MediaDiscovererTests.cs b/src/LibVLCSharp.Tests/MediaDiscovererTests.cs index 8779b7a0b..5db019671 100644 --- a/src/LibVLCSharp.Tests/MediaDiscovererTests.cs +++ b/src/LibVLCSharp.Tests/MediaDiscovererTests.cs @@ -14,7 +14,7 @@ public class MediaDiscovererTests : BaseSetup public void CreateStartAndStopDiscoverer() { var mds = _libVLC.MediaDiscoverers(MediaDiscovererCategory.Lan); - var md = new MediaDiscoverer(_libVLC, mds.First().Name); + var md = new MediaDiscoverer(_libVLC, mds.First().Name!); Assert.True(md.Start()); Assert.True(md.IsRunning); md.Stop(); @@ -25,12 +25,12 @@ public void CreateStartAndStopDiscoverer() public async Task DisposeMediaDiscoverer() { var mds = _libVLC.MediaDiscoverers(MediaDiscovererCategory.Lan); - var md = new MediaDiscoverer(_libVLC, mds.First().Name); + 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) + foreach(var media in md.MediaList!) { Debug.WriteLine(media.Mrl); } @@ -40,4 +40,4 @@ public async Task DisposeMediaDiscoverer() Assert.AreEqual(IntPtr.Zero, md.NativeReference); } } -} \ No newline at end of file +} diff --git a/src/LibVLCSharp.Tests/MediaTests.cs b/src/LibVLCSharp.Tests/MediaTests.cs index c6a7576ae..b8cddbe5e 100644 --- a/src/LibVLCSharp.Tests/MediaTests.cs +++ b/src/LibVLCSharp.Tests/MediaTests.cs @@ -29,10 +29,10 @@ public void CreateMediaFromUri() [Test] public void CreateMediaFail() { - Assert.Throws(() => new Media(null, Path.GetTempFileName())); + Assert.Throws(() => new Media(null!, Path.GetTempFileName())); Assert.Throws(() => new Media(_libVLC, string.Empty)); Assert.Throws(() => new Media(_libVLC, new Uri("/hello.mp4", UriKind.Relative))); - Assert.Throws(() => new Media(_libVLC, uri: null)); + Assert.Throws(() => new Media(_libVLC, uri: null!)); } [Test] diff --git a/src/LibVLCSharp.Uno/LibVLCSharp.Uno.csproj b/src/LibVLCSharp.Uno/LibVLCSharp.Uno.csproj index 944b73680..f2ec913a4 100644 --- a/src/LibVLCSharp.Uno/LibVLCSharp.Uno.csproj +++ b/src/LibVLCSharp.Uno/LibVLCSharp.Uno.csproj @@ -3,8 +3,8 @@ LibVLCSharp.Uno Uno integration for LibVLCSharp - Xamarin.iOS10;MonoAndroid81 - $(TargetFrameworks);uap10.0.16299 + xamarin.ios10;monoandroid81 + $(TargetFrameworks);uap10.0.18362 true LibVLCSharp.Uno is the integration of LibVLCSharp with the Uno Platform on Windows, iOS and Android. @@ -12,7 +12,10 @@ It also contains a VLC MediaPlayerElement for the Uno Platform (UWP, Android, iO $(PackageTags);uno LibVLCSharp.Uno LibVLCSharp.Uno - + + + 10.0.19041.0 + @@ -38,7 +41,7 @@ It also contains a VLC MediaPlayerElement for the Uno Platform (UWP, Android, iO - + @@ -46,12 +49,12 @@ It also contains a VLC MediaPlayerElement for the Uno Platform (UWP, Android, iO - + - + diff --git a/src/LibVLCSharp.Uno/MediaPlayerElement.cs b/src/LibVLCSharp.Uno/MediaPlayerElement.cs index 113e7714e..3ec478844 100644 --- a/src/LibVLCSharp.Uno/MediaPlayerElement.cs +++ b/src/LibVLCSharp.Uno/MediaPlayerElement.cs @@ -95,7 +95,7 @@ protected override void OnApplyTemplate() } } - private void OnPointerMoved(object sender, RoutedEventArgs e) + private void OnPointerMoved(object? sender, RoutedEventArgs e) { PlaybackControls?.Show(); } diff --git a/src/LibVLCSharp.Uno/VideoView.UWP.cs b/src/LibVLCSharp.Uno/VideoView.UWP.cs index b36bb7e26..fae349c9d 100644 --- a/src/LibVLCSharp.Uno/VideoView.UWP.cs +++ b/src/LibVLCSharp.Uno/VideoView.UWP.cs @@ -37,7 +37,7 @@ event EventHandler IVideoControl.SizeChanged } } - private void VideoView_SizeChanged(object sender, Windows.UI.Xaml.SizeChangedEventArgs e) + private void VideoView_SizeChanged(object? sender, Windows.UI.Xaml.SizeChangedEventArgs e) { _sizeChangedHandler?.Invoke(this, EventArgs.Empty); } diff --git a/src/LibVLCSharp.Uno/VideoViewWrapper.Android.iOS.cs b/src/LibVLCSharp.Uno/VideoViewWrapper.Android.iOS.cs index 3ed580e18..7669d52cc 100644 --- a/src/LibVLCSharp.Uno/VideoViewWrapper.Android.iOS.cs +++ b/src/LibVLCSharp.Uno/VideoViewWrapper.Android.iOS.cs @@ -136,7 +136,7 @@ event EventHandler IVideoControl.SizeChanged } } - private void VideoView_SizeChanged(object sender, SizeChangedEventArgs e) + private void VideoView_SizeChanged(object? sender, SizeChangedEventArgs e) { _sizeChangedHandler?.Invoke(this, EventArgs.Empty); } diff --git a/src/LibVLCSharp.WPF/ForegroundWindow.cs b/src/LibVLCSharp.WPF/ForegroundWindow.cs index b7d2352d3..73712f3b4 100644 --- a/src/LibVLCSharp.WPF/ForegroundWindow.cs +++ b/src/LibVLCSharp.WPF/ForegroundWindow.cs @@ -50,12 +50,12 @@ internal ForegroundWindow(FrameworkElement background) _bckgnd.Unloaded += Background_Unloaded; } - void Background_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) + void Background_DataContextChanged(object? sender, DependencyPropertyChangedEventArgs e) { DataContext = e.NewValue; } - void Background_Unloaded(object sender, RoutedEventArgs e) + void Background_Unloaded(object? sender, RoutedEventArgs e) { _bckgnd.SizeChanged -= Wndhost_SizeChanged; _bckgnd.LayoutUpdated -= RefreshOverlayPosition; @@ -68,7 +68,7 @@ void Background_Unloaded(object sender, RoutedEventArgs e) Hide(); } - void Background_Loaded(object sender, RoutedEventArgs e) + void Background_Loaded(object? sender, RoutedEventArgs e) { if (_wndhost != null && IsVisible) { @@ -123,7 +123,7 @@ void RefreshOverlayPosition(object? sender, EventArgs e) Top = targetPoints.Y; } - void Wndhost_SizeChanged(object sender, SizeChangedEventArgs e) + void Wndhost_SizeChanged(object? sender, SizeChangedEventArgs e) { var source = PresentationSource.FromVisual(_wndhost); if (source == null) @@ -140,7 +140,7 @@ void Wndhost_SizeChanged(object sender, SizeChangedEventArgs e) Width = size.X; } - void Wndhost_Closing(object sender, System.ComponentModel.CancelEventArgs e) + void Wndhost_Closing(object? sender, System.ComponentModel.CancelEventArgs e) { Close(); diff --git a/src/LibVLCSharp/LibVLCSharp.csproj b/src/LibVLCSharp/LibVLCSharp.csproj index 8f2c3e89c..1f4e1a8e3 100644 --- a/src/LibVLCSharp/LibVLCSharp.csproj +++ b/src/LibVLCSharp/LibVLCSharp.csproj @@ -28,9 +28,9 @@ This package also contains the views for the following platforms: If you need Xamarin.Forms support, see LibVLCSharp.Forms. LibVLC needs to be installed separately, see VideoLAN.LibVLC.* packages. - netstandard2.1;netstandard2.0;netstandard1.1 - $(TargetFrameworks);MonoAndroid81;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10 - $(TargetFrameworks);uap10.0;uap10.0.16299;net40;net471 + netstandard2.1;netstandard2.0;netstandard1.1;net40;net471 + $(TargetFrameworks);monoandroid81;xamarin.ios10;xamarin.mac20 + $(TargetFrameworks);uap10.0.18362;net6.0;net6.0-windows;net6.0-ios;net6.0-android;net6.0-tvos;net6.0-macos;net6.0-maccatalyst $(TargetsForTfmSpecificBuildOutput);IncludeAWindow LibVLCSharp LibVLCSharp @@ -39,16 +39,17 @@ LibVLC needs to be installed separately, see VideoLAN.LibVLC.* packages. true + 10.0.19041.0 - + - + @@ -75,7 +76,7 @@ LibVLC needs to be installed separately, see VideoLAN.LibVLC.* packages. - + diff --git a/src/LibVLCSharp/Platforms/Apple/VideoView.cs b/src/LibVLCSharp/Platforms/Apple/VideoView.cs index 1597c51aa..28261303f 100644 --- a/src/LibVLCSharp/Platforms/Apple/VideoView.cs +++ b/src/LibVLCSharp/Platforms/Apple/VideoView.cs @@ -2,26 +2,26 @@ using LibVLCSharp.Shared; -#if IOS || TVOS +#if IOS || TVOS || __MACCATALYST__ using UIKit; -#elif MAC +#elif __MACOS__ using AppKit; #endif -#if IOS +#if IOS || __MACCATALYST__ namespace LibVLCSharp.Platforms.iOS #elif TVOS namespace LibVLCSharp.Platforms.tvOS -#elif MAC +#elif __MACOS__ namespace LibVLCSharp.Platforms.Mac #endif { /// /// VideoView implementation for the Apple platform /// -#if IOS || TVOS - public class VideoView : UIView, IVideoView -#elif MAC +#if IOS || TVOS || __MACCATALYST__ +public class VideoView : UIView, IVideoView +#elif __MACOS__ public class VideoView : NSView, IVideoView #endif { diff --git a/src/LibVLCSharp/Shared/Core/Core.cs b/src/LibVLCSharp/Shared/Core/Core.cs index d46cf1ed9..bfcceceb3 100644 --- a/src/LibVLCSharp/Shared/Core/Core.cs +++ b/src/LibVLCSharp/Shared/Core/Core.cs @@ -37,7 +37,7 @@ partial struct Native static void EnsureVersionsMatch() { var libvlcMajorVersion = int.Parse(Native.LibVLCVersion().FromUtf8()?.Split('.').FirstOrDefault() ?? "0"); - var libvlcsharpMajorVersion = Assembly.GetExecutingAssembly().GetName().Version.Major; + var libvlcsharpMajorVersion = Assembly.GetExecutingAssembly().GetName().Version?.Major; if (libvlcMajorVersion != libvlcsharpMajorVersion) throw new VLCException($"Version mismatch between LibVLC {libvlcMajorVersion} and LibVLCSharp {libvlcsharpMajorVersion}. " + $"They must share the same major version number"); diff --git a/src/LibVLCSharp/Shared/Helpers/MarshalUtils.cs b/src/LibVLCSharp/Shared/Helpers/MarshalUtils.cs index 8e2316ddd..557322f6c 100644 --- a/src/LibVLCSharp/Shared/Helpers/MarshalUtils.cs +++ b/src/LibVLCSharp/Shared/Helpers/MarshalUtils.cs @@ -9,6 +9,7 @@ internal static class MarshalUtils { internal readonly struct Native { +#pragma warning disable IDE1006 // Naming Styles #if NETFRAMEWORK || NETSTANDARD #region Windows @@ -59,6 +60,7 @@ internal readonly struct Native [DllImport(Constants.Msvcrt, EntryPoint = "vsnprintf", CallingConvention = CallingConvention.Cdecl)] public static extern int vsnprintf_windows(IntPtr buffer, UIntPtr size, IntPtr format, IntPtr args); +#pragma warning restore IDE1006 // Naming Styles } #region logging @@ -139,7 +141,7 @@ static string LinuxX64LogCallback(IntPtr format, IntPtr args) } } - static string UseStructurePointer(T structure, Func action) + static string UseStructurePointer(T structure, Func action) where T: notnull { var structurePointer = IntPtr.Zero; try @@ -154,7 +156,7 @@ static string UseStructurePointer(T structure, Func action) } } - static void UseStructurePointer(T structure, Action action) + static void UseStructurePointer(T structure, Action action) where T : notnull { var structurePointer = IntPtr.Zero; try @@ -169,6 +171,7 @@ static void UseStructurePointer(T structure, Action action) } } +#pragma warning disable IDE1006 // Naming Styles static int vsnprintf(IntPtr buffer, UIntPtr size, IntPtr format, IntPtr args) { #if ANDROID @@ -196,6 +199,7 @@ static int vsprintf(IntPtr buffer, IntPtr format, IntPtr args) } #endregion +#pragma warning restore IDE1006 // Naming Styles /// /// Helper for libvlc_new @@ -265,7 +269,7 @@ internal static TU[] Retrieve(Func getRef, Func retrie } var resultList = new List(); - IntPtr nextRef = nativeRef; + var nextRef = nativeRef; T structure; TU obj; @@ -509,7 +513,7 @@ internal static T PtrToStructure(IntPtr ptr) #if NETSTANDARD1_1 || NET40 return (T)Marshal.PtrToStructure(ptr, typeof(T)); #else - return Marshal.PtrToStructure(ptr); + return Marshal.PtrToStructure(ptr)!; #endif } diff --git a/src/LibVLCSharp/Shared/Media.cs b/src/LibVLCSharp/Shared/Media.cs index 1bf189e62..43d3b2024 100644 --- a/src/LibVLCSharp/Shared/Media.cs +++ b/src/LibVLCSharp/Shared/Media.cs @@ -467,7 +467,7 @@ public async Task Parse(MediaParseOptions options = MediaPars tcs.TrySetCanceled(); }); - void OnParsedChanged(object sender, MediaParsedChangedEventArgs mediaParsedChangedEventArgs) + void OnParsedChanged(object? sender, MediaParsedChangedEventArgs mediaParsedChangedEventArgs) => tcs.TrySetResult(mediaParsedChangedEventArgs.ParsedStatus); try @@ -613,7 +613,7 @@ public bool AddSlave(MediaSlaveType type, uint priority, Uri uri) /// /// the media to compare this one with /// - public override bool Equals(object obj) + public override bool Equals(object? obj) { return obj is Media media && EqualityComparer.Default.Equals(NativeReference, media.NativeReference); diff --git a/src/LibVLCSharp/Shared/MediaPlayer.cs b/src/LibVLCSharp/Shared/MediaPlayer.cs index 14daf6791..2b55fa0d9 100644 --- a/src/LibVLCSharp/Shared/MediaPlayer.cs +++ b/src/LibVLCSharp/Shared/MediaPlayer.cs @@ -1219,7 +1219,7 @@ public int Volume /// /// the mediaplayer instance to compare this to /// - public override bool Equals(object obj) + public override bool Equals(object? obj) { return obj is MediaPlayer player && EqualityComparer.Default.Equals(NativeReference, player.NativeReference); diff --git a/src/LibVLCSharp/Shared/MediaPlayerElement/AspectRatioManager.cs b/src/LibVLCSharp/Shared/MediaPlayerElement/AspectRatioManager.cs index e09fa05f7..c24aa3a2f 100644 --- a/src/LibVLCSharp/Shared/MediaPlayerElement/AspectRatioManager.cs +++ b/src/LibVLCSharp/Shared/MediaPlayerElement/AspectRatioManager.cs @@ -75,12 +75,12 @@ protected override void UnsubscribeEvents(Shared.MediaPlayer mediaPlayer) mediaPlayer.ESSelected -= MediaPlayer_ESSelectedAsync; } - private async void MediaPlayer_ESSelectedAsync(object sender, MediaPlayerESSelectedEventArgs e) + private async void MediaPlayer_ESSelectedAsync(object? sender, MediaPlayerESSelectedEventArgs e) { await DispatcherInvokeAsync(() => UpdateAspectRatio()); } - private void VideoView_SizeChanged(object sender, EventArgs args) + private void VideoView_SizeChanged(object? sender, EventArgs args) { UpdateAspectRatio(); } diff --git a/src/LibVLCSharp/Shared/MediaPlayerElement/AutoHideNotifier.cs b/src/LibVLCSharp/Shared/MediaPlayerElement/AutoHideNotifier.cs index 558f21a46..b936eb25c 100644 --- a/src/LibVLCSharp/Shared/MediaPlayerElement/AutoHideNotifier.cs +++ b/src/LibVLCSharp/Shared/MediaPlayerElement/AutoHideNotifier.cs @@ -109,7 +109,7 @@ private void StopTimer() Timer.Change(Timeout.Infinite, Timeout.Infinite); } - private async void OnStateChangedAsync(object sender, EventArgs e) + private async void OnStateChangedAsync(object? sender, EventArgs e) { await ShowAsync(); } diff --git a/src/LibVLCSharp/Shared/MediaPlayerElement/BufferingProgressNotifier.cs b/src/LibVLCSharp/Shared/MediaPlayerElement/BufferingProgressNotifier.cs index 0887891ca..9474b8072 100644 --- a/src/LibVLCSharp/Shared/MediaPlayerElement/BufferingProgressNotifier.cs +++ b/src/LibVLCSharp/Shared/MediaPlayerElement/BufferingProgressNotifier.cs @@ -60,7 +60,7 @@ private set } } - private async void MediaPlayer_BufferingAsync(object sender, MediaPlayerBufferingEventArgs e) + private async void MediaPlayer_BufferingAsync(object? sender, MediaPlayerBufferingEventArgs e) { await DispatcherInvokeAsync(() => BufferingProgress = e.Cache / 100); } diff --git a/src/LibVLCSharp/Shared/MediaPlayerElement/CastRenderersDiscoverer.cs b/src/LibVLCSharp/Shared/MediaPlayerElement/CastRenderersDiscoverer.cs index 96f0fb875..d4a221bcc 100644 --- a/src/LibVLCSharp/Shared/MediaPlayerElement/CastRenderersDiscoverer.cs +++ b/src/LibVLCSharp/Shared/MediaPlayerElement/CastRenderersDiscoverer.cs @@ -119,13 +119,13 @@ private async Task OnLibVLCChangedAsync() } } - private async void RendererDiscoverer_ItemAddedAsync(object sender, RendererDiscovererItemAddedEventArgs e) + private async void RendererDiscoverer_ItemAddedAsync(object? sender, RendererDiscovererItemAddedEventArgs e) { RenderersList.Add(e.RendererItem); await UpdateHasRenderersPropertyValueAsync(); } - private async void RendererDiscoverer_ItemDeletedAsync(object sender, RendererDiscovererItemDeletedEventArgs e) + private async void RendererDiscoverer_ItemDeletedAsync(object? sender, RendererDiscovererItemDeletedEventArgs e) { RenderersList.Remove(e.RendererItem); await UpdateHasRenderersPropertyValueAsync(); diff --git a/src/LibVLCSharp/Shared/MediaPlayerElement/DeviceAwakeningManager.cs b/src/LibVLCSharp/Shared/MediaPlayerElement/DeviceAwakeningManager.cs index 532798d07..d91808b4a 100644 --- a/src/LibVLCSharp/Shared/MediaPlayerElement/DeviceAwakeningManager.cs +++ b/src/LibVLCSharp/Shared/MediaPlayerElement/DeviceAwakeningManager.cs @@ -71,7 +71,7 @@ private void UpdateState() (mediaPlayer.State == VLCState.Playing || mediaPlayer.State == VLCState.Opening)); } - private async void OnStateChangedAsync(object sender, EventArgs e) + private async void OnStateChangedAsync(object? sender, EventArgs e) { await DispatcherInvokeAsync(UpdateState); } diff --git a/src/LibVLCSharp/Shared/MediaPlayerElement/SeekBarManager.cs b/src/LibVLCSharp/Shared/MediaPlayerElement/SeekBarManager.cs index 74c66bba2..223d2e007 100644 --- a/src/LibVLCSharp/Shared/MediaPlayerElement/SeekBarManager.cs +++ b/src/LibVLCSharp/Shared/MediaPlayerElement/SeekBarManager.cs @@ -122,17 +122,17 @@ private async Task UpdateSeekableAndPositionAsync() await OnPositionChangedAsync(); } - private async void MediaPlayer_SeekableChangedAsync(object sender, EventArgs e) + private async void MediaPlayer_SeekableChangedAsync(object? sender, EventArgs e) { await UpdateSeekableAsync(); } - private async void MediaPlayer_PositionChangedAsync(object sender, EventArgs e) + private async void MediaPlayer_PositionChangedAsync(object? sender, EventArgs e) { await OnPositionChangedAsync(); } - private async void MediaPlayer_StoppedAsync(object sender, EventArgs e) + private async void MediaPlayer_StoppedAsync(object? sender, EventArgs e) { await UpdateSeekableAndPositionAsync(); } diff --git a/src/LibVLCSharp/Shared/MediaPlayerElement/StateManager.cs b/src/LibVLCSharp/Shared/MediaPlayerElement/StateManager.cs index 6fb02792b..e75871c09 100644 --- a/src/LibVLCSharp/Shared/MediaPlayerElement/StateManager.cs +++ b/src/LibVLCSharp/Shared/MediaPlayerElement/StateManager.cs @@ -159,7 +159,7 @@ private Task OnErrorOccuredAsync() return DispatcherInvokeEventHandlerAsync(ErrorOccured); } - private async void OnMediaPlayerChangedAsync(object sender, EventArgs e) + private async void OnMediaPlayerChangedAsync(object? sender, EventArgs e) { await UpdatePlayPauseAvailabilityAsync(); switch (MediaPlayer?.State) @@ -179,29 +179,29 @@ private async void OnMediaPlayerChangedAsync(object sender, EventArgs e) } } - private async void MediaPlayer_EncounteredErrorAsync(object sender, EventArgs e) + private async void MediaPlayer_EncounteredErrorAsync(object? sender, EventArgs e) { await OnErrorOccuredAsync(); } - private async void MediaPlayer_PlayingAsync(object sender, EventArgs e) + private async void MediaPlayer_PlayingAsync(object? sender, EventArgs e) { await PlayingOrPausedAsync(Playing); await UpdatePlayPauseAvailabilityAsync(); } - private async void MediaPlayer_PausedAsync(object sender, EventArgs e) + private async void MediaPlayer_PausedAsync(object? sender, EventArgs e) { await PlayingOrPausedAsync(Paused); } - private async void MediaPlayer_StoppedAsync(object sender, EventArgs e) + private async void MediaPlayer_StoppedAsync(object? sender, EventArgs e) { await DispatcherInvokeEventHandlerAsync(Stopped); await UpdatePlayPauseAvailabilityAsync(); } - private async void MediaPlayer_PausableChangedAsync(object sender, MediaPlayerPausableChangedEventArgs e) + private async void MediaPlayer_PausableChangedAsync(object? sender, MediaPlayerPausableChangedEventArgs e) { await UpdatePlayPauseAvailabilityAsync(); } diff --git a/src/LibVLCSharp/Shared/MediaPlayerElement/TracksManager.cs b/src/LibVLCSharp/Shared/MediaPlayerElement/TracksManager.cs index 1446c3813..a537540bb 100644 --- a/src/LibVLCSharp/Shared/MediaPlayerElement/TracksManager.cs +++ b/src/LibVLCSharp/Shared/MediaPlayerElement/TracksManager.cs @@ -81,7 +81,7 @@ protected void SetCurrentTrackId(Action set) /// the track description public TrackDescription? GetTrackDescription(int trackId) { - return Tracks.FirstOrDefault(t => t.Id == trackId); + return Tracks?.FirstOrDefault(t => t.Id == trackId); } private Task OnTrackChangedAsync(TrackType trackType, EventHandler? eventHandler, TEventArgs eventArgs) @@ -94,22 +94,22 @@ private Task OnTrackChangedAsync(TrackType trackType, EventHandler { @@ -96,12 +96,12 @@ await DispatcherInvokeAsync(() => }); } - //private async void MediaPlayer_VolumeChangedAsync(object sender, EventArgs e) + //private async void MediaPlayer_VolumeChangedAsync(object? sender, EventArgs e) //{ // await DispatcherInvokeEventHandlerAsync(VolumeChanged); //} - private async void MediaPlayer_MuteChangedAsync(object sender, EventArgs e) + private async void MediaPlayer_MuteChangedAsync(object? sender, EventArgs e) { await DispatcherInvokeEventHandlerAsync(MuteChanged); } diff --git a/src/global.json b/src/global.json index 0702865ec..cb184e665 100644 --- a/src/global.json +++ b/src/global.json @@ -1,8 +1,8 @@ { "msbuild-sdks": { - "MSBuild.Sdk.Extras": "3.0.23" + "MSBuild.Sdk.Extras": "3.0.38" }, "sdk": { - "version": "5.0.x" + "version": "6.0.100" } } \ No newline at end of file