From 3cdc26e72ef01d9d93f80734b4537a4f5ce22b4c Mon Sep 17 00:00:00 2001 From: "agsayt@gmail.com" Date: Mon, 9 May 2022 02:02:51 +0300 Subject: [PATCH 1/2] fix: Fixed AccessViolationException that occurs in GLibSharp.dll after storage picker interaction --- .../Extensions/Storage/Pickers/FileOpenPickerExtension.cs | 1 + .../Extensions/Storage/Pickers/FileSavePickerExtension.cs | 1 + .../Extensions/Storage/Pickers/FolderPickerExtension.cs | 1 + 3 files changed, 3 insertions(+) diff --git a/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileOpenPickerExtension.cs b/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileOpenPickerExtension.cs index 80d10b0e469d..928b76466513 100644 --- a/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileOpenPickerExtension.cs +++ b/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileOpenPickerExtension.cs @@ -77,6 +77,7 @@ private async Task OpenPickerAsync(bool multiple) } } + dialog.Dispose(); dialog.Destroy(); return files.ToArray(); } diff --git a/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileSavePickerExtension.cs b/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileSavePickerExtension.cs index 2ed0e5094685..35f8ec14d5f5 100644 --- a/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileSavePickerExtension.cs +++ b/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileSavePickerExtension.cs @@ -49,6 +49,7 @@ public FileSavePickerExtension(FileSavePicker owner) file = await StorageFile.GetFileFromPathAsync(dialog.Filename); } + dialog.Dispose(); dialog.Destroy(); return file; } diff --git a/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FolderPickerExtension.cs b/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FolderPickerExtension.cs index 60267913fed9..730cd6277675 100644 --- a/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FolderPickerExtension.cs +++ b/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FolderPickerExtension.cs @@ -49,6 +49,7 @@ public FolderPickerExtension(FolderPicker owner) folder = await StorageFolder.GetFolderFromPathAsync(dialog.Filename); } + dialog.Dispose(); dialog.Destroy(); return folder; } From 2bd123fb795b90b4620b2763a3a27e649b886000 Mon Sep 17 00:00:00 2001 From: "agsayt@gmail.com" Date: Mon, 9 May 2022 17:27:57 +0300 Subject: [PATCH 2/2] fix: Fixed AccessViolationException that occurs in GLibSharp.dll after storage picker interaction --- .../Extensions/Storage/Pickers/FileOpenPickerExtension.cs | 4 +--- .../Extensions/Storage/Pickers/FileSavePickerExtension.cs | 5 ++--- .../Extensions/Storage/Pickers/FolderPickerExtension.cs | 4 +--- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileOpenPickerExtension.cs b/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileOpenPickerExtension.cs index 928b76466513..e6556416ebbb 100644 --- a/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileOpenPickerExtension.cs +++ b/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileOpenPickerExtension.cs @@ -41,7 +41,7 @@ private async Task OpenPickerAsync(bool multiple) commitText = _picker.CommitButtonText; } - FileChooserDialog dialog = new FileChooserDialog( + using FileChooserDialog dialog = new FileChooserDialog( "Open", GtkHost.Window, FileChooserAction.Open, @@ -77,8 +77,6 @@ private async Task OpenPickerAsync(bool multiple) } } - dialog.Dispose(); - dialog.Destroy(); return files.ToArray(); } } diff --git a/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileSavePickerExtension.cs b/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileSavePickerExtension.cs index 35f8ec14d5f5..daf14b1dd024 100644 --- a/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileSavePickerExtension.cs +++ b/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FileSavePickerExtension.cs @@ -28,7 +28,7 @@ public FileSavePickerExtension(FileSavePicker owner) commitText = _picker.CommitButtonText; } - FileChooserDialog dialog = new FileChooserDialog( + using FileChooserDialog dialog = new FileChooserDialog( "Save File", GtkHost.Window, FileChooserAction.Save, @@ -49,8 +49,7 @@ public FileSavePickerExtension(FileSavePicker owner) file = await StorageFile.GetFileFromPathAsync(dialog.Filename); } - dialog.Dispose(); - dialog.Destroy(); + return file; } } diff --git a/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FolderPickerExtension.cs b/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FolderPickerExtension.cs index 730cd6277675..4cfd04a1df96 100644 --- a/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FolderPickerExtension.cs +++ b/src/Uno.UI.Runtime.Skia.Gtk/Extensions/Storage/Pickers/FolderPickerExtension.cs @@ -27,7 +27,7 @@ public FolderPickerExtension(FolderPicker owner) commitText = _picker.CommitButtonText; } - FileChooserDialog dialog = new FileChooserDialog( + using FileChooserDialog dialog = new FileChooserDialog( "Select Folder", GtkHost.Window, FileChooserAction.SelectFolder, @@ -49,8 +49,6 @@ public FolderPickerExtension(FolderPicker owner) folder = await StorageFolder.GetFolderFromPathAsync(dialog.Filename); } - dialog.Dispose(); - dialog.Destroy(); return folder; } }