[vlc-commits] macosx/image view: allow setting images with URLs and placeholders

Felix Paul Kühne git at videolan.org
Sun Jun 30 14:22:41 CEST 2019


vlc | branch: master | Felix Paul Kühne <felix at feepk.net> | Sun Jun 30 14:14:26 2019 +0200| [a094528a49d9bd7e515a81d9b89fb3845eb71995] | committer: Felix Paul Kühne

macosx/image view: allow setting images with URLs and placeholders

This downloads and allocates the image on a background thread without blocking the UI.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a094528a49d9bd7e515a81d9b89fb3845eb71995
---

 modules/gui/macosx/views/VLCImageView.h |  2 ++
 modules/gui/macosx/views/VLCImageView.m | 11 +++++++++++
 2 files changed, 13 insertions(+)

diff --git a/modules/gui/macosx/views/VLCImageView.h b/modules/gui/macosx/views/VLCImageView.h
index 46e73f95c1..4008d299da 100644
--- a/modules/gui/macosx/views/VLCImageView.h
+++ b/modules/gui/macosx/views/VLCImageView.h
@@ -42,4 +42,6 @@ typedef NS_ENUM(NSInteger, VLCImageViewContentGravity) {
 @property (readwrite, retain, nonatomic, nullable) NSImage *image;
 @property (readwrite) VLCImageViewContentGravity contentGravity;
 
+- (void)setImageURL:(NSURL * _Nonnull)url placeholderImage:(NSImage * _Nullable)image;
+
 @end
diff --git a/modules/gui/macosx/views/VLCImageView.m b/modules/gui/macosx/views/VLCImageView.m
index c0015df9d5..bd4184cbfd 100644
--- a/modules/gui/macosx/views/VLCImageView.m
+++ b/modules/gui/macosx/views/VLCImageView.m
@@ -121,4 +121,15 @@
     [self setupBorderColor];
 }
 
+- (void)setImageURL:(NSURL * _Nonnull)artworkURL placeholderImage:(NSImage * _Nullable)image
+{
+    [self setImage:image];
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
+        NSImage *downloadedImage = [[NSImage alloc] initWithContentsOfURL:artworkURL];
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [self setImage:downloadedImage];
+        });
+    });
+}
+
 @end



More information about the vlc-commits mailing list