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,59 +1,53 @@
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;
class Program
{ {
internal class Program // Initialization code. Don't use any Avalonia, third-party APIs or any
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
// yet and stuff might break.
[STAThread]
public static int Main(string[] args)
{ {
// Initialization code. Don't use any Avalonia, third-party APIs or any var builder = BuildAvaloniaApp();
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
// yet and stuff might break. double GetScaling()
[STAThread]
public static void Main(string[] args)
{ {
var builder = BuildAvaloniaApp(); var idx = Array.IndexOf(args, "--scaling");
builder.With(new FontManagerOptions if (idx != 0 && args.Length > idx + 1 &&
{ double.TryParse(args[idx + 1], NumberStyles.Any, CultureInfo.InvariantCulture, out var scaling))
FontFallbacks = new[] return scaling;
{ return 1;
new FontFallback
{
FontFamily = new FontFamily("Microsoft YaHei")
}
}
});
if (args.Contains("--drm"))
{
SilenceConsole();
builder.StartLinuxDrm(args: args, card: "/dev/dri/card1", scaling: 1);
}
else
{
builder.StartWithClassicDesktopLifetime(args);
}
} }
// Avalonia configuration, don't remove; also used by visual designer. if (args.Contains("--drm"))
public static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure<App>()
.UseManagedSystemDialogs()
.UsePlatformDetect()
.With(new Win32PlatformOptions())
.LogToTrace();
private static void SilenceConsole()
{ {
new Thread(() => SilenceConsole();
return builder.StartLinuxDrm(args: args, card: "/dev/dri/card1", scaling: GetScaling());
}
return builder.StartWithClassicDesktopLifetime(args);
}
// Avalonia configuration, don't remove; also used by visual designer.
public static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure<App>()
.UsePlatformDetect()
.LogToTrace();
private static void SilenceConsole()
{
new Thread(() =>
{ {
Console.CursorVisible = false; Console.CursorVisible = false;
while (true) while (true)
Console.ReadKey(true); Console.ReadKey(true);
}) })
{ IsBackground = true }.Start(); { IsBackground = true }.Start();
}
} }
} }