From 61f41e6301e859816a7b1b624dea83379f1dc7eb Mon Sep 17 00:00:00 2001 From: Herman K Date: Fri, 8 Sep 2023 18:15:56 +0300 Subject: [PATCH] creating only one gtk thread (#12830) Co-authored-by: Herman Kirshin --- src/Avalonia.X11/NativeDialogs/Gtk.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Avalonia.X11/NativeDialogs/Gtk.cs b/src/Avalonia.X11/NativeDialogs/Gtk.cs index 3f225dc6bc..14bd1142dd 100644 --- a/src/Avalonia.X11/NativeDialogs/Gtk.cs +++ b/src/Avalonia.X11/NativeDialogs/Gtk.cs @@ -256,9 +256,13 @@ namespace Avalonia.X11.NativeDialogs public static IntPtr GetForeignWindow(IntPtr xid) => gdk_x11_window_foreign_new_for_display(s_display, xid); + static object s_startGtkLock = new(); + static Task s_startGtkTask; + public static Task StartGtk() { - return StartGtkCore(); + lock (s_startGtkLock) + return s_startGtkTask ??= StartGtkCore(); } private static void GtkThread(TaskCompletionSource tcs)