feat: StartLinuxDrm in Raspberry Pi.

This commit is contained in:
Zhang Dian
2023-11-04 01:07:43 +08:00
parent 1ad9fc2714
commit cbea8156ad

View File

@@ -1,48 +1,43 @@
using Avalonia; using System;
using Avalonia.Dialogs; using System.Globalization;
using Avalonia.Media;
using System;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using Avalonia;
namespace Semi.Avalonia.Demo.Drm namespace Semi.Avalonia.Demo.Drm;
{
internal class Program class Program
{ {
// Initialization code. Don't use any Avalonia, third-party APIs or any // Initialization code. Don't use any Avalonia, third-party APIs or any
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
// yet and stuff might break. // yet and stuff might break.
[STAThread] [STAThread]
public static void Main(string[] args) public static int Main(string[] args)
{ {
var builder = BuildAvaloniaApp(); var builder = BuildAvaloniaApp();
builder.With(new FontManagerOptions
double GetScaling()
{ {
FontFallbacks = new[] var idx = Array.IndexOf(args, "--scaling");
{ if (idx != 0 && args.Length > idx + 1 &&
new FontFallback double.TryParse(args[idx + 1], NumberStyles.Any, CultureInfo.InvariantCulture, out var scaling))
{ return scaling;
FontFamily = new FontFamily("Microsoft YaHei") return 1;
} }
}
});
if (args.Contains("--drm")) if (args.Contains("--drm"))
{ {
SilenceConsole(); SilenceConsole();
builder.StartLinuxDrm(args: args, card: "/dev/dri/card1", scaling: 1); return builder.StartLinuxDrm(args: args, card: "/dev/dri/card1", scaling: GetScaling());
}
else
{
builder.StartWithClassicDesktopLifetime(args);
} }
return builder.StartWithClassicDesktopLifetime(args);
} }
// Avalonia configuration, don't remove; also used by visual designer. // Avalonia configuration, don't remove; also used by visual designer.
public static AppBuilder BuildAvaloniaApp() public static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure<App>() => AppBuilder.Configure<App>()
.UseManagedSystemDialogs()
.UsePlatformDetect() .UsePlatformDetect()
.With(new Win32PlatformOptions())
.LogToTrace(); .LogToTrace();
private static void SilenceConsole() private static void SilenceConsole()
@@ -56,4 +51,3 @@ namespace Semi.Avalonia.Demo.Drm
{ IsBackground = true }.Start(); { IsBackground = true }.Start();
} }
} }
}