@@ -14,6 +14,9 @@ class SentryViewPhotographer: NSObject, SentryViewScreenshotProvider {
1414
1515 var renderer : SentryViewRenderer
1616
17+ var onRenderScreenshot : ( ( UIImage ) -> UIImage ) ?
18+ var onMaskScreenshot : ( ( UIImage ) -> UIImage ) ?
19+
1720 /// Creates a view photographer used to convert a view hierarchy to an image.
1821 ///
1922 /// - Parameters:
@@ -39,13 +42,15 @@ class SentryViewPhotographer: NSObject, SentryViewScreenshotProvider {
3942 // The render method is synchronous and must be called on the main thread.
4043 // This is because the render method accesses the view hierarchy which is managed from the main thread.
4144 let renderedScreenshot = renderer. render ( view: view)
45+ let processedRenderedScreenshot = onRenderScreenshot ? ( renderedScreenshot) ?? renderedScreenshot
4246
43- dispatchQueue. dispatchAsync { [ maskRenderer] in
47+ dispatchQueue. dispatchAsync { [ maskRenderer, onMaskScreenshot ] in
4448 // The mask renderer does not need to be on the main thread.
4549 // Moving it to a background thread to avoid blocking the main thread, therefore reducing the performance
4650 // impact/lag of the user interface.
47- let maskedScreenshot = maskRenderer. maskScreenshot ( screenshot: renderedScreenshot, size: viewSize, masking: redact)
48- onComplete ( maskedScreenshot)
51+ let maskedScreenshot = maskRenderer. maskScreenshot ( screenshot: processedRenderedScreenshot, size: viewSize, masking: redact)
52+ let processedMaskedScreenshot = onMaskScreenshot ? ( maskedScreenshot) ?? maskedScreenshot
53+ onComplete ( processedMaskedScreenshot)
4954 }
5055 }
5156
0 commit comments