I'm writing a macOS audio unit hosting app using the AVAudioUnit
and AUAudioUnit
APIs. I'm trying to use the NSView cacheDisplay(in:to:)
function to capture an image of a plugin's view:
func viewToImage(veiwToCapture: NSView) -> NSImage? {
var image: NSImage? = nil
if let rep = veiwToCapture.bitmapImageRepForCachingDisplay(in: veiwToCapture.bounds) {
veiwToCapture.cacheDisplay(in: veiwToCapture.bounds, to: rep)
image = NSImage(size: veiwToCapture.bounds.size)
image!.addRepresentation(rep)
}
return image
}
}
This works ok when a plugin is instantiated using the .loadInProcess
option. If the plugin is instantiated using the .loadOutOfProcess
option the resulting bitmapImageRep
is blank.
I'd much rather be loading plugins out-of-process for the enhanced stability. Is there any trick I'm missing to be able to capture the contents of the NSView from an out-of-process audio unit?