From 0f9a856e967b2d55d7d0fc77887f7b9c038bea37 Mon Sep 17 00:00:00 2001
From: Jumar Macato <16554748+jmacato@users.noreply.github.com>
Date: Sat, 8 Jun 2024 18:44:11 +0800
Subject: [PATCH] Addendum
---
Avalonia.Desktop.slnf | 1 +
Avalonia.sln | 7 +
.../Avalonia.FreeDesktop.csproj | 2 +
src/Linux/Tmds.DBus/Connection2.cs | 1063 +++++++++++++++++
src/Linux/Tmds.DBus/ObjectPath2.cs | 179 +++
5 files changed, 1252 insertions(+)
create mode 100644 src/Linux/Tmds.DBus/Connection2.cs
create mode 100644 src/Linux/Tmds.DBus/ObjectPath2.cs
diff --git a/Avalonia.Desktop.slnf b/Avalonia.Desktop.slnf
index b32d6e3d70..914a74c27e 100644
--- a/Avalonia.Desktop.slnf
+++ b/Avalonia.Desktop.slnf
@@ -41,6 +41,7 @@
"src\\Linux\\Avalonia.LinuxFramebuffer\\Avalonia.LinuxFramebuffer.csproj",
"src\\Linux\\Tmds.DBus.Protocol\\Tmds.DBus.Protocol.csproj",
"src\\Linux\\Tmds.DBus.SourceGenerator\\Tmds.DBus.SourceGenerator.csproj",
+ "src\\Linux\\Tmds.DBus\\Tmds.DBus.csproj",
"src\\Markup\\Avalonia.Markup.Xaml.Loader\\Avalonia.Markup.Xaml.Loader.csproj",
"src\\Markup\\Avalonia.Markup.Xaml\\Avalonia.Markup.Xaml.csproj",
"src\\Markup\\Avalonia.Markup\\Avalonia.Markup.csproj",
diff --git a/Avalonia.sln b/Avalonia.sln
index 36f88e3592..8c4ad8b03e 100644
--- a/Avalonia.sln
+++ b/Avalonia.sln
@@ -306,6 +306,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tmds.DBus.Protocol", "src\L
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tmds.DBus.SourceGenerator", "src\Linux\Tmds.DBus.SourceGenerator\Tmds.DBus.SourceGenerator.csproj", "{FFE8B040-B467-424A-9DDB-6155DC1EB62E}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tmds.DBus", "src\Linux\Tmds.DBus\Tmds.DBus.csproj", "{1ABAB94E-D687-4E3B-8489-39EDCFA91653}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -714,6 +716,10 @@ Global
{FFE8B040-B467-424A-9DDB-6155DC1EB62E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FFE8B040-B467-424A-9DDB-6155DC1EB62E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFE8B040-B467-424A-9DDB-6155DC1EB62E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1ABAB94E-D687-4E3B-8489-39EDCFA91653}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {1ABAB94E-D687-4E3B-8489-39EDCFA91653}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1ABAB94E-D687-4E3B-8489-39EDCFA91653}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {1ABAB94E-D687-4E3B-8489-39EDCFA91653}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -803,6 +809,7 @@ Global
{9AE1B827-21AC-4063-AB22-C8804B7F931E} = {C5A00AC3-B34C-4564-9BDD-2DA473EF4D8B}
{18B242C7-33BC-4B40-B12C-82B20F2BF638} = {86C53C40-57AA-45B8-AD42-FAE0EFDF0F2B}
{FFE8B040-B467-424A-9DDB-6155DC1EB62E} = {86C53C40-57AA-45B8-AD42-FAE0EFDF0F2B}
+ {1ABAB94E-D687-4E3B-8489-39EDCFA91653} = {86C53C40-57AA-45B8-AD42-FAE0EFDF0F2B}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {87366D66-1391-4D90-8999-95A620AD786A}
diff --git a/src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj b/src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj
index 995c57dc64..168ad8b82a 100644
--- a/src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj
+++ b/src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj
@@ -20,6 +20,8 @@
OutputItemType="Analyzer"
ReferenceOutputAssembly="false"
PrivateAssets="all"/>
+
+
diff --git a/src/Linux/Tmds.DBus/Connection2.cs b/src/Linux/Tmds.DBus/Connection2.cs
new file mode 100644
index 0000000000..b67d897c5d
--- /dev/null
+++ b/src/Linux/Tmds.DBus/Connection2.cs
@@ -0,0 +1,1063 @@
+// Copyright 2016 Tom Deseyn
+// This software is made available under the MIT License
+// See COPYING for details
+
+using System;
+using System.Net;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Tmds.DBus.CodeGen;
+using Tmds.DBus.Protocol;
+
+namespace Tmds.DBus
+{
+ ///
+ /// Connection with a D-Bus peer.
+ ///
+ public class Connection2 : IConnection
+ {
+ [Flags]
+ private enum ConnectionType
+ {
+ None = 0,
+ ClientManual = 1,
+ ClientAutoConnect = 2,
+ Server = 4
+ }
+
+ ///
+ /// Assembly name where the dynamically generated code resides.
+ ///
+ public const string DynamicAssemblyName = "Tmds.DBus.Emit, PublicKey=002400000480000094000000060200000024000052534131000400000100010071a8770f460cce31df0feb6f94b328aebd55bffeb5c69504593df097fdd9b29586dbd155419031834411c8919516cc565dee6b813c033676218496edcbe7939c0dd1f919f3d1a228ebe83b05a3bbdbae53ce11bcf4c04a42d8df1a83c2d06cb4ebb0b447e3963f48a1ca968996f3f0db8ab0e840a89d0a5d5a237e2f09189ed3";
+
+ private static Connection2 s_systemConnection2;
+ private static Connection2 s_sessionConnection2;
+ private static readonly object NoDispose = new object();
+
+ ///
+ /// An AutoConnect Connection to the system bus.
+ ///
+ public static Connection2 System => s_systemConnection2 ?? CreateSystemConnection();
+
+ ///
+ /// An AutoConnect Connection to the session bus.
+ ///
+ public static Connection2 Session => s_sessionConnection2 ?? CreateSessionConnection();
+
+ private class ProxyFactory : IProxyFactory
+ {
+ public Connection2 Connection2 { get; }
+ public ProxyFactory(Connection2 connection2)
+ {
+ Connection2 = connection2;
+ }
+ public T CreateProxy(string serviceName, ObjectPath2 path2)
+ {
+ return Connection2.CreateProxy(serviceName, path2);
+ }
+ }
+
+ private readonly object _gate = new object();
+ private readonly Dictionary _registeredObjects = new Dictionary();
+ private readonly Func> _connectFunction;
+ private readonly Action