diff options
author | Marius Ungureanu <maungu@microsoft.com> | 2018-11-22 20:59:51 +0300 |
---|---|---|
committer | Marius Ungureanu <maungu@microsoft.com> | 2018-11-22 20:59:52 +0300 |
commit | 0414d28e57d8f5c50a0d6d686e7ec8a83e2269b1 (patch) | |
tree | 6195820ae6c2224cfff4778850d15893d26267d1 | |
parent | 4e88083ff3a5b750aa4c3e1c823533e256f31264 (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.cs | 2 | ||||
-rw-r--r-- | Xwt.XamMac/Xwt.Mac/ImageHandler.cs | 4 |
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)) { |