File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -5,16 +5,16 @@ struct ImageCaptureView: View {
55 let url : URL
66 var makeTempDragFile : ( ) -> URL ?
77
8+ @StateObject private var loader = ImageLoader ( )
9+
810 var body : some View {
9- if let nsImage = NSImage ( contentsOf : url) {
11+ if let nsImage = loader . image ( url : url) {
1012 Image ( nsImage: nsImage)
1113 . resizable ( )
1214 . scaledToFill ( )
1315 . clipped ( )
1416 . onDrag { dragItemProvider ( ) }
15- . onAppear {
16- markPerfMilestones ( )
17- }
17+ . onAppear { markPerfMilestones ( ) }
1818 } else {
1919 Color . black
2020 }
@@ -59,3 +59,17 @@ private func markPerfMilestones() {
5959 Perf . end ( . recordingRender, finalLabel: " video rendered " )
6060 Perf . end ( . appFirstSnapshot, finalLabel: " first media appeared " )
6161}
62+
63+ @MainActor
64+ final class ImageLoader : ObservableObject {
65+ private var image : NSImage ?
66+ private var url : URL ?
67+
68+ func image( url: URL ) -> NSImage ? {
69+ guard url != self . url else { return image }
70+ self . url = url
71+ let nsImage = NSImage ( contentsOf: url)
72+ image = nsImage
73+ return nsImage
74+ }
75+ }
You can’t perform that action at this time.
0 commit comments