From 7ee43fb83799abb89a69cfcd4e2146dd4eaa5045 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Tue, 19 Sep 2023 22:58:44 +0200 Subject: Add multimonitor support --- Captura/Core Extensions/CVImageBuffer+cgImage.swift | 5 +++-- Captura/Core Extensions/NSScreen+screenWithMouse.swift | 13 +++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 Captura/Core Extensions/NSScreen+screenWithMouse.swift (limited to 'Captura/Core Extensions') diff --git a/Captura/Core Extensions/CVImageBuffer+cgImage.swift b/Captura/Core Extensions/CVImageBuffer+cgImage.swift index c30cb0c..f8958f2 100644 --- a/Captura/Core Extensions/CVImageBuffer+cgImage.swift +++ b/Captura/Core Extensions/CVImageBuffer+cgImage.swift @@ -3,9 +3,10 @@ import ReplayKit extension CVImageBuffer { + static let sharedContext = CIContext() + var cgImage: CGImage? { let ciImage = CIImage(cvImageBuffer: self) - let context = CIContext() - return context.createCGImage(ciImage, from: CGRect(x: 0, y: 0, width: CVPixelBufferGetWidth(self), height: CVPixelBufferGetHeight(self))) + return CVImageBuffer.sharedContext.createCGImage(ciImage, from: CGRect(x: 0, y: 0, width: CVPixelBufferGetWidth(self), height: CVPixelBufferGetHeight(self))) } } diff --git a/Captura/Core Extensions/NSScreen+screenWithMouse.swift b/Captura/Core Extensions/NSScreen+screenWithMouse.swift new file mode 100644 index 0000000..8c7f566 --- /dev/null +++ b/Captura/Core Extensions/NSScreen+screenWithMouse.swift @@ -0,0 +1,13 @@ +import Cocoa + +extension NSScreen { + static var screenWithMouse: NSScreen? { + let mouseLocation = NSEvent.mouseLocation + for screen in NSScreen.screens { + if NSMouseInRect(mouseLocation, screen.frame, false) { + return screen + } + } + return NSScreen.main + } +} -- cgit