Skip to content

Commit

Permalink
macOS: Fix deprecations in macOS 14.0
Browse files Browse the repository at this point in the history
  • Loading branch information
reuk committed Aug 9, 2023
1 parent a22e423 commit f0aacca
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
14 changes: 14 additions & 0 deletions modules/juce_gui_basics/native/juce_Windowing_mac.mm
Expand Up @@ -510,11 +510,25 @@ static Image createNSWindowSnapshot (NSWindow* nsWindow)
{
JUCE_AUTORELEASEPOOL
{
// CGWindowListCreateImage is replaced by functions in the ScreenCaptureKit framework, but
// that framework is only available from macOS 12.3 onwards.
// A suitable @available check should be added once the minimum build OS is 12.3 or greater,
// so that ScreenCaptureKit can be weak-linked.
#if defined (MAC_OS_VERSION_14_0) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_14_0
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations")
#define JUCE_DEPRECATION_IGNORED 1
#endif

CGImageRef screenShot = CGWindowListCreateImage (CGRectNull,
kCGWindowListOptionIncludingWindow,
(CGWindowID) [nsWindow windowNumber],
kCGWindowImageBoundsIgnoreFraming);

#if JUCE_DEPRECATION_IGNORED
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
#undef JUCE_DEPRECATION_IGNORED
#endif

NSBitmapImageRep* bitmapRep = [[NSBitmapImageRep alloc] initWithCGImage: screenShot];

Image result (Image::ARGB, (int) [bitmapRep size].width, (int) [bitmapRep size].height, true);
Expand Down
15 changes: 13 additions & 2 deletions modules/juce_video/native/juce_CameraDevice_mac.h
Expand Up @@ -146,8 +146,19 @@ struct CameraDevice::Pimpl
#if JUCE_USE_NEW_CAMERA_API
if (@available (macOS 10.15, *))
{
auto* discovery = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: @[AVCaptureDeviceTypeBuiltInWideAngleCamera,
AVCaptureDeviceTypeExternalUnknown]
const auto deviceType = [&]
{
#if defined (MAC_OS_VERSION_14_0) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_VERSION_14_0
if (@available (macOS 14.0, *))
return AVCaptureDeviceTypeExternal;
#endif

JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations", "-Wunguarded-availability-new")
return AVCaptureDeviceTypeExternalUnknown;
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
}();

auto* discovery = [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes: @[AVCaptureDeviceTypeBuiltInWideAngleCamera, deviceType]
mediaType: AVMediaTypeVideo
position: AVCaptureDevicePositionUnspecified];

Expand Down

0 comments on commit f0aacca

Please sign in to comment.