Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/xwt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius Ungureanu <maungu@microsoft.com>2018-11-22 20:59:51 +0300
committerMarius Ungureanu <maungu@microsoft.com>2018-11-22 20:59:52 +0300
commit0414d28e57d8f5c50a0d6d686e7ec8a83e2269b1 (patch)
tree6195820ae6c2224cfff4778850d15893d26267d1
parent4e88083ff3a5b750aa4c3e1c823533e256f31264 (diff)
[Mac] Dispose of images on the UI thread
Accessing the object's hashcode on a non-UI thread can cause problems in native land Fixes VSTS #731416 - VS for Mac crashes with "A fatal error has occurred" - "System.NullReferenceException: at (wrapper managed-to-native) ObjCRuntime.Messaging.nuint_objc_msgSend(intptr,intptr)" at Xwt.Drawing.Image.Finalize () /external/xwt/Xwt/Xwt.Drawing/Image.cs:83
-rw-r--r--Xwt.XamMac/Xwt.Mac/ImageBuilderBackendHandler.cs2
-rw-r--r--Xwt.XamMac/Xwt.Mac/ImageHandler.cs4
2 files changed, 5 insertions, 1 deletions
diff --git a/Xwt.XamMac/Xwt.Mac/ImageBuilderBackendHandler.cs b/Xwt.XamMac/Xwt.Mac/ImageBuilderBackendHandler.cs
index a51667ca..d6d1ab5e 100644
--- a/Xwt.XamMac/Xwt.Mac/ImageBuilderBackendHandler.cs
+++ b/Xwt.XamMac/Xwt.Mac/ImageBuilderBackendHandler.cs
@@ -37,6 +37,8 @@ namespace Xwt.Mac
{
}
+ public override bool DisposeHandleOnUiThread => true;
+
#region IImageBuilderBackendHandler implementation
public override object CreateImageBuilder (int width, int height, ImageFormat format)
{
diff --git a/Xwt.XamMac/Xwt.Mac/ImageHandler.cs b/Xwt.XamMac/Xwt.Mac/ImageHandler.cs
index 370e5ed4..d0f6765d 100644
--- a/Xwt.XamMac/Xwt.Mac/ImageHandler.cs
+++ b/Xwt.XamMac/Xwt.Mac/ImageHandler.cs
@@ -46,7 +46,9 @@ namespace Xwt.Mac
static readonly IntPtr cls_NSImage = new Class (typeof (NSImage)).Handle;
static Dictionary<string, NSImage> stockIcons = new Dictionary<string, NSImage> ();
-
+
+ public override bool DisposeHandleOnUiThread => true;
+
public override object LoadFromStream (Stream stream)
{
using (NSData data = NSData.FromStream (stream)) {