Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
c8fa384
build: use net6 SDK
mfkl Nov 22, 2021
950e6a7
core: add net6.0 target
mfkl Nov 22, 2021
842568f
Fixed Nullable reference types-related warnings
jeremyVignelles Nov 22, 2021
71f72d5
CI: Bump to .NET 6 SDK
mfkl Nov 22, 2021
f7c9b6b
try to workaround broken tooling part 1
mfkl Nov 23, 2021
9fca4ca
fix test build
mfkl Nov 23, 2021
64f5f44
refactor
mfkl Nov 23, 2021
d41fe2a
cake: adjust for net6
mfkl Nov 23, 2021
256fe6c
disable net6-android for now
mfkl Nov 23, 2021
7f8d54d
try remove linux.patch
mfkl Nov 23, 2021
bece5cd
update MSBuild.Sdk.Extras
mfkl Nov 23, 2021
16238f0
try install mobile workloads
mfkl Nov 23, 2021
6afe9ea
Windows CI: install Java
mfkl Nov 24, 2021
17540e6
CI: build net6 on Windows only
mfkl Nov 24, 2021
3a2fc9a
simplify tams support
mfkl Nov 24, 2021
6efae45
CI: rename net6 job
mfkl Nov 24, 2021
5779575
cake refactor
mfkl Nov 24, 2021
b05b41e
CI: fix argument syntax
mfkl Nov 24, 2021
b5be24b
builds new targets on windows only
mfkl Nov 29, 2021
1cd4da0
build only net6 on windows
mfkl Nov 30, 2021
5020f36
update TFMs usings and defines
mfkl Nov 30, 2021
3b96a57
cake: force VS2022
mfkl Nov 30, 2021
1e8bdf7
Uno: adapt TFM checks
mfkl Nov 30, 2021
5330278
fix condition
mfkl Nov 30, 2021
65d7da8
CI: try bump Windows image
mfkl Nov 30, 2021
43c4b9f
update android binding project
mfkl Dec 1, 2021
6b56528
tfms: remove net6 win10 target
mfkl Dec 1, 2021
6ef258a
try workaround UAP issues
mfkl Dec 1, 2021
c61da41
cake: ensure nuget is available
mfkl Dec 1, 2021
cbbcea8
Add MacOS Catalyst
drasticactions Dec 4, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion buildsystem/azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ stages:

- job: Windows
pool:
vmImage: 'windows-latest'
vmImage: 'windows-2022'
steps:
- template: windows-build.yml

Expand Down
10 changes: 9 additions & 1 deletion buildsystem/base-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
4 changes: 4 additions & 0 deletions buildsystem/build.cake
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#tool nuget:?package=NuGet.CommandLine&version=5.11.0

//////////////////////////////////////////////////////////////////////
// ARGUMENTS
//////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -106,6 +108,8 @@ void Build(string project)
settings.WithProperty("VersionSuffix", suffixVersion);
}

settings.ToolVersion = MSBuildToolVersion.VS2022;

MSBuild(project, settings);
}

Expand Down
5 changes: 0 additions & 5 deletions buildsystem/linux-build.yml
Original file line number Diff line number Diff line change
@@ -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'
Expand Down
22 changes: 0 additions & 22 deletions buildsystem/linux.patch

This file was deleted.

7 changes: 7 additions & 0 deletions buildsystem/windows-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
<AssemblyName>LibVLCSharp.Uno.Sample</AssemblyName>
<DefaultLanguage>en-US</DefaultLanguage>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion>10.0.16299.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
<TargetPlatformVersion>10.0.18362.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion>
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
<AssemblyName>Sample.MediaPlayerElement</AssemblyName>
<DefaultLanguage>en-US</DefaultLanguage>
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
<TargetPlatformVersion>10.0.16299.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
<TargetPlatformVersion>10.0.18362.0</TargetPlatformVersion>
<TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion>
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Expand Down
8 changes: 4 additions & 4 deletions src/Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<Project>
<PropertyGroup Condition="$(TargetFramework.StartsWith('Xamarin.iOS'))">
<PropertyGroup Condition="$(TargetFramework.Contains('ios'))">
<DefineConstants>$(DefineConstants);IOS;APPLE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('Xamarin.Mac'))">
<PropertyGroup Condition="$(TargetFramework.Contains('mac'))">
<DefineConstants>$(DefineConstants);MAC;APPLE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('Xamarin.TVOS'))">
<PropertyGroup Condition="$(TargetFramework.Contains('tvos'))">
<DefineConstants>$(DefineConstants);TVOS;APPLE</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('MonoAndroid'))">
<PropertyGroup Condition="$(TargetFramework.Contains('android'))">
<DefineConstants>$(DefineConstants);ANDROID</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('uap'))">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
<RootNamespace>LibVLCSharp.Android.AWindow</RootNamespace>
<AssemblyName>LibVLCSharp.Android.AWindow</AssemblyName>
<FileAlignment>512</FileAlignment>
<TargetFrameworkVersion>v9.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>
<AndroidClassParser>class-parse</AndroidClassParser>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Expand Down
2 changes: 1 addition & 1 deletion src/LibVLCSharp.Forms.Platforms.GTK/VideoViewRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ protected override void OnElementChanged(ElementChangedEventArgs<VideoView> e)
}
}

private void OnMediaPlayerChanging(object sender, MediaPlayerChangingEventArgs e)
private void OnMediaPlayerChanging(object? sender, MediaPlayerChangingEventArgs e)
{
if (Control == null)
{
Expand Down
2 changes: 1 addition & 1 deletion src/LibVLCSharp.Forms.Platforms.WPF/VideoViewRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ protected override void OnElementChanged(ElementChangedEventArgs<VideoView> e)
}
}

private void OnMediaPlayerChanging(object sender, MediaPlayerChangingEventArgs e)
private void OnMediaPlayerChanging(object? sender, MediaPlayerChangingEventArgs e)
{
Control.MediaPlayer = e.NewMediaPlayer;
}
Expand Down
6 changes: 3 additions & 3 deletions src/LibVLCSharp.Forms/LibVLCSharp.Forms.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -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.
</Description>
<TargetFrameworks>netstandard2.0</TargetFrameworks>
<TargetFrameworks Condition="!$([MSBuild]::IsOsPlatform('Linux'))">$(TargetFrameworks);MonoAndroid81;Xamarin.iOS10;Xamarin.Mac20</TargetFrameworks>
<TargetFrameworks Condition="!$([MSBuild]::IsOsPlatform('Linux'))">$(TargetFrameworks);monoandroid81;xamarin.ios10;xamarin.mac20</TargetFrameworks>
<RootNamespace>LibVLCSharp.Forms</RootNamespace>
<PackageId>LibVLCSharp.Forms</PackageId>
</PropertyGroup>
Expand All @@ -27,10 +27,10 @@ Xamarin.Forms support for GTK and WPF are in separate packages. LibVLC needs to
<None Include="Platforms\**\*.cs" />

</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid')) ">
<ItemGroup Condition="$(TargetFramework.Contains('android')) ">
<Compile Include="Platforms\Android\**\*.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('Xamarin'))">
<ItemGroup Condition="$(TargetFramework.Contains('mac'))">
<Reference Include="netstandard" />
<Compile Include="Platforms\Apple\**\*.cs" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ protected override void OnElementChanged(ElementChangedEventArgs<VideoView> e)
}
}

private void OnMediaPlayerChanging(object sender, MediaPlayerChangingEventArgs e)
private void OnMediaPlayerChanging(object? sender, MediaPlayerChangingEventArgs e)
{
Control.MediaPlayer = e.NewMediaPlayer;
Control.TriggerLayoutChangeListener();
Expand Down
2 changes: 1 addition & 1 deletion src/LibVLCSharp.Forms/Platforms/Apple/VideoViewRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ protected override void OnElementChanged(ElementChangedEventArgs<LibVLCSharp.For
}
}

private void OnMediaPlayerChanging(object sender, MediaPlayerChangingEventArgs e)
private void OnMediaPlayerChanging(object? sender, MediaPlayerChangingEventArgs e)
{
Control.MediaPlayer = e.NewMediaPlayer;
}
Expand Down
6 changes: 3 additions & 3 deletions src/LibVLCSharp.Forms/Shared/MediaPlayerElement.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ protected override void OnParentSet()
}
}

private void PageAppearing(object sender, Page e)
private void PageAppearing(object? sender, Page e)
{
if (e == this.FindAncestor<Page?>())
{
Expand Down Expand Up @@ -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<Page?>())
{
Expand All @@ -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();
}
Expand Down
4 changes: 2 additions & 2 deletions src/LibVLCSharp.Tests/CoreLoadingTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -24,4 +24,4 @@ public void LoadLibVLCFromInferredPath()
var libVLC = new LibVLC("--no-audio", "--no-video");
}
}
}
}
18 changes: 9 additions & 9 deletions src/LibVLCSharp.Tests/LibVLCAPICoverage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ public async Task CheckLibVLCCoverage()
libvlc3deprecatedSym = (await httpClient.GetStringAsync(LibVLCDeprecatedSymUrl)).Split(new[] { '\r', '\n' }).Where(s => !string.IsNullOrEmpty(s)).ToArray();
}

List<string> dllImports = new List<string>();
var dllImports = new List<string>();

// retrieving EventManager using reflection because the type is internal
var eventManager = typeof(MediaPlayer).GetRuntimeProperties()
.First(n => n.Name.Equals("EventManager"))
.PropertyType
.BaseType;
.BaseType!;

List<Type> libvlcTypes = new List<Type>
var libvlcTypes = new List<Type>
{
typeof(LibVLC),
typeof(MediaPlayer),
Expand Down Expand Up @@ -77,26 +77,26 @@ public async Task CheckLibVLCCoverage()
deprecatedSymbols.Add(finalSymbol.Trim());
}

List<string> implementedButHidden = new List<string>
var implementedButHidden = new List<string>
{
"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<string> internalSymbolsThatShouldNotBeThere = new List<string>
var internalSymbolsThatShouldNotBeThere = new List<string>
{
"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<string> notImplementedOnPurpose = new List<string>
var notImplementedOnPurpose = new List<string>
{
"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<string> exclude = new List<string>();
var exclude = new List<string>();
exclude.AddRange(implementedButHidden);
exclude.AddRange(internalSymbolsThatShouldNotBeThere);
exclude.AddRange(notImplementedOnPurpose);
Expand All @@ -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);
}
Expand All @@ -141,4 +141,4 @@ public async Task CheckLibVLCCoverage()
Assert.Zero(missingApisCount);
}
}
}
}
8 changes: 4 additions & 4 deletions src/LibVLCSharp.Tests/MediaDiscovererTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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);
}
Expand All @@ -40,4 +40,4 @@ public async Task DisposeMediaDiscoverer()
Assert.AreEqual(IntPtr.Zero, md.NativeReference);
}
}
}
}
4 changes: 2 additions & 2 deletions src/LibVLCSharp.Tests/MediaTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ public void CreateMediaFromUri()
[Test]
public void CreateMediaFail()
{
Assert.Throws<ArgumentNullException>(() => new Media(null, Path.GetTempFileName()));
Assert.Throws<ArgumentNullException>(() => new Media(null!, Path.GetTempFileName()));
Assert.Throws<ArgumentNullException>(() => new Media(_libVLC, string.Empty));
Assert.Throws<InvalidOperationException>(() => new Media(_libVLC, new Uri("/hello.mp4", UriKind.Relative)));
Assert.Throws<ArgumentNullException>(() => new Media(_libVLC, uri: null));
Assert.Throws<ArgumentNullException>(() => new Media(_libVLC, uri: null!));
}

[Test]
Expand Down
15 changes: 9 additions & 6 deletions src/LibVLCSharp.Uno/LibVLCSharp.Uno.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,19 @@
<PropertyGroup>
<Title>LibVLCSharp.Uno</Title>
<Summary>Uno integration for LibVLCSharp</Summary>
<TargetFrameworks>Xamarin.iOS10;MonoAndroid81</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOsPlatform('Windows'))">$(TargetFrameworks);uap10.0.16299</TargetFrameworks>
<TargetFrameworks>xamarin.ios10;monoandroid81</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOsPlatform('Windows'))">$(TargetFrameworks);uap10.0.18362</TargetFrameworks>
<GenerateLibraryLayout>true</GenerateLibraryLayout>
<Description>LibVLCSharp.Uno is the integration of LibVLCSharp with the Uno Platform on Windows, iOS and Android.

It also contains a VLC MediaPlayerElement for the Uno Platform (UWP, Android, iOS)</Description>
<PackageTags>$(PackageTags);uno</PackageTags>
<RootNamespace>LibVLCSharp.Uno</RootNamespace>
<PackageId>LibVLCSharp.Uno</PackageId>
</PropertyGroup>
</PropertyGroup>
<PropertyGroup Condition="$(TargetFramework.StartsWith('uap'))">
<TargetPlatformVersion>10.0.19041.0</TargetPlatformVersion>
</PropertyGroup>
<ItemGroup>
<Page Include="**\*.xaml" Exclude="bin\**\*.xaml;obj\**\*.xaml" />
<PRIResource Include="Strings\**\*.resw" />
Expand All @@ -38,20 +41,20 @@ It also contains a VLC MediaPlayerElement for the Uno Platform (UWP, Android, iO
<None Include="**\*.Android.xaml" />
<None Include="**\*.iOS.xaml" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('Xamarin.iOS')) or $(TargetFramework.StartsWith('MonoAndroid'))">
<ItemGroup Condition="$(TargetFramework.Contains('ios')) or $(TargetFramework.Contains('android'))">
<PackageReference Include="Uno.UI" Version="2.0.527" />
<PackageReference Include="Uno.SourceGenerationTasks" Version="3.0.2" /> <!-- TODO: Work around broken VS tooling. To remove when switching to Uno 3 -->
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('uap'))">
<Compile Include="**\*.UWP.*cs" />
<Page Include="**\*.UWP.*xaml" Exclude="bin\**\*.xaml;obj\**\*.xaml" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('MonoAndroid'))">
<ItemGroup Condition="$(TargetFramework.Contains('android'))">
<ProjectReference Include="..\LibVLCSharp.Android.AWindow\LibVLCSharp.Android.AWindow.csproj" PrivateAssets="All" />
<Compile Include="**\*.Android.*cs" />
<Page Include="**\*.Android.*xaml" Exclude="bin\**\*.xaml;obj\**\*.xaml" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('Xamarin.iOS'))">
<ItemGroup Condition="$(TargetFramework.Contains('ios'))">
<Compile Include="**\*.iOS.*cs" />
<Page Include="**\*.iOS.*xaml" Exclude="bin\**\*.xaml;obj\**\*.xaml" />
</ItemGroup>
Expand Down
Loading