diff --git a/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp index 944c175aac..950f922f97 100644 --- a/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_CoreAudioFormat.cpp @@ -26,7 +26,7 @@ #if JUCE_MAC || JUCE_IOS #include -#include +#include namespace juce { diff --git a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp index cb659ae9a9..4f5d51efd2 100644 --- a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp +++ b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp @@ -23,17 +23,16 @@ ============================================================================== */ +#include +#include + +//============================================================================== #if JucePlugin_Build_VST3 && (JUCE_MAC || JUCE_WINDOWS || JUCE_LINUX) -#include -#include - -#if JUCE_MAC - #include - #include -#endif - #if JUCE_PLUGINHOST_VST3 + #if JUCE_MAC + #include + #endif #undef JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY #define JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY 1 #endif @@ -80,6 +79,10 @@ std::vector>> getFdReadCallbacks(); #endif +#if JUCE_MAC + #include +#endif + namespace juce { diff --git a/modules/juce_core/juce_core.h b/modules/juce_core/juce_core.h index e81165710d..34708e114e 100644 --- a/modules/juce_core/juce_core.h +++ b/modules/juce_core/juce_core.h @@ -340,7 +340,7 @@ JUCE_END_IGNORE_WARNINGS_MSVC #include "memory/juce_AllocationHooks.h" #if JUCE_CORE_INCLUDE_OBJC_HELPERS && (JUCE_MAC || JUCE_IOS) - #include "native/juce_osx_ObjCHelpers.h" + #include "native/juce_mac_ObjCHelpers.h" #endif #if JUCE_CORE_INCLUDE_COM_SMART_PTR && JUCE_WINDOWS diff --git a/modules/juce_core/native/juce_mac_CFHelpers.h b/modules/juce_core/native/juce_mac_CFHelpers.h new file mode 100644 index 0000000000..f837912a01 --- /dev/null +++ b/modules/juce_core/native/juce_mac_CFHelpers.h @@ -0,0 +1,63 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2020 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + The code included in this file is provided under the terms of the ISC license + http://www.isc.org/downloads/software-support-policy/isc-license. Permission + To use, copy, modify, and/or distribute this software for any purpose with or + without fee is hereby granted provided that the above copyright notice and + this permission notice appear in all copies. + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +/* This file contains a few helper functions that are used internally but which + need to be kept away from the public headers because they use obj-C symbols. +*/ +namespace juce +{ + +template +struct CFObjectDeleter +{ + void operator() (CFType object) const noexcept + { + if (object != nullptr) + CFRelease (object); + } +}; + +template +using CFUniquePtr = std::unique_ptr::type, CFObjectDeleter>; + +template +struct CFObjectHolder +{ + CFObjectHolder() = default; + + CFObjectHolder (const CFObjectHolder&) = delete; + CFObjectHolder (CFObjectHolder&&) = delete; + + CFObjectHolder& operator= (const CFObjectHolder&) = delete; + CFObjectHolder& operator= (CFObjectHolder&&) = delete; + + ~CFObjectHolder() noexcept + { + if (object != nullptr) + CFRelease (object); + } + + // Public to facilitate passing the pointer address to functions + CFType object = nullptr; +}; + +} // namespace juce diff --git a/modules/juce_core/native/juce_osx_ObjCHelpers.h b/modules/juce_core/native/juce_mac_ObjCHelpers.h similarity index 90% rename from modules/juce_core/native/juce_osx_ObjCHelpers.h rename to modules/juce_core/native/juce_mac_ObjCHelpers.h index ac1386bbc6..3d2787918b 100644 --- a/modules/juce_core/native/juce_osx_ObjCHelpers.h +++ b/modules/juce_core/native/juce_mac_ObjCHelpers.h @@ -20,6 +20,8 @@ ============================================================================== */ +#include "juce_mac_CFHelpers.h" + /* This file contains a few helper functions that are used internally but which need to be kept away from the public headers because they use obj-C symbols. */ @@ -240,40 +242,6 @@ struct NSObjectDeleter template using NSUniquePtr = std::unique_ptr; -template -struct CFObjectDeleter -{ - void operator() (CFType object) const noexcept - { - if (object != nullptr) - CFRelease (object); - } -}; - -template -using CFUniquePtr = std::unique_ptr::type, CFObjectDeleter>; - -template -struct CFObjectHolder -{ - CFObjectHolder() = default; - - CFObjectHolder (const CFObjectHolder&) = delete; - CFObjectHolder (CFObjectHolder&&) = delete; - - CFObjectHolder& operator= (const CFObjectHolder&) = delete; - CFObjectHolder& operator= (CFObjectHolder&&) = delete; - - ~CFObjectHolder() noexcept - { - if (object != nullptr) - CFRelease (object); - } - - // Public to facilitate passing the pointer address to functions - CFType object = nullptr; -}; - //============================================================================== template struct ObjCClass