diff options
author | Marius Ungureanu <marius.ungureanu@xamarin.com> | 2021-07-28 15:31:46 +0300 |
---|---|---|
committer | Marius Ungureanu <maungu@microsoft.com> | 2021-09-05 22:20:00 +0300 |
commit | 959f0cb50bf66dc3620d832f2292005a396e6c23 (patch) | |
tree | f864cb7dad1a1163b649331a5201ca9a8ff31547 /Xwt.XamMac | |
parent | fccff06ea812881862d020a3f19df601231ca4dd (diff) |
Try using lazy image loading
Also optimize a multiple IEnumerable enumeration path and switch to NSImage.FromStream.
Diffstat (limited to 'Xwt.XamMac')
-rw-r--r-- | Xwt.XamMac/Xwt.Mac/ImageHandler.cs | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/Xwt.XamMac/Xwt.Mac/ImageHandler.cs b/Xwt.XamMac/Xwt.Mac/ImageHandler.cs index a11f86d3..c4f1cfc7 100644 --- a/Xwt.XamMac/Xwt.Mac/ImageHandler.cs +++ b/Xwt.XamMac/Xwt.Mac/ImageHandler.cs @@ -51,14 +51,12 @@ namespace Xwt.Mac public override object LoadFromStream (Stream stream) { - using (NSData data = NSData.FromStream (stream)) { - return new NSImage (data); - } + return NSImage.FromStream (stream); } public override object LoadFromFile (string file) { - return new NSImage (file); + return new NSImage (file, lazy: true); } public override object CreateMultiResolutionImage (IEnumerable<object> images) @@ -71,8 +69,9 @@ namespace Xwt.Mac public override object CreateMultiSizeIcon (IEnumerable<object> images) { - if (images.Count () == 1) - return images.First (); + var singleImage = images.SingleOrDefault (); + if (singleImage != null) + return singleImage; NSImage res = new NSImage (); foreach (NSImage img in images) @@ -251,10 +250,8 @@ namespace Xwt.Mac static NSImage FromResource (string res) { - var stream = typeof(ImageHandler).Assembly.GetManifestResourceStream (res); - using (stream) - using (NSData data = NSData.FromStream (stream)) { - return new NSImage (data); + using (var stream = typeof(ImageHandler).Assembly.GetManifestResourceStream (res)) { + return NSImage.FromStream (stream); } } |