53 lines
1.5 KiB
C#
Raw Normal View History

2023-11-04 01:07:43 +08:00
using System;
using System.Globalization;
2023-07-09 09:24:41 +08:00
using System.Linq;
using System.Threading;
2023-11-04 01:07:43 +08:00
using Avalonia;
2023-07-09 09:24:41 +08:00
2023-11-04 01:07:43 +08:00
namespace Semi.Avalonia.Demo.Drm;
class Program
2023-07-09 09:24:41 +08:00
{
2023-11-04 01:07:43 +08:00
// 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)
2023-07-09 09:24:41 +08:00
{
2023-11-04 01:07:43 +08:00
var builder = BuildAvaloniaApp();
double GetScaling()
2023-07-09 09:24:41 +08:00
{
2023-11-04 01:07:43 +08:00
var idx = Array.IndexOf(args, "--scaling");
if (idx != 0 && args.Length > idx + 1 &&
double.TryParse(args[idx + 1], NumberStyles.Any, CultureInfo.InvariantCulture, out var scaling))
return scaling;
return 1;
2023-07-09 09:24:41 +08:00
}
2023-11-04 01:07:43 +08:00
if (args.Contains("--drm"))
2023-07-09 09:24:41 +08:00
{
2023-11-04 01:07:43 +08:00
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(() =>
2023-07-09 09:24:41 +08:00
{
Console.CursorVisible = false;
while (true)
Console.ReadKey(true);
})
{ IsBackground = true }.Start();
}
}