From 83ca2cac5ace347ab8632632270db114a08b03ec Mon Sep 17 00:00:00 2001 From: workgroupengineering Date: Sun, 24 Mar 2024 12:59:54 +0100 Subject: [PATCH] feat: Allow to initialize `DrmCard` from existing file descriptor. (#15092) --- .../Avalonia.LinuxFramebuffer/Output/DrmBindings.cs | 5 +++++ src/Linux/Avalonia.LinuxFramebuffer/Output/DrmOutput.cs | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmBindings.cs b/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmBindings.cs index 6febe6c26b..3468599381 100644 --- a/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmBindings.cs +++ b/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmBindings.cs @@ -170,6 +170,11 @@ namespace Avalonia.LinuxFramebuffer.Output } } + public DrmCard(int fd) + { + Fd = fd; + } + public DrmResources GetResources(bool connectorsForceProbe = false) => new DrmResources(Fd, connectorsForceProbe); public void Dispose() { diff --git a/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmOutput.cs b/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmOutput.cs index ac87c9c796..91441c64a0 100644 --- a/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmOutput.cs +++ b/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmOutput.cs @@ -7,10 +7,8 @@ using Avalonia.OpenGL; using Avalonia.OpenGL.Egl; using Avalonia.OpenGL.Surfaces; using Avalonia.Platform; -using Avalonia.Platform.Interop; using static Avalonia.LinuxFramebuffer.NativeUnsafeMethods; using static Avalonia.LinuxFramebuffer.Output.LibDrm; -using static Avalonia.LinuxFramebuffer.Output.LibDrm.GbmColorFormats; namespace Avalonia.LinuxFramebuffer.Output { @@ -51,12 +49,15 @@ namespace Avalonia.LinuxFramebuffer.Output } public DrmOutput(string path = null, bool connectorsForceProbe = false, DrmOutputOptions options = null) + :this(new DrmCard(path), connectorsForceProbe, options) + { + } + + public DrmOutput(DrmCard card, bool connectorsForceProbe = false, DrmOutputOptions options = null) { if (options != null) _outputOptions = options; - var card = new DrmCard(path); - var resources = card.GetResources(connectorsForceProbe); IEnumerable connectors = resources.Connectors;