Compare commits

..

7 Commits

Author SHA1 Message Date
Emmanuel Hansen
7b9c4757dd UI - Scale end framebuffer blit (#3342)
* Scale end framebuffer blit

* fix

* fix

* apply changes to avalonia
2022-05-16 18:10:29 -03:00
Mary
b8fc97adf2 Fix Avalonia updater 2022-05-15 21:01:12 +02:00
Emmanuel Hansen
c1a7b5bcdb fix amiibo image path (#3345) 2022-05-15 20:47:00 +02:00
Mary
be1c375589 gh-actions: Prefix Avalonia builds with test- and disable prerelease.
As GitHub sort our builds in an alphanumeric way, we abuse that to fix
both new and old updater behaviour.

This should fix all our issues.

Avalonia updater will be broken between version 1.1.122 to 1.1.126, and
will need manual intervention.
2022-05-15 18:05:55 +02:00
Mary
378d19f87a gh-actions: Attempt to fix the whole mess up with Avalonia changes
Marked as prerelease just in case it break even more
2022-05-15 17:50:16 +02:00
Emmanuel Hansen
f59f65ec4f add avalonia builds to release (#3339) 2022-05-15 16:28:32 +02:00
Mary
7bc4971cf9 misc: Clean up of CS project after Avalonia merge (#3340)
This reformat Avalonia csproj file, remove unused deps and reajust
Ryujinx csproj a bit after some other changes

Also updated OpenTK.Graphics
2022-05-15 16:02:15 +02:00
15 changed files with 204 additions and 193 deletions

View File

@@ -53,6 +53,7 @@ jobs:
run: | run: |
dotnet publish -c Release -r win-x64 -o ./publish_windows/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx --self-contained dotnet publish -c Release -r win-x64 -o ./publish_windows/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx --self-contained
dotnet publish -c Release -r win-x64 -o ./publish_windows_sdl2_headless/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx.Headless.SDL2 --self-contained dotnet publish -c Release -r win-x64 -o ./publish_windows_sdl2_headless/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx.Headless.SDL2 --self-contained
dotnet publish -c Release -r win-x64 -o ./publish_windows_ava/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx.Ava --self-contained
- name: Packing Windows builds - name: Packing Windows builds
run: | run: |
pushd publish_windows pushd publish_windows
@@ -60,7 +61,11 @@ jobs:
popd popd
pushd publish_windows_sdl2_headless pushd publish_windows_sdl2_headless
7z a ../release_output/ryujinx-headless-sdl2-${{ steps.version_info.outputs.build_version }}-win_x64.zip publish 7z a ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-win_x64.zip publish
popd
pushd publish_windows_ava
7z a ../release_output/test-ava-ryujinx-${{ steps.version_info.outputs.build_version }}-win_x64.zip publish
popd popd
shell: bash shell: bash
@@ -68,6 +73,7 @@ jobs:
run: | run: |
dotnet publish -c Release -r linux-x64 -o ./publish_linux/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx --self-contained dotnet publish -c Release -r linux-x64 -o ./publish_linux/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx --self-contained
dotnet publish -c Release -r linux-x64 -o ./publish_linux_sdl2_headless/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx.Headless.SDL2 --self-contained dotnet publish -c Release -r linux-x64 -o ./publish_linux_sdl2_headless/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx.Headless.SDL2 --self-contained
dotnet publish -c Release -r linux-x64 -o ./publish_linux_ava/publish /p:Version="${{ steps.version_info.outputs.build_version }}" /p:SourceRevisionId="${{ steps.version_info.outputs.git_short_hash }}" /p:DebugType=embedded Ryujinx.Ava --self-contained
- name: Packing Linux builds - name: Packing Linux builds
run: | run: |
@@ -76,7 +82,11 @@ jobs:
popd popd
pushd publish_linux_sdl2_headless pushd publish_linux_sdl2_headless
tar -czvf ../release_output/ryujinx-headless-sdl2-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz publish tar -czvf ../release_output/sdl2-ryujinx-headless-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz publish
popd
pushd publish_linux_ava
tar -czvf ../release_output/test-ava-ryujinx-${{ steps.version_info.outputs.build_version }}-linux_x64.tar.gz publish
popd popd
shell: bash shell: bash

View File

@@ -5,7 +5,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="OpenTK.OpenAL" Version="4.5.0" /> <PackageReference Include="OpenTK.OpenAL" Version="4.7.2" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -177,7 +177,7 @@ namespace Ryujinx.Ava
{ {
if (_renderer != null) if (_renderer != null)
{ {
double scale = Program.WindowScaleFactor; double scale = _parent.PlatformImpl.RenderScaling;
_renderer.Window.SetSize((int)(size.Width * scale), (int)(size.Height * scale)); _renderer.Window.SetSize((int)(size.Width * scale), (int)(size.Height * scale));
} }
} }
@@ -809,7 +809,7 @@ namespace Ryujinx.Ava
Width = (int)Renderer.Bounds.Width; Width = (int)Renderer.Bounds.Width;
Height = (int)Renderer.Bounds.Height; Height = (int)Renderer.Bounds.Height;
_renderer.Window.SetSize((int)(Width * Program.WindowScaleFactor), (int)(Height * Program.WindowScaleFactor)); _renderer.Window.SetSize((int)(Width * _parent.PlatformImpl.RenderScaling), (int)(Height * _parent.PlatformImpl.RenderScaling));
Device.Gpu.Renderer.RunLoop(() => Device.Gpu.Renderer.RunLoop(() =>
{ {

View File

@@ -4,11 +4,9 @@ using Ryujinx.Ava.Common.Locale;
using Ryujinx.Input; using Ryujinx.Input;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using AvaKey = Avalonia.Input.Key; using AvaKey = Avalonia.Input.Key;
using Key = Ryujinx.Input.Key; using Key = Ryujinx.Input.Key;
using TextInputEventArgs = OpenTK.Windowing.Common.TextInputEventArgs;
namespace Ryujinx.Ava.Input namespace Ryujinx.Ava.Input
{ {
@@ -20,7 +18,7 @@ namespace Ryujinx.Ava.Input
public event EventHandler<KeyEventArgs> KeyPressed; public event EventHandler<KeyEventArgs> KeyPressed;
public event EventHandler<KeyEventArgs> KeyRelease; public event EventHandler<KeyEventArgs> KeyRelease;
public event EventHandler<TextInputEventArgs> TextInput; public event EventHandler<string> TextInput;
public string DriverName => "Avalonia"; public string DriverName => "Avalonia";
@@ -36,9 +34,9 @@ namespace Ryujinx.Ava.Input
_control.TextInput += Control_TextInput; _control.TextInput += Control_TextInput;
} }
private void Control_TextInput(object sender, Avalonia.Input.TextInputEventArgs e) private void Control_TextInput(object sender, TextInputEventArgs e)
{ {
TextInput?.Invoke(this, new TextInputEventArgs(e.Text.First())); TextInput?.Invoke(this, e.Text);
} }
public event Action<string> OnGamepadConnected public event Action<string> OnGamepadConnected

View File

@@ -98,7 +98,7 @@ namespace Ryujinx.Modules
string assetState = (string)asset["state"]; string assetState = (string)asset["state"];
string downloadURL = (string)asset["browser_download_url"]; string downloadURL = (string)asset["browser_download_url"];
if (assetName.StartsWith("ava-ryujinx") && assetName.EndsWith(_platformExt)) if (assetName.StartsWith("test-ava-ryujinx") && assetName.EndsWith(_platformExt))
{ {
_buildUrl = downloadURL; _buildUrl = downloadURL;

View File

@@ -1,141 +1,144 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers> <RuntimeIdentifiers>win-x64;osx-x64;linux-x64</RuntimeIdentifiers>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Version>1.0.0-dirty</Version> <Version>1.0.0-dirty</Version>
<RootNamespace>Ryujinx.Ava</RootNamespace> <TieredCompilation>false</TieredCompilation>
<ApplicationIcon>Ryujinx.ico</ApplicationIcon> <TieredCompilationQuickJit>false</TieredCompilationQuickJit>
</PropertyGroup> <DefineConstants Condition=" '$(ExtraDefineConstants)' != '' ">$(DefineConstants);$(ExtraDefineConstants)</DefineConstants>
<PropertyGroup Condition="'$(RuntimeIdentifier)' != ''"> <RootNamespace>Ryujinx.Ava</RootNamespace>
<PublishSingleFile>true</PublishSingleFile> <ApplicationIcon>Ryujinx.ico</ApplicationIcon>
<PublishTrimmed>true</PublishTrimmed> </PropertyGroup>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PropertyGroup Condition="'$(RuntimeIdentifier)' != ''">
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <PublishSingleFile>true</PublishSingleFile>
</PropertyGroup> <PublishTrimmed>true</PublishTrimmed>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> </PropertyGroup>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup> <ItemGroup>
<ItemGroup> <PackageReference Include="Avalonia" Version="0.10.14" />
<ContentWithTargetPath Include="..\distribution\windows\alsoft.ini" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'"> <PackageReference Include="Avalonia.Desktop" Version="0.10.14" />
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <PackageReference Include="Avalonia.Diagnostics" Version="0.10.14" />
<TargetPath>alsoft.ini</TargetPath> <PackageReference Include="Avalonia.Controls.DataGrid" Version="0.10.14" />
</ContentWithTargetPath> <PackageReference Include="Avalonia.Markup.Xaml.Loader" Version="0.10.14" />
<ContentWithTargetPath Include="..\distribution\legal\THIRDPARTY.md"> <PackageReference Include="Avalonia.Svg" Version="0.10.13" />
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <PackageReference Include="Avalonia.Svg.Skia" Version="0.10.13" />
<TargetPath>THIRDPARTY.md</TargetPath> <PackageReference Include="jp2masa.Avalonia.Flexbox" Version="0.2.0" />
</ContentWithTargetPath> <PackageReference Include="DynamicData" Version="7.7.14" />
<ContentWithTargetPath Include="..\Ryujinx.Audio\LICENSE.txt"> <PackageReference Include="FluentAvaloniaUI" Version="1.3.4" />
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<TargetPath>LICENSE-Ryujinx.Audio.txt</TargetPath> <PackageReference Include="Ryujinx.Audio.OpenAL.Dependencies" Version="1.21.0.1" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
</ContentWithTargetPath> <PackageReference Include="Ryujinx.Graphics.Nvdec.Dependencies" Version="4.4.0-build9" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
</ItemGroup> <PackageReference Include="OpenTK.Graphics" Version="4.7.2" />
<PropertyGroup Condition="'$(RuntimeIdentifier)' != ''"> <PackageReference Include="SPB" Version="0.0.4-build17" />
<PublishSingleFile>true</PublishSingleFile> <PackageReference Include="SharpZipLib" Version="1.3.3" />
<PublishTrimmed>true</PublishTrimmed> <PackageReference Include="SixLabors.ImageSharp" Version="1.0.4" />
</PropertyGroup> </ItemGroup>
<ItemGroup>
<AvaloniaResource Include="Ui\**\*.xaml"> <ItemGroup>
<SubType>Designer</SubType> <ProjectReference Include="..\Ryujinx.Audio.Backends.SDL2\Ryujinx.Audio.Backends.SDL2.csproj" />
</AvaloniaResource> <ProjectReference Include="..\Ryujinx.Input\Ryujinx.Input.csproj" />
<None Remove="Assets\Locales\el_GR.json" /> <ProjectReference Include="..\Ryujinx.Input.SDL2\Ryujinx.Input.SDL2.csproj" />
<None Remove="Assets\Locales\ru_RU.json" /> <ProjectReference Include="..\Ryujinx.Audio.Backends.OpenAL\Ryujinx.Audio.Backends.OpenAL.csproj" />
<AvaloniaResource Include="Assets\Fonts\SegoeFluentIcons.ttf" /> <ProjectReference Include="..\Ryujinx.Audio.Backends.SoundIo\Ryujinx.Audio.Backends.SoundIo.csproj" />
</ItemGroup> <ProjectReference Include="..\Ryujinx.Common\Ryujinx.Common.csproj" />
<ItemGroup> <ProjectReference Include="..\Ryujinx.HLE\Ryujinx.HLE.csproj" />
<None Remove="Assets\Styles\BaseDark.xaml" /> <ProjectReference Include="..\ARMeilleure\ARMeilleure.csproj" />
<None Remove="Assets\Styles\BaseLight.xaml" /> <ProjectReference Include="..\Ryujinx.Graphics.OpenGL\Ryujinx.Graphics.OpenGL.csproj" />
</ItemGroup> <ProjectReference Include="..\Ryujinx.Graphics.Gpu\Ryujinx.Graphics.Gpu.csproj" />
<ItemGroup> <ProjectReference Include="..\Ryujinx.Ui.Common\Ryujinx.Ui.Common.csproj" />
<AvaloniaResource Include="Assets\Styles\BaseLight.xaml"> </ItemGroup>
<Generator>MSBuild:Compile</Generator>
</AvaloniaResource> <ItemGroup>
<AvaloniaResource Include="Assets\Styles\BaseDark.xaml"> <ContentWithTargetPath Include="..\distribution\windows\alsoft.ini" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'">
<Generator>MSBuild:Compile</Generator> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</AvaloniaResource> <TargetPath>alsoft.ini</TargetPath>
<AvaloniaResource Include="Assets\Styles\Styles.xaml" /> </ContentWithTargetPath>
</ItemGroup> <ContentWithTargetPath Include="..\distribution\legal\THIRDPARTY.md">
<ItemGroup> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
<PackageReference Include="Avalonia.Controls.DataGrid" Version="0.10.14" /> <TargetPath>THIRDPARTY.md</TargetPath>
<PackageReference Include="Avalonia.Markup.Xaml.Loader" Version="0.10.14" /> </ContentWithTargetPath>
<PackageReference Include="Avalonia.Svg" Version="0.10.13" /> <ContentWithTargetPath Include="..\Ryujinx.Audio\LICENSE.txt">
<PackageReference Include="Avalonia.Svg.Skia" Version="0.10.13" /> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
<PackageReference Include="DynamicData" Version="7.7.1" /> <TargetPath>LICENSE-Ryujinx.Audio.txt</TargetPath>
<PackageReference Include="FluentAvaloniaUI" Version="1.3.4" /> </ContentWithTargetPath>
<PackageReference Include="Crc32.NET" Version="1.2.0" /> </ItemGroup>
<PackageReference Include="jp2masa.Avalonia.Flexbox" Version="0.2.0" />
<PackageReference Include="Ryujinx.Audio.OpenAL.Dependencies" Version="1.21.0.1" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" /> <ItemGroup>
<PackageReference Include="OpenTK" Version="4.6.3" /> <AvaloniaResource Include="Ui\**\*.xaml">
<PackageReference Include="Ryujinx.Graphics.Nvdec.Dependencies" Version="4.4.0-build9" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" /> <SubType>Designer</SubType>
<PackageReference Include="SharpZipLib" Version="1.3.3" /> </AvaloniaResource>
<PackageReference Include="Avalonia" Version="0.10.14" /> <AvaloniaResource Include="Assets\Fonts\SegoeFluentIcons.ttf" />
<PackageReference Include="Avalonia.Desktop" Version="0.10.14" /> <AvaloniaResource Include="Assets\Styles\BaseLight.xaml">
<PackageReference Include="Avalonia.Diagnostics" Version="0.10.14" /> <Generator>MSBuild:Compile</Generator>
<PackageReference Include="Silk.NET.Vulkan" Version="2.2.0" /> </AvaloniaResource>
<PackageReference Include="Silk.NET.Vulkan.Extensions.KHR" Version="2.2.0" /> <AvaloniaResource Include="Assets\Styles\BaseDark.xaml">
<PackageReference Include="Silk.NET.Vulkan.Extensions.EXT" Version="2.2.0" /> <Generator>MSBuild:Compile</Generator>
<PackageReference Include="SixLabors.ImageSharp" Version="1.0.4" /> </AvaloniaResource>
<PackageReference Include="SPB" Version="0.0.4-build17" /> <AvaloniaResource Include="Assets\Styles\Styles.xaml" />
</ItemGroup>
<ItemGroup> <Compile Update="App.axaml.cs">
<EmbeddedResource Include="Assets\Locales\el_GR.json" /> <DependentUpon>App.axaml</DependentUpon>
<EmbeddedResource Include="Assets\Locales\en_US.json" /> <SubType>Code</SubType>
<EmbeddedResource Include="Assets\Locales\es_ES.json" /> </Compile>
<EmbeddedResource Include="Assets\Locales\fr_FR.json" /> <Compile Update="Ui\Windows\MainWindow.axaml.cs">
<EmbeddedResource Include="Assets\Locales\de_DE.json" /> <DependentUpon>MainWindow.axaml</DependentUpon>
<EmbeddedResource Include="Assets\Locales\it_IT.json" /> <SubType>Code</SubType>
<EmbeddedResource Include="Assets\Locales\ko_KR.json" /> </Compile>
<EmbeddedResource Include="Assets\Locales\pt_BR.json" /> <Compile Update="Ui\Windows\AboutWindow.axaml.cs">
<EmbeddedResource Include="Assets\Locales\ru_RU.json" /> <DependentUpon>AboutWindow.axaml</DependentUpon>
<EmbeddedResource Include="Assets\Locales\tr_TR.json" /> <SubType>Code</SubType>
<EmbeddedResource Include="Assets\Styles\Styles.xaml" /> </Compile>
</ItemGroup> <Compile Update="Ui\Applet\ErrorAppletWindow.axaml.cs">
<ItemGroup> <DependentUpon>ProfileWindow.axaml</DependentUpon>
<ProjectReference Include="..\Ryujinx.Audio.Backends.SDL2\Ryujinx.Audio.Backends.SDL2.csproj" /> <SubType>Code</SubType>
<ProjectReference Include="..\Ryujinx.Input\Ryujinx.Input.csproj" /> </Compile>
<ProjectReference Include="..\Ryujinx.Input.SDL2\Ryujinx.Input.SDL2.csproj" /> <Compile Update="Ui\Applet\SwkbdAppletWindow.axaml.cs">
<ProjectReference Include="..\Ryujinx.Audio.Backends.OpenAL\Ryujinx.Audio.Backends.OpenAL.csproj" /> <DependentUpon>ProfileWindow.axaml</DependentUpon>
<ProjectReference Include="..\Ryujinx.Audio.Backends.SoundIo\Ryujinx.Audio.Backends.SoundIo.csproj" /> <SubType>Code</SubType>
<ProjectReference Include="..\Ryujinx.Common\Ryujinx.Common.csproj" /> </Compile>
<ProjectReference Include="..\Ryujinx.HLE\Ryujinx.HLE.csproj" /> <Compile Update="Ui\Controls\InputDialog.axaml.cs">
<ProjectReference Include="..\ARMeilleure\ARMeilleure.csproj" /> <DependentUpon>InputDialog.axaml</DependentUpon>
<ProjectReference Include="..\Ryujinx.Graphics.OpenGL\Ryujinx.Graphics.OpenGL.csproj" /> <SubType>Code</SubType>
<ProjectReference Include="..\Ryujinx.Graphics.Gpu\Ryujinx.Graphics.Gpu.csproj" /> </Compile>
<ProjectReference Include="..\Ryujinx.Ui.Common\Ryujinx.Ui.Common.csproj" /> <Compile Update="Ui\Windows\ContentDialogOverlay.xaml.cs">
</ItemGroup> <DependentUpon>ContentDialogOverlay.xaml</DependentUpon>
<ItemGroup> </Compile>
<Compile Update="App.axaml.cs"> <Compile Update="Ui\Controls\GameListView.axaml.cs">
<DependentUpon>App.axaml</DependentUpon> <DependentUpon>GameListView.axaml</DependentUpon>
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Update="Ui\Windows\MainWindow.axaml.cs"> </ItemGroup>
<DependentUpon>MainWindow.axaml</DependentUpon>
<SubType>Code</SubType> <ItemGroup>
</Compile> <None Remove="Assets\Locales\el_GR.json" />
<Compile Update="Ui\Windows\AboutWindow.axaml.cs"> <None Remove="Assets\Locales\en_US.json" />
<DependentUpon>AboutWindow.axaml</DependentUpon> <None Remove="Assets\Locales\es_ES.json" />
<SubType>Code</SubType> <None Remove="Assets\Locales\fr_FR.json" />
</Compile> <None Remove="Assets\Locales\de_DE.json" />
<Compile Update="Ui\Applet\ErrorAppletWindow.axaml.cs"> <None Remove="Assets\Locales\it_IT.json" />
<DependentUpon>ProfileWindow.axaml</DependentUpon> <None Remove="Assets\Locales\ko_KR.json" />
<SubType>Code</SubType> <None Remove="Assets\Locales\pt_BR.json" />
</Compile> <None Remove="Assets\Locales\ru_RU.json" />
<Compile Update="Ui\Applet\SwkbdAppletWindow.axaml.cs"> <None Remove="Assets\Locales\tr_TR.json" />
<DependentUpon>ProfileWindow.axaml</DependentUpon> <None Remove="Assets\Styles\Styles.xaml" />
<SubType>Code</SubType> <None Remove="Assets\Styles\BaseDark.xaml" />
</Compile> <None Remove="Assets\Styles\BaseLight.xaml" />
<Compile Update="Ui\Controls\InputDialog.axaml.cs"> </ItemGroup>
<DependentUpon>InputDialog.axaml</DependentUpon>
<SubType>Code</SubType> <ItemGroup>
</Compile> <EmbeddedResource Include="Assets\Locales\el_GR.json" />
<Compile Update="Ui\Windows\ContentDialogOverlay.xaml.cs"> <EmbeddedResource Include="Assets\Locales\en_US.json" />
<DependentUpon>ContentDialogOverlay.xaml</DependentUpon> <EmbeddedResource Include="Assets\Locales\es_ES.json" />
</Compile> <EmbeddedResource Include="Assets\Locales\fr_FR.json" />
<Compile Update="Ui\Controls\GameListView.axaml.cs"> <EmbeddedResource Include="Assets\Locales\de_DE.json" />
<DependentUpon>GameListView.axaml</DependentUpon> <EmbeddedResource Include="Assets\Locales\it_IT.json" />
<SubType>Code</SubType> <EmbeddedResource Include="Assets\Locales\ko_KR.json" />
</Compile> <EmbeddedResource Include="Assets\Locales\pt_BR.json" />
</ItemGroup> <EmbeddedResource Include="Assets\Locales\ru_RU.json" />
<EmbeddedResource Include="Assets\Locales\tr_TR.json" />
<EmbeddedResource Include="Assets\Styles\Styles.xaml" />
</ItemGroup>
</Project> </Project>

View File

@@ -1,15 +1,16 @@
using Avalonia; using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Threading; using Avalonia.Threading;
using OpenTK.Windowing.Common;
using Ryujinx.Ava.Input; using Ryujinx.Ava.Input;
using Ryujinx.Ava.Ui.Controls; using Ryujinx.Ava.Ui.Controls;
using Ryujinx.Ava.Ui.Windows; using Ryujinx.Ava.Ui.Windows;
using Ryujinx.Common.Configuration.Hid;
using Ryujinx.HLE.Ui; using Ryujinx.HLE.Ui;
using System; using System;
using System.Threading; using System.Threading;
using HidKey = Ryujinx.Common.Configuration.Hid.Key;
namespace Ryujinx.Ava.Ui.Applet namespace Ryujinx.Ava.Ui.Applet
{ {
class AvaloniaDynamicTextInputHandler : IDynamicTextInputHandler class AvaloniaDynamicTextInputHandler : IDynamicTextInputHandler
@@ -54,20 +55,20 @@ namespace Ryujinx.Ava.Ui.Applet
TextChangedEvent?.Invoke(_hiddenTextBox.Text ?? string.Empty, _hiddenTextBox.SelectionStart, _hiddenTextBox.SelectionEnd, true); TextChangedEvent?.Invoke(_hiddenTextBox.Text ?? string.Empty, _hiddenTextBox.SelectionStart, _hiddenTextBox.SelectionEnd, true);
} }
private void AvaloniaDynamicTextInputHandler_TextInput(object sender, TextInputEventArgs e) private void AvaloniaDynamicTextInputHandler_TextInput(object sender, string text)
{ {
Dispatcher.UIThread.InvokeAsync(() => Dispatcher.UIThread.InvokeAsync(() =>
{ {
if (_canProcessInput) if (_canProcessInput)
{ {
_hiddenTextBox.SendText(e.AsString); _hiddenTextBox.SendText(text);
} }
}); });
} }
private void AvaloniaDynamicTextInputHandler_KeyRelease(object sender, Avalonia.Input.KeyEventArgs e) private void AvaloniaDynamicTextInputHandler_KeyRelease(object sender, Avalonia.Input.KeyEventArgs e)
{ {
var key = (Key)AvaloniaMappingHelper.ToInputKey(e.Key); var key = (HidKey)AvaloniaMappingHelper.ToInputKey(e.Key);
if (!(KeyReleasedEvent?.Invoke(key)).GetValueOrDefault(true)) if (!(KeyReleasedEvent?.Invoke(key)).GetValueOrDefault(true))
{ {
@@ -85,9 +86,9 @@ namespace Ryujinx.Ava.Ui.Applet
}); });
} }
private void AvaloniaDynamicTextInputHandler_KeyPressed(object sender, Avalonia.Input.KeyEventArgs e) private void AvaloniaDynamicTextInputHandler_KeyPressed(object sender, KeyEventArgs e)
{ {
var key = (Key)AvaloniaMappingHelper.ToInputKey(e.Key); var key = (HidKey)AvaloniaMappingHelper.ToInputKey(e.Key);
if (!(KeyPressedEvent?.Invoke(key)).GetValueOrDefault(true)) if (!(KeyPressedEvent?.Invoke(key)).GetValueOrDefault(true))
{ {

View File

@@ -73,10 +73,13 @@ namespace Ryujinx.Ava.Ui.Controls
{ {
SizeChanged?.Invoke(this, rect.Size); SizeChanged?.Invoke(this, rect.Size);
RenderSize = rect.Size * Program.WindowScaleFactor; if (!rect.IsEmpty)
{
RenderSize = rect.Size * VisualRoot.RenderScaling;
_glDrawOperation?.Dispose(); _glDrawOperation?.Dispose();
_glDrawOperation = new GlDrawOperation(this); _glDrawOperation = new GlDrawOperation(this);
}
} }
public override void Render(DrawingContext context) public override void Render(DrawingContext context)

View File

@@ -123,10 +123,6 @@ namespace Ryujinx.Ava.Ui.Windows
CheckLaunchState(); CheckLaunchState();
} }
if (OperatingSystem.IsLinux())
{
Program.WindowScaleFactor = this.PlatformImpl.RenderScaling;
}
_rendererWaitEvent = new AutoResetEvent(false); _rendererWaitEvent = new AutoResetEvent(false);
} }

View File

@@ -677,7 +677,7 @@ namespace Ryujinx.Graphics.OpenGL
GL.MultiDrawElementsIndirectCount( GL.MultiDrawElementsIndirectCount(
_primitiveType, _primitiveType,
(Version46)_elementsType, (All)_elementsType,
(IntPtr)indirectBuffer.Offset, (IntPtr)indirectBuffer.Offset,
(IntPtr)parameterBuffer.Offset, (IntPtr)parameterBuffer.Offset,
maxDrawCount, maxDrawCount,

View File

@@ -6,7 +6,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="OpenTK.Graphics" Version="4.5.0" /> <PackageReference Include="OpenTK.Graphics" Version="4.7.2" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -23,9 +23,10 @@
<PackageReference Include="GtkSharp.Dependencies" Version="1.1.1" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" /> <PackageReference Include="GtkSharp.Dependencies" Version="1.1.1" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
<PackageReference Include="Ryujinx.Graphics.Nvdec.Dependencies" Version="4.4.0-build9" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" /> <PackageReference Include="Ryujinx.Graphics.Nvdec.Dependencies" Version="4.4.0-build9" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
<PackageReference Include="Ryujinx.Audio.OpenAL.Dependencies" Version="1.21.0.1" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" /> <PackageReference Include="Ryujinx.Audio.OpenAL.Dependencies" Version="1.21.0.1" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'" />
<PackageReference Include="OpenTK.Graphics" Version="4.5.0" /> <PackageReference Include="OpenTK.Graphics" Version="4.7.2" />
<PackageReference Include="SPB" Version="0.0.4-build17" /> <PackageReference Include="SPB" Version="0.0.4-build17" />
<PackageReference Include="SharpZipLib" Version="1.3.3" /> <PackageReference Include="SharpZipLib" Version="1.3.3" />
<PackageReference Include="SixLabors.ImageSharp" Version="1.0.4" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@@ -42,20 +43,20 @@
<ProjectReference Include="..\Ryujinx.Ui.Common\Ryujinx.Ui.Common.csproj" /> <ProjectReference Include="..\Ryujinx.Ui.Common\Ryujinx.Ui.Common.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ContentWithTargetPath Include="..\distribution\windows\alsoft.ini" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'"> <ContentWithTargetPath Include="..\distribution\windows\alsoft.ini" Condition="'$(RuntimeIdentifier)' != 'linux-x64' AND '$(RuntimeIdentifier)' != 'osx-x64'">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
<TargetPath>alsoft.ini</TargetPath> <TargetPath>alsoft.ini</TargetPath>
</ContentWithTargetPath> </ContentWithTargetPath>
<ContentWithTargetPath Include="..\distribution\legal\THIRDPARTY.md"> <ContentWithTargetPath Include="..\distribution\legal\THIRDPARTY.md">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
<TargetPath>THIRDPARTY.md</TargetPath> <TargetPath>THIRDPARTY.md</TargetPath>
</ContentWithTargetPath> </ContentWithTargetPath>
<ContentWithTargetPath Include="..\Ryujinx.Audio\LICENSE.txt"> <ContentWithTargetPath Include="..\Ryujinx.Audio\LICENSE.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
<TargetPath>LICENSE-Ryujinx.Audio.txt</TargetPath> <TargetPath>LICENSE-Ryujinx.Audio.txt</TargetPath>
</ContentWithTargetPath> </ContentWithTargetPath>
</ItemGroup> </ItemGroup>
<!-- Due to .net core 3.1 embedded resource loading --> <!-- Due to .net core 3.1 embedded resource loading -->
<PropertyGroup> <PropertyGroup>

View File

@@ -114,12 +114,12 @@ namespace Ryujinx.Ui
GL.BlitFramebuffer(0, GL.BlitFramebuffer(0,
0, 0,
AllocatedWidth, WindowWidth,
AllocatedHeight, WindowHeight,
0, 0,
0, 0,
AllocatedWidth, WindowWidth,
AllocatedHeight, WindowHeight,
ClearBufferMask.ColorBufferBit, ClearBufferMask.ColorBufferBit,
BlitFramebufferFilter.Linear); BlitFramebufferFilter.Linear);
} }

View File

@@ -41,6 +41,8 @@ namespace Ryujinx.Ui
public IRenderer Renderer { get; private set; } public IRenderer Renderer { get; private set; }
public bool ScreenshotRequested { get; set; } public bool ScreenshotRequested { get; set; }
protected int WindowWidth { get; private set; }
protected int WindowHeight { get; private set; }
public static event EventHandler<StatusUpdatedEventArgs> StatusUpdatedEvent; public static event EventHandler<StatusUpdatedEventArgs> StatusUpdatedEvent;
@@ -71,9 +73,6 @@ namespace Ryujinx.Ui
private IKeyboard _keyboardInterface; private IKeyboard _keyboardInterface;
private GraphicsDebugLevel _glLogLevel; private GraphicsDebugLevel _glLogLevel;
private string _gpuVendorName; private string _gpuVendorName;
private int _windowHeight;
private int _windowWidth;
private bool _isMouseInClient; private bool _isMouseInClient;
public RendererWidgetBase(InputManager inputManager, GraphicsDebugLevel glLogLevel) public RendererWidgetBase(InputManager inputManager, GraphicsDebugLevel glLogLevel)
@@ -223,10 +222,10 @@ namespace Ryujinx.Ui
Gdk.Monitor monitor = Display.GetMonitorAtWindow(Window); Gdk.Monitor monitor = Display.GetMonitorAtWindow(Window);
_windowWidth = evnt.Width * monitor.ScaleFactor; WindowWidth = evnt.Width * monitor.ScaleFactor;
_windowHeight = evnt.Height * monitor.ScaleFactor; WindowHeight = evnt.Height * monitor.ScaleFactor;
Renderer?.Window.SetSize(_windowWidth, _windowHeight); Renderer?.Window.SetSize(WindowWidth, WindowHeight);
return result; return result;
} }
@@ -307,7 +306,7 @@ namespace Ryujinx.Ui
} }
Renderer = renderer; Renderer = renderer;
Renderer?.Window.SetSize(_windowWidth, _windowHeight); Renderer?.Window.SetSize(WindowWidth, WindowHeight);
if (Renderer != null) if (Renderer != null)
{ {

View File

@@ -112,7 +112,7 @@ namespace Ryujinx.Ui.Windows
_amiiboJsonPath = System.IO.Path.Join(AppDataManager.BaseDirPath, "system", "amiibo", "Amiibo.json"); _amiiboJsonPath = System.IO.Path.Join(AppDataManager.BaseDirPath, "system", "amiibo", "Amiibo.json");
_amiiboList = new List<AmiiboApi>(); _amiiboList = new List<AmiiboApi>();
_amiiboLogoBytes = EmbeddedResources.Read("Ryujinx/Ui/Resources/Logo_Amiibo.png"); _amiiboLogoBytes = EmbeddedResources.Read("Ryujinx.Ui.Common/Resources/Logo_Amiibo.png");
_amiiboImage.Pixbuf = new Gdk.Pixbuf(_amiiboLogoBytes); _amiiboImage.Pixbuf = new Gdk.Pixbuf(_amiiboLogoBytes);
_scanButton.Sensitive = false; _scanButton.Sensitive = false;