Browse Source

Merge branch 'master' into prs/renderingartifacts

pull/2171/head
danwalmsley 8 years ago
committed by GitHub
parent
commit
7b9647f29f
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      .gitignore
  2. 3
      .gitmodules
  3. 2
      Directory.Build.props
  4. 2
      build/Magick.NET-Q16-AnyCPU.props
  5. 1
      build/ReferenceCoreLibraries.props
  6. 4
      build/SkiaSharp.props
  7. 8
      nukebuild/.editorconfig
  8. 19
      nukebuild/Build.cs
  9. 6
      nukebuild/BuildParameters.cs
  10. 1
      nukebuild/Numerge
  11. 14
      nukebuild/Shims.cs
  12. 2
      nukebuild/_build.csproj
  13. 23
      nukebuild/numerge.config
  14. 8
      packages/Avalonia/Avalonia.csproj
  15. 2
      packages/Avalonia/Avalonia.props
  16. 1
      src/Avalonia.Animation/Avalonia.Animation.csproj
  17. 1
      src/Avalonia.Base/Avalonia.Base.csproj
  18. 1
      src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj
  19. 1
      src/Avalonia.Controls/Avalonia.Controls.csproj
  20. 4
      src/Avalonia.Controls/Button.cs
  21. 1
      src/Avalonia.DesignerSupport/Avalonia.DesignerSupport.csproj
  22. 1
      src/Avalonia.DesktopRuntime/Avalonia.DesktopRuntime.csproj
  23. 1
      src/Avalonia.Diagnostics/Avalonia.Diagnostics.csproj
  24. 1
      src/Avalonia.Input/Avalonia.Input.csproj
  25. 1
      src/Avalonia.Interactivity/Avalonia.Interactivity.csproj
  26. 1
      src/Avalonia.Layout/Avalonia.Layout.csproj
  27. 1
      src/Avalonia.Logging.Serilog/Avalonia.Logging.Serilog.csproj
  28. 1
      src/Avalonia.Styling/Avalonia.Styling.csproj
  29. 1
      src/Avalonia.Themes.Default/Avalonia.Themes.Default.csproj
  30. 1
      src/Avalonia.Visuals/Avalonia.Visuals.csproj
  31. 2
      src/Gtk/Avalonia.Gtk3/Gtk3Platform.cs
  32. 1
      src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj
  33. 1
      src/Markup/Avalonia.Markup/Avalonia.Markup.csproj
  34. 3
      src/Skia/Avalonia.Skia/FramebufferRenderTarget.cs
  35. 23
      src/Skia/Avalonia.Skia/GlRenderTarget.cs
  36. 2
      src/Skia/Avalonia.Skia/WriteableBitmapImpl.cs
  37. 12
      tests/Avalonia.RenderTests/Controls/BorderTests.cs
  38. 2
      tests/Avalonia.RenderTests/Controls/TextBlockTests.cs
  39. 1
      tests/Avalonia.RenderTests/TestBase.cs
  40. 21
      tests/Avalonia.RenderTests/TestSkip.cs

1
.gitignore

@ -195,3 +195,4 @@ Logs/
ModuleCache.noindex/ ModuleCache.noindex/
Build/Intermediates.noindex/ Build/Intermediates.noindex/
info.plist info.plist
build-intermediate

3
.gitmodules

@ -1,3 +1,6 @@
[submodule "src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github"] [submodule "src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github"]
path = src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github path = src/Markup/Avalonia.Markup.Xaml/PortableXaml/portable.xaml.github
url = https://github.com/AvaloniaUI/Portable.Xaml.git url = https://github.com/AvaloniaUI/Portable.Xaml.git
[submodule "nukebuild/Numerge"]
path = nukebuild/Numerge
url = https://github.com/kekekeks/Numerge.git

2
Directory.Build.props

@ -1,5 +1,5 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<PackageOutputPath Condition="'$(PackageOutputPath)' == ''">$(MSBuildThisFileDirectory)artifacts/nuget</PackageOutputPath> <PackageOutputPath Condition="'$(PackageOutputPath)' == ''">$(MSBuildThisFileDirectory)build-intermediate/nuget</PackageOutputPath>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

2
build/Magick.NET-Q16-AnyCPU.props

@ -1,5 +1,5 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<PackageReference Include="Magick.NET-Q16-AnyCPU" Version="7.0.6.102" /> <PackageReference Include="Magick.NET-Q16-AnyCPU" Version="7.9.0.2" />
</ItemGroup> </ItemGroup>
</Project> </Project>

1
build/ReferenceCoreLibraries.props

@ -1,5 +1,4 @@
<Project> <Project>
<Import Condition="'$(TargetFramework)' == 'netcoreapp2.0'" Project="CoreLibraries.props" />
<ItemGroup> <ItemGroup>
<ProjectReference Include="$(MSBuildThisFileDirectory)../packages/Avalonia/Avalonia.csproj" /> <ProjectReference Include="$(MSBuildThisFileDirectory)../packages/Avalonia/Avalonia.csproj" />
</ItemGroup> </ItemGroup>

4
build/SkiaSharp.props

@ -1,6 +1,6 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup> <ItemGroup>
<PackageReference Include="SkiaSharp" Version="1.60.0" /> <PackageReference Include="SkiaSharp" Version="1.68.0" />
<PackageReference Condition="'$(IncludeLinuxSkia)' == 'true'" Include="Avalonia.Skia.Linux.Natives" Version="1.60.0.1" /> <PackageReference Condition="'$(IncludeLinuxSkia)' == 'true'" Include="SkiaSharp.NativeAssets.Linux" Version="1.68.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>

8
nukebuild/.editorconfig

@ -0,0 +1,8 @@
# editorconfig.org
# top-most EditorConfig file
root = false
# C# files
[*.cs]
dotnet_style_require_accessibility_modifiers = never

19
nukebuild/Build.cs

@ -63,6 +63,7 @@ partial class Build : NukeBuild
DeleteDirectories(Parameters.BuildDirs); DeleteDirectories(Parameters.BuildDirs);
EnsureCleanDirectories(Parameters.BuildDirs); EnsureCleanDirectories(Parameters.BuildDirs);
EnsureCleanDirectory(Parameters.ArtifactsDir); EnsureCleanDirectory(Parameters.ArtifactsDir);
EnsureCleanDirectory(Parameters.NugetIntermediateRoot);
EnsureCleanDirectory(Parameters.NugetRoot); EnsureCleanDirectory(Parameters.NugetRoot);
EnsureCleanDirectory(Parameters.ZipRoot); EnsureCleanDirectory(Parameters.ZipRoot);
EnsureCleanDirectory(Parameters.TestResultsRoot); EnsureCleanDirectory(Parameters.TestResultsRoot);
@ -137,12 +138,13 @@ partial class Build : NukeBuild
}); });
Target RunRenderTests => _ => _ Target RunRenderTests => _ => _
.OnlyWhen(() => !Parameters.SkipTests && Parameters.IsRunningOnWindows) .OnlyWhen(() => !Parameters.SkipTests)
.DependsOn(Compile) .DependsOn(Compile)
.Executes(() => .Executes(() =>
{ {
RunCoreTest("./tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj", true); RunCoreTest("./tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj", true);
RunCoreTest("./tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj", true); if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
RunCoreTest("./tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj", true);
}); });
Target RunDesignerTests => _ => _ Target RunDesignerTests => _ => _
@ -181,7 +183,7 @@ partial class Build : NukeBuild
GlobFiles(data.ZipSourceControlCatalogDesktopDir, "*.exe"))); GlobFiles(data.ZipSourceControlCatalogDesktopDir, "*.exe")));
}); });
Target CreateNugetPackages => _ => _ Target CreateIntermediateNugetPackages => _ => _
.DependsOn(Compile) .DependsOn(Compile)
.After(RunTests) .After(RunTests)
.Executes(() => .Executes(() =>
@ -200,6 +202,17 @@ partial class Build : NukeBuild
c.SetConfiguration(Parameters.Configuration) c.SetConfiguration(Parameters.Configuration)
.AddProperty("PackageVersion", Parameters.Version)); .AddProperty("PackageVersion", Parameters.Version));
}); });
Target CreateNugetPackages => _ => _
.DependsOn(CreateIntermediateNugetPackages)
.Executes(() =>
{
var config = Numerge.MergeConfiguration.LoadFile(RootDirectory / "nukebuild" / "numerge.config");
EnsureCleanDirectory(Parameters.NugetRoot);
if(!Numerge.NugetPackageMerger.Merge(Parameters.NugetIntermediateRoot, Parameters.NugetRoot, config,
new NumergeNukeLogger()))
throw new Exception("Package merge failed");
});
Target RunTests => _ => _ Target RunTests => _ => _
.DependsOn(RunCoreLibsTests) .DependsOn(RunCoreLibsTests)

6
nukebuild/BuildParameters.cs

@ -47,6 +47,7 @@ public partial class Build
public bool PublishTestResults { get; } public bool PublishTestResults { get; }
public string Version { get; } public string Version { get; }
public AbsolutePath ArtifactsDir { get; } public AbsolutePath ArtifactsDir { get; }
public AbsolutePath NugetIntermediateRoot { get; }
public AbsolutePath NugetRoot { get; } public AbsolutePath NugetRoot { get; }
public AbsolutePath ZipRoot { get; } public AbsolutePath ZipRoot { get; }
public AbsolutePath BinRoot { get; } public AbsolutePath BinRoot { get; }
@ -117,6 +118,7 @@ public partial class Build
// DIRECTORIES // DIRECTORIES
ArtifactsDir = RootDirectory / "artifacts"; ArtifactsDir = RootDirectory / "artifacts";
NugetRoot = ArtifactsDir / "nuget"; NugetRoot = ArtifactsDir / "nuget";
NugetIntermediateRoot = RootDirectory / "build-intermediate" / "nuget";
ZipRoot = ArtifactsDir / "zip"; ZipRoot = ArtifactsDir / "zip";
BinRoot = ArtifactsDir / "bin"; BinRoot = ArtifactsDir / "bin";
TestResultsRoot = ArtifactsDir / "test-results"; TestResultsRoot = ArtifactsDir / "test-results";
@ -130,9 +132,9 @@ public partial class Build
ZipTargetControlCatalogDesktopDir = ZipRoot / ("ControlCatalog.Desktop-" + FileZipSuffix); ZipTargetControlCatalogDesktopDir = ZipRoot / ("ControlCatalog.Desktop-" + FileZipSuffix);
} }
private static string GetVersion() string GetVersion()
{ {
var xdoc = XDocument.Load("./build/SharedVersion.props"); var xdoc = XDocument.Load(RootDirectory / "build/SharedVersion.props");
return xdoc.Descendants().First(x => x.Name.LocalName == "Version").Value; return xdoc.Descendants().First(x => x.Name.LocalName == "Version").Value;
} }
} }

1
nukebuild/Numerge

@ -0,0 +1 @@
Subproject commit 4464343aef5c8ab7a42fcb20a483a6058199f8b8

14
nukebuild/Shims.cs

@ -5,6 +5,7 @@ using System.IO.Compression;
using System.Linq; using System.Linq;
using Nuke.Common; using Nuke.Common;
using Nuke.Common.IO; using Nuke.Common.IO;
using Numerge;
public partial class Build public partial class Build
{ {
@ -76,4 +77,17 @@ public partial class Build
} }
} }
} }
class NumergeNukeLogger : INumergeLogger
{
public void Log(NumergeLogLevel level, string message)
{
if(level == NumergeLogLevel.Error)
Logger.Error(message);
else if (level == NumergeLogLevel.Warning)
Logger.Warn(message);
else
Logger.Info(message);
}
}
} }

2
nukebuild/_build.csproj

@ -30,6 +30,8 @@
<None Include="..\appveyor.yml" Condition="Exists('..\appveyor.yml')" /> <None Include="..\appveyor.yml" Condition="Exists('..\appveyor.yml')" />
<None Include="..\.travis.yml" Condition="Exists('..\.travis.yml')" /> <None Include="..\.travis.yml" Condition="Exists('..\.travis.yml')" />
<None Include="..\GitVersion.yml" Condition="Exists('..\GitVersion.yml')" /> <None Include="..\GitVersion.yml" Condition="Exists('..\GitVersion.yml')" />
<Compile Remove="Numerge/**/*.*" />
<Compile Include="Numerge/Numerge/**/*.cs" />
</ItemGroup> </ItemGroup>
</Project> </Project>

23
nukebuild/numerge.config

@ -0,0 +1,23 @@
{
"Packages":
[
{
"Id": "Avalonia",
"MergeAll": true,
"Exclude": ["Avalonia.Remote.Protocol"],
"IncomingIncludeAssetsOverride": "",
"Merge": [
{
"Id": "Avalonia.Build.Tasks",
"IgnoreMissingFrameworkBinaries": true,
"DoNotMergeDependencies": true
},
{
"Id": "Avalonia.DesktopRuntime",
"IgnoreMissingFrameworkBinaries": true,
"IgnoreMissingFrameworkDependencies": true
}
]
}
]
}

8
packages/Avalonia/Avalonia.csproj

@ -1,10 +1,10 @@
<Project Sdk="AggregatePackage.NuGet.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>netstandard2.0;net461;netcoreapp2.0</TargetFrameworks> <TargetFrameworks>netstandard2.0;net461;netcoreapp2.0</TargetFrameworks>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="../../src/Avalonia.Remote.Protocol/Avalonia.Remote.Protocol.csproj" EmbedReference="false" /> <ProjectReference Include="../../src/Avalonia.Remote.Protocol/Avalonia.Remote.Protocol.csproj"/>
<ProjectReference Include="../../src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj" /> <ProjectReference Include="../../src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj" />
</ItemGroup> </ItemGroup>
@ -40,10 +40,6 @@
<Pack>true</Pack> <Pack>true</Pack>
<PackagePath>build\</PackagePath> <PackagePath>build\</PackagePath>
</Content> </Content>
<Content Include="../../src/Avalonia.Build.Tasks/bin/$(Configuration)/netstandard2.0/Avalonia.Build.Tasks.dll">
<Pack>true</Pack>
<PackagePath>tools\</PackagePath>
</Content>
</ItemGroup> </ItemGroup>
<Import Project="..\..\build\SharedVersion.props" /> <Import Project="..\..\build\SharedVersion.props" />
<Import Project="..\..\build\NetFX.props" /> <Import Project="..\..\build\NetFX.props" />

2
packages/Avalonia/Avalonia.props

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<AvaloniaPreviewerNetCoreToolPath>$(MSBuildThisFileDirectory)\..\tools\netcoreapp2.0\designer\Avalonia.Designer.HostApp.dll</AvaloniaPreviewerNetCoreToolPath> <AvaloniaPreviewerNetCoreToolPath>$(MSBuildThisFileDirectory)\..\tools\netcoreapp2.0\designer\Avalonia.Designer.HostApp.dll</AvaloniaPreviewerNetCoreToolPath>
<AvaloniaPreviewerNetFullToolPath>$(MSBuildThisFileDirectory)\..\tools\net461\designer\Avalonia.Designer.HostApp.exe</AvaloniaPreviewerNetFullToolPath> <AvaloniaPreviewerNetFullToolPath>$(MSBuildThisFileDirectory)\..\tools\net461\designer\Avalonia.Designer.HostApp.exe</AvaloniaPreviewerNetFullToolPath>
<AvaloniaBuildTasksLocation>$(MSBuildThisFileDirectory)\..\tools\Avalonia.Build.Tasks.dll</AvaloniaBuildTasksLocation> <AvaloniaBuildTasksLocation>$(MSBuildThisFileDirectory)\..\tools\netstandard2.0\Avalonia.Build.Tasks.dll</AvaloniaBuildTasksLocation>
<AvaloniaUseExternalMSBuild>false</AvaloniaUseExternalMSBuild> <AvaloniaUseExternalMSBuild>false</AvaloniaUseExternalMSBuild>
</PropertyGroup> </PropertyGroup>
<Import Project="$(MSBuildThisFileDirectory)\AvaloniaBuildTasks.props"/> <Import Project="$(MSBuildThisFileDirectory)\AvaloniaBuildTasks.props"/>

1
src/Avalonia.Animation/Avalonia.Animation.csproj

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Avalonia.Base\Avalonia.Base.csproj" /> <ProjectReference Include="..\Avalonia.Base\Avalonia.Base.csproj" />

1
src/Avalonia.Base/Avalonia.Base.csproj

@ -4,7 +4,6 @@
<AssemblyName>Avalonia.Base</AssemblyName> <AssemblyName>Avalonia.Base</AssemblyName>
<RootNamespace>Avalonia</RootNamespace> <RootNamespace>Avalonia</RootNamespace>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks> <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Avalonia.Build.Tasks\Avalonia.Build.Tasks.csproj"/> <ProjectReference Include="..\Avalonia.Build.Tasks\Avalonia.Build.Tasks.csproj"/>

1
src/Avalonia.Build.Tasks/Avalonia.Build.Tasks.csproj

@ -4,7 +4,6 @@
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<BuildOutputTargetFolder>tools</BuildOutputTargetFolder> <BuildOutputTargetFolder>tools</BuildOutputTargetFolder>
<DefineConstants>$(DefineConstants);BUILDTASK</DefineConstants> <DefineConstants>$(DefineConstants);BUILDTASK</DefineConstants>
<Packable>false</Packable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

1
src/Avalonia.Controls/Avalonia.Controls.csproj

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" /> <ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" />

4
src/Avalonia.Controls/Button.cs

@ -253,10 +253,8 @@ namespace Avalonia.Controls
IsPressed = false; IsPressed = false;
e.Handled = true; e.Handled = true;
var hittest = this.GetVisualsAt(e.GetPosition(this));
if (ClickMode == ClickMode.Release && if (ClickMode == ClickMode.Release &&
hittest.Any(c => c == this || (c as IStyledElement)?.TemplatedParent == this)) this.GetVisualsAt(e.GetPosition(this)).Any(c => this == c || this.IsVisualAncestorOf(c)))
{ {
OnClick(); OnClick();
} }

1
src/Avalonia.DesignerSupport/Avalonia.DesignerSupport.csproj

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<IsPackable>false</IsPackable>
<!-- WARNING! The designer support version number needs to be frozen <!-- WARNING! The designer support version number needs to be frozen
To allow projects that implement designer functionality to still To allow projects that implement designer functionality to still
work with newer versions of Avalonia. This version number only work with newer versions of Avalonia. This version number only

1
src/Avalonia.DesktopRuntime/Avalonia.DesktopRuntime.csproj

@ -2,7 +2,6 @@
<PropertyGroup> <PropertyGroup>
<TargetFrameworks>net461;netcoreapp2.0</TargetFrameworks> <TargetFrameworks>net461;netcoreapp2.0</TargetFrameworks>
<IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

1
src/Avalonia.Diagnostics/Avalonia.Diagnostics.csproj

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Markup\Avalonia.Markup.Xaml\Avalonia.Markup.Xaml.csproj" /> <ProjectReference Include="..\Markup\Avalonia.Markup.Xaml\Avalonia.Markup.Xaml.csproj" />

1
src/Avalonia.Input/Avalonia.Input.csproj

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" /> <ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" />

1
src/Avalonia.Interactivity/Avalonia.Interactivity.csproj

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" /> <ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" />

1
src/Avalonia.Layout/Avalonia.Layout.csproj

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" /> <ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" />

1
src/Avalonia.Logging.Serilog/Avalonia.Logging.Serilog.csproj

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Avalonia.Base\Avalonia.Base.csproj" /> <ProjectReference Include="..\Avalonia.Base\Avalonia.Base.csproj" />

1
src/Avalonia.Styling/Avalonia.Styling.csproj

@ -3,7 +3,6 @@
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Avalonia.Styling</AssemblyName> <AssemblyName>Avalonia.Styling</AssemblyName>
<RootNamespace>Avalonia</RootNamespace> <RootNamespace>Avalonia</RootNamespace>
<IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" /> <ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" />

1
src/Avalonia.Themes.Default/Avalonia.Themes.Default.csproj

@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Markup\Avalonia.Markup.Xaml\Avalonia.Markup.Xaml.csproj" /> <ProjectReference Include="..\Markup\Avalonia.Markup.Xaml\Avalonia.Markup.Xaml.csproj" />

1
src/Avalonia.Visuals/Avalonia.Visuals.csproj

@ -2,7 +2,6 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>Avalonia</RootNamespace> <RootNamespace>Avalonia</RootNamespace>
<IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" /> <ProjectReference Include="..\Avalonia.Animation\Avalonia.Animation.csproj" />

2
src/Gtk/Avalonia.Gtk3/Gtk3Platform.cs

@ -50,7 +50,7 @@ namespace Avalonia.Gtk3
{ {
Resolver.Custom = options.CustomResolver; Resolver.Custom = options.CustomResolver;
UseDeferredRendering = EnvOption("USE_DEFERRED_RENDERING", true, options.UseDeferredRendering); UseDeferredRendering = EnvOption("USE_DEFERRED_RENDERING", true, options.UseDeferredRendering);
var useGpu = EnvOption("USE_GPU", false, options.UseGpuAcceleration); var useGpu = EnvOption("USE_GPU", true, options.UseGpuAcceleration);
if (!s_gtkInitialized) if (!s_gtkInitialized)
{ {
try try

1
src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj

@ -4,7 +4,6 @@
<DefineConstants>PCL;NETSTANDARD;NETSTANDARD2_0;HAS_TYPE_CONVERTER;HAS_CUSTOM_ATTRIBUTE_PROVIDER</DefineConstants> <DefineConstants>PCL;NETSTANDARD;NETSTANDARD2_0;HAS_TYPE_CONVERTER;HAS_CUSTOM_ATTRIBUTE_PROVIDER</DefineConstants>
<EnableDefaultCompileItems>False</EnableDefaultCompileItems> <EnableDefaultCompileItems>False</EnableDefaultCompileItems>
<EnableDefaultItems>false</EnableDefaultItems> <EnableDefaultItems>false</EnableDefaultItems>
<IsPackable>false</IsPackable>
<NoWarn>CS1591</NoWarn> <NoWarn>CS1591</NoWarn>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

1
src/Markup/Avalonia.Markup/Avalonia.Markup.csproj

@ -2,7 +2,6 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework> <TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>Avalonia</RootNamespace> <RootNamespace>Avalonia</RootNamespace>
<IsPackable>false</IsPackable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\Avalonia.Base\Avalonia.Base.csproj" /> <ProjectReference Include="..\..\Avalonia.Base\Avalonia.Base.csproj" />

3
src/Skia/Avalonia.Skia/FramebufferRenderTarget.cs

@ -42,7 +42,8 @@ namespace Avalonia.Skia
{ {
var framebuffer = _platformSurface.Lock(); var framebuffer = _platformSurface.Lock();
var framebufferImageInfo = new SKImageInfo(framebuffer.Size.Width, framebuffer.Size.Height, var framebufferImageInfo = new SKImageInfo(framebuffer.Size.Width, framebuffer.Size.Height,
framebuffer.Format.ToSkColorType(), SKAlphaType.Premul); framebuffer.Format.ToSkColorType(),
framebuffer.Format == PixelFormat.Rgb565 ? SKAlphaType.Opaque : SKAlphaType.Premul);
CreateSurface(framebufferImageInfo, framebuffer); CreateSurface(framebufferImageInfo, framebuffer);

23
src/Skia/Avalonia.Skia/GlRenderTarget.cs

@ -31,24 +31,18 @@ namespace Avalonia.Skia
var size = session.Size; var size = session.Size;
var scaling = session.Scaling; var scaling = session.Scaling;
GRBackendRenderTargetDesc desc = new GRBackendRenderTargetDesc gl.Viewport(0, 0, size.Width, size.Height);
{
Width = size.Width,
Height = size.Height,
SampleCount = disp.SampleCount,
StencilBits = disp.StencilSize,
Config = GRPixelConfig.Rgba8888,
Origin=GRSurfaceOrigin.BottomLeft,
RenderTargetHandle = new IntPtr(fb)
};
gl.Viewport(0, 0, desc.Width, desc.Height);
gl.ClearStencil(0); gl.ClearStencil(0);
gl.ClearColor(0, 0, 0, 0); gl.ClearColor(0, 0, 0, 0);
gl.Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); gl.Clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
var surface = SKSurface.Create(_grContext, desc); GRBackendRenderTarget renderTarget =
new GRBackendRenderTarget(size.Width, size.Height, disp.SampleCount, disp.StencilSize,
new GRGlFramebufferInfo((uint)fb, GRPixelConfig.Rgba8888.ToGlSizedFormat()));
var surface = SKSurface.Create(_grContext, renderTarget,
GRSurfaceOrigin.BottomLeft,
GRPixelConfig.Rgba8888.ToColorType());
var nfo = new DrawingContextImpl.CreateInfo var nfo = new DrawingContextImpl.CreateInfo
{ {
GrContext = _grContext, GrContext = _grContext,
@ -62,6 +56,7 @@ namespace Avalonia.Skia
{ {
surface.Canvas.Flush(); surface.Canvas.Flush();
surface.Dispose(); surface.Dispose();
renderTarget.Dispose();
session.Dispose(); session.Dispose();
})); }));
} }

2
src/Skia/Avalonia.Skia/WriteableBitmapImpl.cs

@ -41,7 +41,7 @@ namespace Avalonia.Skia
var nfo = new SKImageInfo(size.Width, size.Height, colorType, SKAlphaType.Premul); var nfo = new SKImageInfo(size.Width, size.Height, colorType, SKAlphaType.Premul);
var blob = runtimePlatform.AllocBlob(nfo.BytesSize); var blob = runtimePlatform.AllocBlob(nfo.BytesSize);
_bitmap.InstallPixels(nfo, blob.Address, nfo.RowBytes, null, s_releaseDelegate, blob); _bitmap.InstallPixels(nfo, blob.Address, nfo.RowBytes, s_releaseDelegate, blob);
} }
else else
{ {

12
tests/Avalonia.RenderTests/Controls/BorderTests.cs

@ -188,7 +188,7 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
} }
[Fact] [Win32Fact("Has text")]
public async Task Border_Centers_Content_Horizontally() public async Task Border_Centers_Content_Horizontally()
{ {
Decorator target = new Decorator Decorator target = new Decorator
@ -215,7 +215,7 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
CompareImages(); CompareImages();
} }
[Fact] [Win32Fact("Has text")]
public async Task Border_Centers_Content_Vertically() public async Task Border_Centers_Content_Vertically()
{ {
Decorator target = new Decorator Decorator target = new Decorator
@ -296,7 +296,7 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
CompareImages(); CompareImages();
} }
[Fact] [Win32Fact("Has text")]
public async Task Border_Left_Aligns_Content() public async Task Border_Left_Aligns_Content()
{ {
Decorator target = new Decorator Decorator target = new Decorator
@ -323,7 +323,7 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
CompareImages(); CompareImages();
} }
[Fact] [Win32Fact("Has text")]
public async Task Border_Right_Aligns_Content() public async Task Border_Right_Aligns_Content()
{ {
Decorator target = new Decorator Decorator target = new Decorator
@ -350,7 +350,7 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
CompareImages(); CompareImages();
} }
[Fact] [Win32Fact("Has text")]
public async Task Border_Top_Aligns_Content() public async Task Border_Top_Aligns_Content()
{ {
Decorator target = new Decorator Decorator target = new Decorator
@ -377,7 +377,7 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
CompareImages(); CompareImages();
} }
[Fact] [Win32Fact("Has text")]
public async Task Border_Bottom_Aligns_Content() public async Task Border_Bottom_Aligns_Content()
{ {
Decorator target = new Decorator Decorator target = new Decorator

2
tests/Avalonia.RenderTests/Controls/TextBlockTests.cs

@ -20,7 +20,7 @@ namespace Avalonia.Direct2D1.RenderTests.Controls
{ {
} }
[Fact] [Win32Fact("Has text")]
public async Task Wrapping_NoWrap() public async Task Wrapping_NoWrap()
{ {
Decorator target = new Decorator Decorator target = new Decorator

1
tests/Avalonia.RenderTests/TestBase.cs

@ -46,6 +46,7 @@ namespace Avalonia.Direct2D1.RenderTests
public TestBase(string outputPath) public TestBase(string outputPath)
{ {
outputPath = outputPath.Replace('\\', Path.DirectorySeparatorChar);
var testPath = GetTestsDirectory(); var testPath = GetTestsDirectory();
var testFiles = Path.Combine(testPath, "TestFiles"); var testFiles = Path.Combine(testPath, "TestFiles");
#if AVALONIA_SKIA #if AVALONIA_SKIA

21
tests/Avalonia.RenderTests/TestSkip.cs

@ -0,0 +1,21 @@
using System;
using System.IO;
using System.Runtime.InteropServices;
using Xunit;
#if AVALONIA_SKIA
namespace Avalonia.Skia.RenderTests
#else
namespace Avalonia.Direct2D1.RenderTests
#endif
{
public class Win32Fact : FactAttribute
{
public Win32Fact(string message)
{
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
Skip = message;
}
}
}
Loading…
Cancel
Save