diff --git a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt index d5c5f03e1e..b71634eb4b 100644 --- a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt +++ b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt @@ -1866,7 +1866,6 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" "../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" "../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" - "../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" "../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" @@ -3804,7 +3803,6 @@ set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_l set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" PROPERTIES HEADER_FILE_ONLY TRUE) -set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) diff --git a/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj b/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj index 1b53c7bf00..bd5ff44b23 100644 --- a/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj +++ b/examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj @@ -36,7 +36,6 @@ 7B4163348896EB1B86B15160 /* AVFoundation.framework */ = {isa = PBXBuildFile; fileRef = DC192EFA899E6CBE6B5CD394; }; 8584640341100008744861A5 /* IOKit.framework */ = {isa = PBXBuildFile; fileRef = 71A91516AFD980FEE694C0E1; }; 89AD16514B1F4133FFEA1DF9 /* WebKit.framework */ = {isa = PBXBuildFile; fileRef = 96D99A08027CA35D6A4E5CFD; }; - 89BC6E2354102D975E08E918 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = 440D507FD8F31DB62B1F95C7; }; 8C0AEA08A71075A6C765AEC9 /* AVKit.framework */ = {isa = PBXBuildFile; fileRef = 3B99CF94C44E2EE04635A439; }; 91CD2BCE4CA07E18229EB436 /* RecentFilesMenuTemplate.nib */ = {isa = PBXBuildFile; fileRef = 9672FCE6167ADB567A9EB2F8; }; 9BEA1428416CE06BF72FBAB8 /* DiscRecording.framework */ = {isa = PBXBuildFile; fileRef = 3DC90DA86565B0356B6E5E0B; }; @@ -81,7 +80,6 @@ 3DC90DA86565B0356B6E5E0B /* DiscRecording.framework */ /* DiscRecording.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DiscRecording.framework; path = System/Library/Frameworks/DiscRecording.framework; sourceTree = SDKROOT; }; 3E4ED41C374261CFFD309743 /* include_juce_graphics.mm */ /* include_juce_graphics.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_graphics.mm; path = ../../JuceLibraryCode/include_juce_graphics.mm; sourceTree = SOURCE_ROOT; }; 40BD06D4AB0D2C73E936A2F1 /* OpenGL.framework */ /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; - 440D507FD8F31DB62B1F95C7 /* Carbon.framework */ /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; 470C3E4553B513FFEF752779 /* AudioToolbox.framework */ /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 491641F7632BCC81BBA0ED85 /* juce_audio_formats */ /* juce_audio_formats */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_audio_formats; path = ../../../../modules/juce_audio_formats; sourceTree = SOURCE_ROOT; }; 49ECA8B998B339A083674A22 /* Foundation.framework */ /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -148,7 +146,6 @@ 163B0CF2DD0990A63DF1D5A6, 7B4163348896EB1B86B15160, 8C0AEA08A71075A6C765AEC9, - 89BC6E2354102D975E08E918, 9F15FD7A7CE83CFD98F07D59, 1351A13E78F38741C6075600, 527DA2E6827BAFDDD3E8E80F, @@ -173,7 +170,6 @@ 470C3E4553B513FFEF752779, DC192EFA899E6CBE6B5CD394, 3B99CF94C44E2EE04635A439, - 440D507FD8F31DB62B1F95C7, 02A2ED58B066B4D119F67913, 4F0A137A4115946A346180E6, B4389672DA4CC8E0A531062D, diff --git a/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj index 4eca74e762..e3ed40af62 100644 --- a/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj @@ -3606,7 +3606,6 @@ - diff --git a/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters index d96da4118e..092b9959db 100644 --- a/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj.filters @@ -6288,9 +6288,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj index 4c0db94320..19fdd65e96 100644 --- a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj @@ -3606,7 +3606,6 @@ - diff --git a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters index fc46ae63c2..41909cda21 100644 --- a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters @@ -6288,9 +6288,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj index 1be400378e..0282632b73 100644 --- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj @@ -3606,7 +3606,6 @@ - diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters index b0bc598c4b..8567ca3155 100644 --- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters @@ -6288,9 +6288,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj index 220445272d..b02959adfe 100644 --- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj @@ -3606,7 +3606,6 @@ - diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters index 2884a6b909..0db406c794 100644 --- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters @@ -6288,9 +6288,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt index 5201325022..ba54cfec80 100644 --- a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt +++ b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt @@ -1643,7 +1643,6 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" "../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" "../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" - "../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" "../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" @@ -3279,7 +3278,6 @@ set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_l set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" PROPERTIES HEADER_FILE_ONLY TRUE) -set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) diff --git a/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj b/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj index 6e55f50d9f..0d38b08e17 100644 --- a/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj +++ b/extras/AudioPerformanceTest/Builds/MacOSX/AudioPerformanceTest.xcodeproj/project.pbxproj @@ -24,7 +24,6 @@ 7E870C094BAE67D7EB149F1C /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 248FAA119A4FC24C522165EF; }; 8A0F71A4EEC7FE694352DD94 /* Accelerate.framework */ = {isa = PBXBuildFile; fileRef = 9EADBF913B7A454B6BE93A4A; }; 9031C69145EE085B60904363 /* IOKit.framework */ = {isa = PBXBuildFile; fileRef = 43775DC3D9F7917846EA5327; }; - 9B19A6655FCC8086134C8656 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = 1DA5C6A474916745AFEC6DA5; }; 9D47995A33BBA693ED435B31 /* include_juce_gui_extra.mm */ = {isa = PBXBuildFile; fileRef = B06AE97C86D27E7FEBCB4631; }; C7B090C29D8DE4D2503204B1 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = BAFDA8DE51E7A69E477439EB; }; CC782AABFA20787BABBCED90 /* Foundation.framework */ = {isa = PBXBuildFile; fileRef = E1BB9D521BF6C055F5B88628; }; @@ -43,7 +42,6 @@ 12C680C68A15B9A590264B18 /* CoreMIDI.framework */ /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; }; 18C1CCE5684F9FA0478F27AD /* AudioToolbox.framework */ /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 18E39207A0F5F9B8BC7EE94F /* include_juce_audio_processors.mm */ /* include_juce_audio_processors.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_processors.mm; path = ../../JuceLibraryCode/include_juce_audio_processors.mm; sourceTree = SOURCE_ROOT; }; - 1DA5C6A474916745AFEC6DA5 /* Carbon.framework */ /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; 24425FFB0BCC7E54CADAA013 /* include_juce_core.mm */ /* include_juce_core.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_core.mm; path = ../../JuceLibraryCode/include_juce_core.mm; sourceTree = SOURCE_ROOT; }; 248FAA119A4FC24C522165EF /* include_juce_events.mm */ /* include_juce_events.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_events.mm; path = ../../JuceLibraryCode/include_juce_events.mm; sourceTree = SOURCE_ROOT; }; 24D90B40648CC05A9B1AA55B /* CoreAudioKit.framework */ /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; @@ -87,7 +85,6 @@ files = ( 8A0F71A4EEC7FE694352DD94, 30BE30F31D1AAED9FC893AA5, - 9B19A6655FCC8086134C8656, 0319B40AD2FD96007FFA928B, 5AFD011031C266431687C922, 71863EE98034AB7C3CBCAA81, @@ -108,7 +105,6 @@ children = ( 9EADBF913B7A454B6BE93A4A, 18C1CCE5684F9FA0478F27AD, - 1DA5C6A474916745AFEC6DA5, 453777CEB7099A5D61901D13, 9F28F179EF6B90EB9F4DBEE9, 24D90B40648CC05A9B1AA55B, diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj index d9cd8fc6d3..2bd3941749 100644 --- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj +++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj @@ -3105,7 +3105,6 @@ - diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters index 732f83d377..804e40d46c 100644 --- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters +++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters @@ -5403,9 +5403,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt index cde798552c..c278a6b890 100644 --- a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt +++ b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt @@ -1773,7 +1773,6 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" "../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" "../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" - "../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" "../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" @@ -3563,7 +3562,6 @@ set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_l set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" PROPERTIES HEADER_FILE_ONLY TRUE) -set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) diff --git a/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj b/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj index c14a3a46b7..151b4ac915 100644 --- a/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj +++ b/extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj @@ -14,7 +14,6 @@ 15CCE43D7DCFC649638919D4 /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 4C7D82F9274A4F9DBF11235C; }; 21D330A5B13178B12BEAFC3C /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = D4EBC17BDB7F88CCBC76730B; }; 2727A191DB1BAAC9C04B9081 /* include_juce_opengl.mm */ = {isa = PBXBuildFile; fileRef = 37E4D5C341406B7072120006; }; - 2B4B9CF71F94BDD1E3AC89AE /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = B0935EBBA4F6E2B05F3D1C0A; }; 2C3D221D2AA87F07B3F1044D /* include_juce_gui_basics.mm */ = {isa = PBXBuildFile; fileRef = 8FE7B37CDE0818DB27BDDEBD; }; 3E1689E23B9C85F03209DCEF /* GraphEditorPanel.cpp */ = {isa = PBXBuildFile; fileRef = 3D78A731234A833CA112AE45; }; 443244451A0F2064D4767337 /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 2A6983F82B13F9E8B10299AE; }; @@ -103,7 +102,6 @@ A66EFAC64B1B67B536C73415 /* HostStartup.cpp */ /* HostStartup.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = HostStartup.cpp; path = ../../Source/HostStartup.cpp; sourceTree = SOURCE_ROOT; }; A692426308435C2002F988FE /* proaudio.path */ /* proaudio.path */ = {isa = PBXFileReference; lastKnownFileType = file.path; name = proaudio.path; path = ../../../../examples/Assets/proaudio.path; sourceTree = SOURCE_ROOT; }; A872AF2CAFFC72109B9C6348 /* cassette_recorder.wav */ /* cassette_recorder.wav */ = {isa = PBXFileReference; lastKnownFileType = file.wav; name = cassette_recorder.wav; path = ../../../../examples/Assets/cassette_recorder.wav; sourceTree = SOURCE_ROOT; }; - B0935EBBA4F6E2B05F3D1C0A /* Carbon.framework */ /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; B285CAB91AE928C476CA4F9C /* include_juce_audio_utils.mm */ /* include_juce_audio_utils.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_audio_utils.mm; path = ../../JuceLibraryCode/include_juce_audio_utils.mm; sourceTree = SOURCE_ROOT; }; B2A1E626CC120982805754F6 /* JUCEAppIcon.png */ /* JUCEAppIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = JUCEAppIcon.png; path = ../../Source/JUCEAppIcon.png; sourceTree = SOURCE_ROOT; }; B457EE687507BF1DEEA7581F /* WebKit.framework */ /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; @@ -130,7 +128,6 @@ B288A89F96704F142ED8E939, 73E371F1B912FCCAE0CD7E5D, 21D330A5B13178B12BEAFC3C, - 2B4B9CF71F94BDD1E3AC89AE, AC3BED74AC7C6D9F5739F38B, E3CB85BA817BC9E3942A8AB0, 70580743C3D5695F065FF698, @@ -269,7 +266,6 @@ 5ACC21AA45BBF48C3C64D56D, 86CA337014D3F67E906FFD28, D4EBC17BDB7F88CCBC76730B, - B0935EBBA4F6E2B05F3D1C0A, 9794142D24966F93FFDE51A1, 9F9B445E6755CAA19E4344ED, E68018DE199135B7F738FB17, diff --git a/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj index da0c8f40ef..478b4e5417 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj @@ -3340,7 +3340,6 @@ - diff --git a/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters index a7512a68ad..11b7d381fb 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2015/AudioPluginHost_App.vcxproj.filters @@ -5838,9 +5838,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj index f1aae45228..4d5d448c28 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj @@ -3340,7 +3340,6 @@ - diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters index d897f689ca..78b43e5282 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters @@ -5838,9 +5838,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj index 20318fc96e..cb62b966f3 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj @@ -3340,7 +3340,6 @@ - diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters index 2ac10f615c..f01b06f6e0 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters @@ -5838,9 +5838,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj index c41e896d67..1e522b9252 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj @@ -3340,7 +3340,6 @@ - diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters index 9873e70fa1..d1fd27ded4 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters @@ -5838,9 +5838,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt index d0a9bc6ae5..2de17f64fc 100644 --- a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt +++ b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt @@ -1662,7 +1662,6 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" "../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" "../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" - "../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" "../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" "../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" @@ -3378,7 +3377,6 @@ set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_l set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_X11_WebBrowserComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_linux_XEmbedComponent.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_AppleRemote.mm" PROPERTIES HEADER_FILE_ONLY TRUE) -set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewComponent.mm" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_NSViewFrameWatcher.h" PROPERTIES HEADER_FILE_ONLY TRUE) set_source_files_properties("../../../../../modules/juce_gui_extra/native/juce_mac_PushNotifications.cpp" PROPERTIES HEADER_FILE_ONLY TRUE) diff --git a/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj b/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj index 41b3f82a88..d0f19ffb1a 100644 --- a/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj +++ b/extras/NetworkGraphicsDemo/Builds/MacOSX/NetworkGraphicsDemo.xcodeproj/project.pbxproj @@ -29,7 +29,6 @@ A1F34D09F4E4338775917ED1 /* include_juce_audio_formats.mm */ = {isa = PBXBuildFile; fileRef = C6E2284D86D93F1D9D5C7666; }; B323E5E5FBD5663B21A8E623 /* OpenGL.framework */ = {isa = PBXBuildFile; fileRef = 996E743A20FC78671766BF59; }; BB9A9692D99DD0DDB1047B60 /* include_juce_audio_basics.mm */ = {isa = PBXBuildFile; fileRef = 6D1F9E505D20C09647124F0A; }; - BED88ADEA4DC91AA8C810FA8 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = 398A945EFD9ED923162982B1; }; C4D6C466C41173D6970553D2 /* AudioToolbox.framework */ = {isa = PBXBuildFile; fileRef = 9E8129263CD42C6029FC2CAD; }; C5E7BAD864E02CF37F7BD707 /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 33AA348465F512DBA8778DAF; }; C6348C6B1D0312580E97EA19 /* include_juce_osc.cpp */ = {isa = PBXBuildFile; fileRef = 3BF06B70407FFDBE9534F942; }; @@ -50,7 +49,6 @@ 25DEDA8C9F94A6C8DFC8E53E /* SharedCanvas.h */ /* SharedCanvas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SharedCanvas.h; path = ../../Source/SharedCanvas.h; sourceTree = SOURCE_ROOT; }; 2E13A899F4E3C99054A3656F /* Accelerate.framework */ /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; }; 33AA348465F512DBA8778DAF /* include_juce_events.mm */ /* include_juce_events.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_events.mm; path = ../../JuceLibraryCode/include_juce_events.mm; sourceTree = SOURCE_ROOT; }; - 398A945EFD9ED923162982B1 /* Carbon.framework */ /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; 3BF06B70407FFDBE9534F942 /* include_juce_osc.cpp */ /* include_juce_osc.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = include_juce_osc.cpp; path = ../../JuceLibraryCode/include_juce_osc.cpp; sourceTree = SOURCE_ROOT; }; 448838BE6E937D450A3C84CE /* CoreMIDI.framework */ /* CoreMIDI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMIDI.framework; path = System/Library/Frameworks/CoreMIDI.framework; sourceTree = SDKROOT; }; 4D1DB6D77B6F3DE7A569780B /* CoreAudioKit.framework */ /* CoreAudioKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudioKit.framework; path = System/Library/Frameworks/CoreAudioKit.framework; sourceTree = SDKROOT; }; @@ -107,7 +105,6 @@ files = ( 80EE2C27B466BAFD83881D3F, C4D6C466C41173D6970553D2, - BED88ADEA4DC91AA8C810FA8, 3C30D7C28C86F4054257DCD5, 67DF295E93E54432043126DF, 770AB74B1D3A0108F764DD47, @@ -151,7 +148,6 @@ children = ( 2E13A899F4E3C99054A3656F, 9E8129263CD42C6029FC2CAD, - 398A945EFD9ED923162982B1, C78806A6727F44EACFDED4A5, 6799B056504F9F017998B9E2, 4D1DB6D77B6F3DE7A569780B, diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj index f7274b2353..2cdd187edf 100644 --- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj +++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj @@ -3203,7 +3203,6 @@ - diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters index 472daf4dd6..eb4361bc0e 100644 --- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters +++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters @@ -5565,9 +5565,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj b/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj index 1b71747456..d003934b01 100644 --- a/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj +++ b/extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj @@ -17,7 +17,6 @@ 11D42F7EC6E6539D79A7F4B1 /* QuartzCore.framework */ = {isa = PBXBuildFile; fileRef = E5D6C36496F5BC84D7213BE8; }; 1321E6C1C6170B6C898AD09D /* Icon.icns */ = {isa = PBXBuildFile; fileRef = 951128CA33CCDEF570436B1C; }; 1B988E139004D8E2850EB656 /* jucer_PaintRoutine.cpp */ = {isa = PBXBuildFile; fileRef = C187718F7B9EBA88584B43F3; }; - 1E76E36772355E2A43CF4961 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = D00F311BFC3C2625C457CB9B; }; 209FCCC2155A1FCB7E11E20D /* jucer_JucerDocument.cpp */ = {isa = PBXBuildFile; fileRef = 269A454F1FF081DA67FFD578; }; 234B6BA2952CBC7C61EF70EF /* include_juce_events.mm */ = {isa = PBXBuildFile; fileRef = 5867DC4E39DF8539B54C0D59; }; 241F29FCBB7A17BB44A0B10C /* Cocoa.framework */ = {isa = PBXBuildFile; fileRef = D1F9B0E9F5D54FE48BEB46EA; }; @@ -314,7 +313,6 @@ CCD62DB0A19A985A4B9D7F32 /* jucer_ProjectExport_Android.h */ /* jucer_ProjectExport_Android.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_ProjectExport_Android.h; path = ../../Source/ProjectSaving/jucer_ProjectExport_Android.h; sourceTree = SOURCE_ROOT; }; CD267A28C16C4E79EB749005 /* gpl_logo.svg */ /* gpl_logo.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = gpl_logo.svg; path = ../../Source/BinaryData/Icons/gpl_logo.svg; sourceTree = SOURCE_ROOT; }; CF6C8BD0DA3D8CD4E99EBADA /* WebKit.framework */ /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; - D00F311BFC3C2625C457CB9B /* Carbon.framework */ /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; D045BD5943BD38F2720FF5F0 /* jucer_FontPropertyComponent.h */ /* jucer_FontPropertyComponent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jucer_FontPropertyComponent.h; path = ../../Source/ComponentEditor/Properties/jucer_FontPropertyComponent.h; sourceTree = SOURCE_ROOT; }; D05BD91B6105827B010E1C20 /* juce_gui_extra */ /* juce_gui_extra */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_gui_extra; path = ../../../../modules/juce_gui_extra; sourceTree = SOURCE_ROOT; }; D1739728A79A2062418B8EF0 /* wizard_StaticLibrary.svg */ /* wizard_StaticLibrary.svg */ = {isa = PBXFileReference; lastKnownFileType = file.svg; name = wizard_StaticLibrary.svg; path = ../../Source/BinaryData/Icons/wizard_StaticLibrary.svg; sourceTree = SOURCE_ROOT; }; @@ -390,7 +388,6 @@ A578EAD4BB55680E8097BE0F, C1B9334AE849F93FB3C56B34, A14C2C2725DA3CA7995D2815, - 1E76E36772355E2A43CF4961, 241F29FCBB7A17BB44A0B10C, 9359F9401D59B4517F75C39C, 091A57B4B9CE623E75E9A756, @@ -442,7 +439,6 @@ 80D62B907248523E6943298B, 5A75806B34E4EA6598A6024A, 210CD22F25F2C22F9CEEB025, - D00F311BFC3C2625C457CB9B, D1F9B0E9F5D54FE48BEB46EA, 728FE25157E9874D50BBECB2, E983E6DDE3318B872EBE347F, diff --git a/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj index ba88364648..3a571ed2f5 100644 --- a/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj @@ -2136,7 +2136,6 @@ - diff --git a/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters index d5f0a1bc4a..357d27d0c1 100644 --- a/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj.filters @@ -3759,9 +3759,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj index a2df1940ee..f5409fcd7f 100644 --- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj @@ -2136,7 +2136,6 @@ - diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters index 3db0598689..b7a61c47a1 100644 --- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters @@ -3759,9 +3759,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj index 4bfcc019cb..9d14dd96bd 100644 --- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj @@ -2136,7 +2136,6 @@ - diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters index 3a6b70316d..9696b57ba3 100644 --- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters @@ -3759,9 +3759,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj index c68d16d02c..3259f8cc02 100644 --- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj @@ -2136,7 +2136,6 @@ - diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters index 154e88be0d..8edf98299d 100644 --- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters @@ -3759,9 +3759,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp index 36641d0716..251040d54b 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp @@ -389,7 +389,7 @@ void ProjectExporter::addCommonAudioPluginSettings() { if (shouldBuildTargetType (build_tools::ProjectType::Target::AAXPlugIn)) addAAXFoldersToPath(); - } +} void ProjectExporter::addLegacyVSTFolderToPathIfSpecified() { diff --git a/extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj b/extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj index 5c1e4e31cf..7f97f9a408 100644 --- a/extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj +++ b/extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj @@ -19,7 +19,6 @@ 3822F598DA7044E5DB7633A9 /* include_juce_audio_utils.mm */ = {isa = PBXBuildFile; fileRef = 846E187EC2E797B982861CA4; }; 3866839F4051D104244870B1 /* CoreAudioKit.framework */ = {isa = PBXBuildFile; fileRef = 336A244E3C6460495F0A424C; }; 4BC57B0D2215621D90C8881C /* WebKit.framework */ = {isa = PBXBuildFile; fileRef = D2EBC6292AE5AFC46EB10DAC; }; - 59004CE43AE081B4A6CE9E17 /* Carbon.framework */ = {isa = PBXBuildFile; fileRef = 1932D54A7FAE13BADBA3E9B5; }; 5CB3596030B0DD3763CAF85C /* include_juce_data_structures.mm */ = {isa = PBXBuildFile; fileRef = 302A999B2803C0D5C15D237C; }; 5FE50792EDC7638DE9A824B5 /* RecentFilesMenuTemplate.nib */ = {isa = PBXBuildFile; fileRef = 5C7BDD8DF72F2FC2D44D757A; }; 66FC7F44EEC9044E5C4A21C3 /* CoreAudio.framework */ = {isa = PBXBuildFile; fileRef = C0531453A002C480280C5F05; }; @@ -54,7 +53,6 @@ 080EAB9CF5AB2BD6B2BBB173 /* ConsoleApp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = UnitTestRunner; sourceTree = BUILT_PRODUCTS_DIR; }; 08ED235CBE02E0FB4BE4653E /* include_juce_cryptography.mm */ /* include_juce_cryptography.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_cryptography.mm; path = ../../JuceLibraryCode/include_juce_cryptography.mm; sourceTree = SOURCE_ROOT; }; 1088318C19CEB1861C58B3BA /* include_juce_video.mm */ /* include_juce_video.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_video.mm; path = ../../JuceLibraryCode/include_juce_video.mm; sourceTree = SOURCE_ROOT; }; - 1932D54A7FAE13BADBA3E9B5 /* Carbon.framework */ /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; 1CA82C74AEC08421812BDCAC /* include_juce_opengl.mm */ /* include_juce_opengl.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = include_juce_opengl.mm; path = ../../JuceLibraryCode/include_juce_opengl.mm; sourceTree = SOURCE_ROOT; }; 1DC921E6494548F5E73E1056 /* juce_graphics */ /* juce_graphics */ = {isa = PBXFileReference; lastKnownFileType = folder; name = juce_graphics; path = ../../../../modules/juce_graphics; sourceTree = SOURCE_ROOT; }; 2030A589A9355FE6A0F72428 /* Cocoa.framework */ /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; @@ -116,7 +114,6 @@ 96EFF7BA261F57DD829324D8, 6EB1A3B818863EF1787A9CCE, D82BA4D40F5686DAFF5E11FB, - 59004CE43AE081B4A6CE9E17, AA207299991F85938465BF65, 66FC7F44EEC9044E5C4A21C3, 3866839F4051D104244870B1, @@ -141,7 +138,6 @@ 7898C73DCA6FA9D9CF669D32, 4B427AF10E722F9A362CEB73, 99527F36B4484133087435CD, - 1932D54A7FAE13BADBA3E9B5, 2030A589A9355FE6A0F72428, C0531453A002C480280C5F05, 336A244E3C6460495F0A424C, diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj index 135a1d0fa8..bb994d062b 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj @@ -3408,7 +3408,6 @@ - diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters index 0bd431d93e..94b20f9151 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -5934,9 +5934,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj index c297f398d9..46728cebae 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj @@ -3408,7 +3408,6 @@ - diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters index ed815dcaae..441d0dcaa0 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -5934,9 +5934,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj index ed202f9bd6..b61c0b2b6a 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj @@ -3408,7 +3408,6 @@ - diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters index c1e12f0ba3..5c0d2eff20 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -5934,9 +5934,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj index 4ffe980b35..c294584879 100644 --- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj +++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj @@ -3179,7 +3179,6 @@ - diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters index 8e074616e7..3434ca1387 100644 --- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters +++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters @@ -5532,9 +5532,6 @@ JUCE Modules\juce_gui_extra\misc - - JUCE Modules\juce_gui_extra\native - JUCE Modules\juce_gui_extra\native diff --git a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewBase.cpp b/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewBase.cpp deleted file mode 100644 index 4b9525b1bf..0000000000 --- a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewBase.cpp +++ /dev/null @@ -1,403 +0,0 @@ -/* - File: AUCarbonViewBase.cpp - Abstract: AUCarbonViewBase.h - Version: 1.1 - - Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple - Inc. ("Apple") in consideration of your agreement to the following - terms, and your use, installation, modification or redistribution of - this Apple software constitutes acceptance of these terms. If you do - not agree with these terms, please do not use, install, modify or - redistribute this Apple software. - - In consideration of your agreement to abide by the following terms, and - subject to these terms, Apple grants you a personal, non-exclusive - license, under Apple's copyrights in this original Apple software (the - "Apple Software"), to use, reproduce, modify and redistribute the Apple - Software, with or without modifications, in source and/or binary forms; - provided that if you redistribute the Apple Software in its entirety and - without modifications, you must retain this notice and the following - text and disclaimers in all such redistributions of the Apple Software. - Neither the name, trademarks, service marks or logos of Apple Inc. may - be used to endorse or promote products derived from the Apple Software - without specific prior written permission from Apple. Except as - expressly stated in this notice, no other rights or licenses, express or - implied, are granted by Apple herein, including but not limited to any - patent rights that may be infringed by your derivative works or by other - works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. APPLE - MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION - THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND - OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, - MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED - AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), - STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - Copyright (C) 2014 Apple Inc. All Rights Reserved. - -*/ -#include "AUCarbonViewBase.h" -#include "AUCarbonViewControl.h" -#include - -AUCarbonViewBase::AUCarbonViewBase(AudioUnitCarbonView inInstance, Float32 inNotificationInterval /* in seconds */) : - ComponentBase(inInstance), - mEditAudioUnit(0), - mParameterListener(NULL), -#if !__LP64__ - mEventListener(NULL), -#endif - mTimerRef (NULL), - mTimerUPP (NULL), - mCarbonWindow(NULL), - mCarbonPane(NULL), - mXOffset(0), - mYOffset(0) -{ - AUEventListenerCreate (ParameterListener, this, - CFRunLoopGetCurrent(), kCFRunLoopCommonModes, - inNotificationInterval, inNotificationInterval, - &mParameterListener); -} - -AUCarbonViewBase::~AUCarbonViewBase() -{ -#if !__LP64__ - if (mCarbonPane) - DisposeControl(mCarbonPane); - - for (ControlList::iterator it = mControlList.begin(); it != mControlList.end(); ++it) { - AUCarbonViewControl *ctl = *it; - delete ctl; - } - AUListenerDispose(mParameterListener); - - if (mTimerRef) - ::RemoveEventLoopTimer (mTimerRef); - - if (mTimerUPP) - DisposeEventLoopTimerUPP (mTimerUPP); -#endif -} - -void AUCarbonViewBase::AddControl(AUCarbonViewControl *control) -{ - ControlList::iterator it = find(mControlList.begin(), mControlList.end(), control); - if (it == mControlList.end()) - mControlList.push_back(control); -} - -void AUCarbonViewBase::RemoveControl(AUCarbonViewControl *control) -{ - ControlList::iterator it = find(mControlList.begin(), mControlList.end(), control); - if (it != mControlList.end()) { - AUCarbonViewControl *ctl = *it; - mControlList.erase(it); - delete ctl; - } -} - -void AUCarbonViewBase::ClearControls () -{ - for (ControlList::iterator it = mControlList.begin(); it != mControlList.end(); ++it) { - AUCarbonViewControl *ctl = *it; - delete ctl; - } - mControlList.clear(); -} - -void AUCarbonViewBase::ParameterListener(void * inCallbackRefCon, - void * inObject, - const AudioUnitEvent * inEvent, - UInt64 inEventHostTime, - Float32 inParameterValue) -{ - if (inEvent->mEventType == kAudioUnitEvent_ParameterValueChange) { - AUCarbonViewControl *ctl = (AUCarbonViewControl *)inObject; - ctl->ParameterToControl(inParameterValue); - } -} - - -OSStatus AUCarbonViewBase::CreateCarbonView(AudioUnit inAudioUnit, WindowRef inWindow, ControlRef inParentControl, const Float32Point &inLocation, const Float32Point &inSize, ControlRef &outParentControl) -{ -#if !__LP64__ - mEditAudioUnit = inAudioUnit; - mCarbonWindow = inWindow; - - WindowAttributes attributes; - verify_noerr(GetWindowAttributes(mCarbonWindow, &attributes)); - mCompositWindow = (attributes & kWindowCompositingAttribute) != 0; - - Rect area; - area.left = short(inLocation.x); area.top = short(inLocation.y); - area.right = short(area.left + inSize.x); area.bottom = short(area.top + inSize.y); - OSStatus err = ::CreateUserPaneControl(inWindow, &area, - kControlSupportsEmbedding, - &mCarbonPane); // subclass can resize mCarbonPane to taste - verify_noerr(err); - if (err) return err; - outParentControl = mCarbonPane; - - // register for mouse-down in our pane -- we want to clear focus - EventTypeSpec paneEvents[] = { - { kEventClassControl, kEventControlClick } - }; - WantEventTypes(GetControlEventTarget(mCarbonPane), GetEventTypeCount(paneEvents), paneEvents); - - if (IsCompositWindow()) { - verify_noerr(::HIViewAddSubview(inParentControl, mCarbonPane)); - mXOffset = 0; - mYOffset = 0; - } - else { - verify_noerr(::EmbedControl(mCarbonPane, inParentControl)); - mXOffset = inLocation.x; - mYOffset = inLocation.y; - } - mBottomRight.h = mBottomRight.v = 0; - - SizeControl(mCarbonPane, 0, 0); - if (err = CreateUI(mXOffset, mYOffset)) - return err; - - // we should only resize the control if a subclass has embedded - // controls in this AND this is done with the EmbedControl call below - // if mBottomRight is STILL equal to zero, then that wasn't done - // so don't size the control - Rect paneBounds; - GetControlBounds(mCarbonPane, &paneBounds); - // only resize mCarbonPane if it has not already been resized during CreateUI - if ((paneBounds.top == paneBounds.bottom) && (paneBounds.left == paneBounds.right)) { - if (mBottomRight.h != 0 && mBottomRight.v != 0) - SizeControl(mCarbonPane, (short) (mBottomRight.h - mXOffset), (short) (mBottomRight.v - mYOffset)); - } - - if (IsCompositWindow()) { - // prepare for handling scroll-events - EventTypeSpec scrollEvents[] = { - { kEventClassScrollable, kEventScrollableGetInfo }, - { kEventClassScrollable, kEventScrollableScrollTo } - }; - - WantEventTypes(GetControlEventTarget(mCarbonPane), GetEventTypeCount(scrollEvents), scrollEvents); - - mCurrentScrollPoint.x = mCurrentScrollPoint.y = 0.0f; - } - - return err; -#else - return noErr; -#endif -} - -OSStatus AUCarbonViewBase::CreateUI(Float32 inXOffset, Float32 inYOffset) -{ - return noErr; -} - -OSStatus AUCarbonViewBase::EmbedControl(ControlRef ctl) -{ -#if !__LP64__ - Rect r; - ::GetControlBounds(ctl, &r); - if (r.right > mBottomRight.h) mBottomRight.h = r.right; - if (r.bottom > mBottomRight.v) mBottomRight.v = r.bottom; - - if (IsCompositWindow()) - return ::HIViewAddSubview(mCarbonPane, ctl); - else - return ::EmbedControl(ctl, mCarbonPane); -#else - return noErr; -#endif -} - -void AUCarbonViewBase::AddCarbonControl(AUCarbonViewControl::ControlType type, const CAAUParameter ¶m, ControlRef control) -{ - verify_noerr(EmbedControl(control)); - - AUCarbonViewControl *auvc = new AUCarbonViewControl(this, mParameterListener, type, param, control); - auvc->Bind(); - AddControl(auvc); -} - -bool AUCarbonViewBase::HandleEvent(EventHandlerCallRef inHandlerRef, EventRef event) -{ -#if !__LP64__ - UInt32 eclass = GetEventClass(event); - UInt32 ekind = GetEventKind(event); - ControlRef control; - - switch (eclass) { - case kEventClassControl: - { - switch (ekind) { - case kEventControlClick: - GetEventParameter(event, kEventParamDirectObject, typeControlRef, NULL, sizeof(ControlRef), NULL, &control); - if (control == mCarbonPane) { - ClearKeyboardFocus(mCarbonWindow); - return true; - } - } - } - break; - - case kEventClassScrollable: - { - switch (ekind) { - case kEventScrollableGetInfo: - { - // [1/4] - /* <-- kEventParamImageSize (out, typeHISize) - * On exit, contains the size of the entire scrollable view. - */ - HISize originalSize = { static_cast(mBottomRight.h), static_cast(mBottomRight.v) }; - verify_noerr(SetEventParameter(event, kEventParamImageSize, typeHISize, sizeof(HISize), &originalSize)); - - // [2/4] - /* <-- kEventParamViewSize (out, typeHISize) - * On exit, contains the amount of the scrollable view that is - * visible. - */ - HIViewRef parentView = HIViewGetSuperview(mCarbonPane); - HIRect parentBounds; - verify_noerr(HIViewGetBounds(parentView, &parentBounds)); - //HISize windowSize = { float(windowBounds.right - windowBounds.left), - // float(windowBounds.bottom - windowBounds.top) }; - verify_noerr(SetEventParameter(event, kEventParamViewSize, typeHISize, sizeof(HISize), &(parentBounds.size))); - - // [3/4] - /* <-- kEventParamLineSize (out, typeHISize) - * On exit, contains the amount that should be scrolled in - * response to a single click on a scrollbar arrow. - */ - HISize scrollIncrementSize = { 16.0f, float(20) }; - verify_noerr(SetEventParameter(event, kEventParamLineSize, typeHISize, sizeof(HISize), &scrollIncrementSize)); - - // [4/4] - /* <-- kEventParamOrigin (out, typeHIPoint) - * On exit, contains the scrollable viewÕs current origin (the - * view-relative coordinate that is drawn at the top left - * corner of its frame). These coordinates should always be - * greater than or equal to zero. They should be less than or - * equal to the viewÕs image size minus its view size. - */ - verify_noerr(SetEventParameter(event, kEventParamOrigin, typeHIPoint, sizeof(HIPoint), &mCurrentScrollPoint)); - } - return true; - - case kEventScrollableScrollTo: - { - /* - * kEventClassScrollable / kEventScrollableScrollTo - * - * Summary: - * Requests that an HIScrollViewÕs scrollable view should scroll to - * a particular origin. - */ - - /* --> kEventParamOrigin (in, typeHIPoint) - * The new origin for the scrollable view. The origin - * coordinates will vary from (0,0) to scrollable viewÕs image - * size minus its view size. - */ - HIPoint pointToScrollTo; - verify_noerr(GetEventParameter(event, kEventParamOrigin, typeHIPoint, NULL, sizeof(HIPoint), NULL, &pointToScrollTo)); - - float xDelta = mCurrentScrollPoint.x - pointToScrollTo.x; - float yDelta = mCurrentScrollPoint.y - pointToScrollTo.y; - // move visible portion the appropriate amount - verify_noerr(HIViewScrollRect(mCarbonPane, NULL, xDelta, yDelta)); - // set new content to be drawn - verify_noerr(HIViewSetBoundsOrigin(mCarbonPane, pointToScrollTo.x, pointToScrollTo.y)); - - mCurrentScrollPoint = pointToScrollTo; - } - return true; - - default: - break; - } - } - break; - - default: - break; - } -#endif - return false; -} - -/*! @method TellListener */ -void AUCarbonViewBase::TellListener (const CAAUParameter &auvp, AudioUnitCarbonViewEventID event, void *evpar) -{ -#if !__LP64__ - if (mEventListener) - (*mEventListener)(mEventListenerUserData, mComponentInstance, &auvp, event, evpar); -#endif - - AudioUnitEvent auEvent; - auEvent.mArgument.mParameter = auvp; - if (event == kAudioUnitCarbonViewEvent_MouseDownInControl) { - auEvent.mEventType = kAudioUnitEvent_BeginParameterChangeGesture; - } else { - auEvent.mEventType = kAudioUnitEvent_EndParameterChangeGesture; - } - AUEventListenerNotify(mParameterListener, this, &auEvent); -} - - -void AUCarbonViewBase::Update (bool inUIThread) -{ - for (ControlList::iterator iter = mControlList.begin(); iter != mControlList.end(); ++iter) - { - (*iter)->Update(inUIThread); - } -} - -pascal void AUCarbonViewBase::TheTimerProc (EventLoopTimerRef inTimer, void *inUserData) -{ - AUCarbonViewBase* This = reinterpret_cast(inUserData); - This->RespondToEventTimer (inTimer); -} - -void AUCarbonViewBase::RespondToEventTimer (EventLoopTimerRef inTimer) -{} - -/* - THESE are reasonable values for these two times - 0.005 // delay - 0.050 // interval -*/ - -OSStatus AUCarbonViewBase::CreateEventLoopTimer (Float32 inDelay, Float32 inInterval) -{ - if (mTimerUPP) - return noErr; - - mTimerUPP = NewEventLoopTimerUPP(TheTimerProc); - - EventLoopRef mainEventLoop = GetMainEventLoop(); - - //doesn't seem to like too small a value - if (inDelay < 0.005) - inDelay = 0.005; - - OSStatus timerResult = ::InstallEventLoopTimer( - mainEventLoop, - inDelay, - inInterval, - mTimerUPP, - this, - &mTimerRef); - return timerResult; -} diff --git a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewBase.h b/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewBase.h deleted file mode 100644 index 53fb353bbc..0000000000 --- a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewBase.h +++ /dev/null @@ -1,190 +0,0 @@ -/* - File: AUCarbonViewBase.h - Abstract: Part of CoreAudio Utility Classes - Version: 1.1 - - Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple - Inc. ("Apple") in consideration of your agreement to the following - terms, and your use, installation, modification or redistribution of - this Apple software constitutes acceptance of these terms. If you do - not agree with these terms, please do not use, install, modify or - redistribute this Apple software. - - In consideration of your agreement to abide by the following terms, and - subject to these terms, Apple grants you a personal, non-exclusive - license, under Apple's copyrights in this original Apple software (the - "Apple Software"), to use, reproduce, modify and redistribute the Apple - Software, with or without modifications, in source and/or binary forms; - provided that if you redistribute the Apple Software in its entirety and - without modifications, you must retain this notice and the following - text and disclaimers in all such redistributions of the Apple Software. - Neither the name, trademarks, service marks or logos of Apple Inc. may - be used to endorse or promote products derived from the Apple Software - without specific prior written permission from Apple. Except as - expressly stated in this notice, no other rights or licenses, express or - implied, are granted by Apple herein, including but not limited to any - patent rights that may be infringed by your derivative works or by other - works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. APPLE - MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION - THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND - OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, - MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED - AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), - STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - Copyright (C) 2014 Apple Inc. All Rights Reserved. - -*/ -#ifndef __AUCarbonViewBase_h__ -#define __AUCarbonViewBase_h__ - -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - -#include -#include "AUCarbonViewControl.h" -#include "ComponentBase.h" - -static const Float32 kDefaultNotificationInterval = 0.100; - - /*! @class AUCarbonViewBase */ -class AUCarbonViewBase : public ComponentBase, public CarbonEventHandler -{ -public: - /*! @ctor AUCarbonViewBase */ - AUCarbonViewBase ( AudioUnitCarbonView inInstance, - Float32 inNotificationInterval = kDefaultNotificationInterval /* in seconds */); - /*! @dtor ~AUCarbonViewBase */ - virtual ~AUCarbonViewBase(); - - // AUViewBase overrides - /*! @method CreateCarbonView */ - virtual OSStatus CreateCarbonView (AudioUnit inAudioUnit, WindowRef inWindow, ControlRef inParentControl, const Float32Point &inLocation, const Float32Point &inSize, ControlRef &outParentControl); - - // our own virtual methods - /*! @method CreateUI */ - virtual OSStatus CreateUI (Float32 inXOffset, Float32 inYOffset); - - /*! @method HandleEvent */ - virtual bool HandleEvent (EventHandlerCallRef inHandlerRef, EventRef event); - - /*! @method GetEditAudioUnit */ - const AudioUnit GetEditAudioUnit () const { return mEditAudioUnit; } - // - /*! @method ComponentEntryDispatch */ - static OSStatus ComponentEntryDispatch ( - ComponentParameters * params, - AUCarbonViewBase * This); - - /*! @method AddCarbonControl */ - void AddCarbonControl ( - AUCarbonViewControl::ControlType type, - const CAAUParameter & param, - ControlRef control); - - /*! @method GetCarbonWindow */ - WindowRef GetCarbonWindow () { return mCarbonWindow; } - /*! @method GetCarbonPane */ - ControlRef GetCarbonPane () { return mCarbonPane; } - /*! @method EmbedControl */ - OSStatus EmbedControl (ControlRef ctl); - - /*! @method TellListener */ - void TellListener (const CAAUParameter &auvp, AudioUnitCarbonViewEventID event, void *evpar); - - // pass in true if wanting an update to the view and you're calling this from a thread - // that is safe to do UI in. - // If you don't know, pass in false! - /*! @method Update */ - void Update (bool inUIThread); - - /*! @method GetXOffset */ - Float32 GetXOffset () { return mXOffset; } - /*! @method GetYOffset */ - Float32 GetYOffset () { return mYOffset; } - - /*! @method ClearControls */ - void ClearControls (); - - /*! @method IsCompositWindow */ - bool IsCompositWindow () const { return mCompositWindow; } - -protected: -#if !__LP64__ - /*! @method SetEventListener */ - void SetEventListener (AudioUnitCarbonViewEventListener listener, void *userData) - { - mEventListener = listener; - mEventListenerUserData = userData; - } -#endif - - /*! @method AddControl */ - void AddControl (AUCarbonViewControl *control); - /*! @method RemoveControl */ - void RemoveControl (AUCarbonViewControl *control); - - OSStatus CreateEventLoopTimer (Float32 inDelay, Float32 inInterval); - - /*! @method ParameterListener */ - static void ParameterListener (void * inCallbackRefCon, - void * inObject, - const AudioUnitEvent * inEvent, - UInt64 inEventHostTime, - Float32 inParameterValue); - - static pascal void TheTimerProc ( EventLoopTimerRef inTimer, - void * inUserData); - - virtual void RespondToEventTimer (EventLoopTimerRef inTimer); - - /*! @var mEditAudioUnit */ - AudioUnit mEditAudioUnit; // the AU we're controlling - /*! @var mParameterListener */ - AUEventListenerRef mParameterListener; - -#if !__LP64__ - /*! @var mEventListener */ - AudioUnitCarbonViewEventListener - mEventListener; -#endif - - /*! @var mEventListenerUserData */ - void * mEventListenerUserData; - -private: - typedef std::vector ControlList; - /*! @var mControlList */ - ControlList mControlList; - - EventLoopTimerRef mTimerRef; - - EventLoopTimerUPP mTimerUPP; - -protected: - /*! @var mCarbonWindow */ - WindowRef mCarbonWindow; - /*! @var mCarbonPane */ - ControlRef mCarbonPane; // user pane, contains all other controls - /*! @var mBottomRight */ - Point mBottomRight; // largest width and height of child controls - /*! @var mXOffset */ - Float32 mXOffset; - /*! @var mYOffset */ - Float32 mYOffset; - /*! @var mCompositWindow */ - bool mCompositWindow; - /*! @var mCurrentScrollPoint */ - HIPoint mCurrentScrollPoint; // needed for scrolling -}; - - -#endif // __AUCarbonViewBase_h__ diff --git a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewControl.cpp b/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewControl.cpp deleted file mode 100644 index 391eaf40a7..0000000000 --- a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewControl.cpp +++ /dev/null @@ -1,710 +0,0 @@ -/* - File: AUCarbonViewControl.cpp - Abstract: AUCarbonViewControl.h - Version: 1.1 - - Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple - Inc. ("Apple") in consideration of your agreement to the following - terms, and your use, installation, modification or redistribution of - this Apple software constitutes acceptance of these terms. If you do - not agree with these terms, please do not use, install, modify or - redistribute this Apple software. - - In consideration of your agreement to abide by the following terms, and - subject to these terms, Apple grants you a personal, non-exclusive - license, under Apple's copyrights in this original Apple software (the - "Apple Software"), to use, reproduce, modify and redistribute the Apple - Software, with or without modifications, in source and/or binary forms; - provided that if you redistribute the Apple Software in its entirety and - without modifications, you must retain this notice and the following - text and disclaimers in all such redistributions of the Apple Software. - Neither the name, trademarks, service marks or logos of Apple Inc. may - be used to endorse or promote products derived from the Apple Software - without specific prior written permission from Apple. Except as - expressly stated in this notice, no other rights or licenses, express or - implied, are granted by Apple herein, including but not limited to any - patent rights that may be infringed by your derivative works or by other - works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. APPLE - MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION - THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND - OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, - MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED - AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), - STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - Copyright (C) 2014 Apple Inc. All Rights Reserved. - -*/ -#include "AUCarbonViewControl.h" -#include "AUCarbonViewBase.h" -#include "AUViewLocalizedStringKeys.h" - -AUCarbonViewControl::AUCarbonViewControl(AUCarbonViewBase *ownerView, AUParameterListenerRef listener, ControlType type, const CAAUParameter ¶m, ControlRef control) : - mOwnerView(ownerView), - mListener(listener), - mType(type), - mParam(param), - mControl(control), - mInControlInitialization(0) -{ -#if !__LP64__ - SetControlReference(control, SRefCon(this)); -#endif -} - -AUCarbonViewControl::~AUCarbonViewControl() -{ - AUListenerRemoveParameter(mListener, this, &mParam); -} - -AUCarbonViewControl* AUCarbonViewControl::mLastControl = NULL; - -void AUCarbonViewControl::Bind() -{ -#if !__LP64__ - mInControlInitialization = 1; // true - AUListenerAddParameter(mListener, this, &mParam); - // will cause an almost-immediate callback - - EventTypeSpec events[] = { - { kEventClassControl, kEventControlValueFieldChanged } // N.B. OS X only - }; - - WantEventTypes(GetControlEventTarget(mControl), GetEventTypeCount(events), events); - - if (mType == kTypeContinuous || mType == kTypeText || mType == kTypeDiscrete) { - EventTypeSpec controlEvents[] = { - { kEventClassControl, kEventControlHit }, - { kEventClassControl, kEventControlClick }, - { kEventClassControl, kEventControlTrack } - }; - WantEventTypes(GetControlEventTarget(mControl), GetEventTypeCount(controlEvents), controlEvents); - } - - if (mType == kTypeText) { - EventTypeSpec controlFocusEvents[] = { - { kEventClassControl, kEventControlSetFocusPart } - }; - WantEventTypes(GetControlEventTarget(mControl), GetEventTypeCount(controlFocusEvents), controlFocusEvents); - ControlKeyFilterUPP proc = mParam.ValuesHaveStrings() ? StdKeyFilterCallback : NumericKeyFilterCallback; - // this will fail for a static text field - SetControlData(mControl, 0, kControlEditTextKeyFilterTag, sizeof(proc), &proc); - } - - Update(true); - mInControlInitialization = 0; // false -#endif -} - -void AUCarbonViewControl::ParameterToControl(Float32 paramValue) -{ -#if !__LP64__ - ++mInControlInitialization; - switch (mType) { - case kTypeContinuous: - SetValueFract(AUParameterValueToLinear(paramValue, &mParam)); - break; - case kTypeDiscrete: - { - long value = long(paramValue); - - // special case [1] -- menu parameters - if (mParam.HasNamedParams()) { - // if we're dealing with menus they behave differently! - // becaue setting min and max doesn't work correctly for the control value - // first menu item always reports a control value of 1 - ControlKind ctrlKind; - if (GetControlKind(mControl, &ctrlKind) == noErr) { - if ((ctrlKind.kind == kControlKindPopupArrow) - || (ctrlKind.kind == kControlKindPopupButton)) - { - value = value - long(mParam.ParamInfo().minValue) + 1; - } - } - } - - // special case [2] -- Write-only boolean parameters - AudioUnitParameterInfo AUPI = mParam.ParamInfo(); - - bool isWriteOnlyBoolParameter = ( (AUPI.unit == kAudioUnitParameterUnit_Boolean) && - (AUPI.flags & kAudioUnitParameterFlag_IsWritable) && - !(AUPI.flags & kAudioUnitParameterFlag_IsReadable) ); - if (!isWriteOnlyBoolParameter) { - SetValue (value); - } - } - break; - case kTypeText: - { - CFStringRef cfstr = mParam.GetStringFromValueCopy(¶mValue); - - if ( !(mParam.ParamInfo().flags & kAudioUnitParameterFlag_IsWritable) //READ ONLY PARAMS - && (mParam.ParamInfo().flags & kAudioUnitParameterFlag_IsReadable)) - { - if (mParam.GetParamTag()) { - CFMutableStringRef str = CFStringCreateMutableCopy(NULL, 256, cfstr); - CFRelease (cfstr); - CFStringAppend (str, CFSTR(" ")); - CFStringAppend (str, mParam.GetParamTag()); - cfstr = str; - } - } - SetTextValue(cfstr); - CFRelease (cfstr); - } - break; - } - --mInControlInitialization; -#endif -} - -void AUCarbonViewControl::ControlToParameter() -{ -#if !__LP64__ - if (mInControlInitialization) - return; - - switch (mType) { - case kTypeContinuous: - { - double controlValue = GetValueFract(); - Float32 paramValue = AUParameterValueFromLinear(controlValue, &mParam); - mParam.SetValue(mListener, this, paramValue); - } - break; - case kTypeDiscrete: - { - long value = GetValue(); - - // special case [1] -- Menus - if (mParam.HasNamedParams()) { - // if we're dealing with menus they behave differently! - // becaue setting min and max doesn't work correctly for the control value - // first menu item always reports a control value of 1 - ControlKind ctrlKind; - if (GetControlKind(mControl, &ctrlKind) == noErr) { - if ((ctrlKind.kind == kControlKindPopupArrow) - || (ctrlKind.kind == kControlKindPopupButton)) - { - value = value + long(mParam.ParamInfo().minValue) - 1; - } - } - } - - // special case [2] -- Write-only boolean parameters - AudioUnitParameterInfo AUPI = mParam.ParamInfo(); - - bool isWriteOnlyBoolParameter = ( (AUPI.unit == kAudioUnitParameterUnit_Boolean) && - (AUPI.flags & kAudioUnitParameterFlag_IsWritable) && - !(AUPI.flags & kAudioUnitParameterFlag_IsReadable) ); - if (isWriteOnlyBoolParameter) { - value = 1; - } - - mParam.SetValue (mListener, this, value); - } - break; - case kTypeText: - { - Float32 val = mParam.GetValueFromString (GetTextValue()); - mParam.SetValue(mListener, this, (mParam.IsIndexedParam() ? (int)val : val)); - if (mParam.ValuesHaveStrings()) - ParameterToControl(val); //make sure we display the correct text (from the AU) - } - break; - } -#endif -} - -void AUCarbonViewControl::SetValueFract(double value) -{ -#if !__LP64__ - SInt32 minimum = GetControl32BitMinimum(mControl); - SInt32 maximum = GetControl32BitMaximum(mControl); - SInt32 cval = SInt32(value * (maximum - minimum) + minimum + 0.5); - SetControl32BitValue(mControl, cval); -// printf("set: value=%lf, min=%ld, max=%ld, ctl value=%ld\n", value, minimum, maximum, cval); -#endif -} - -double AUCarbonViewControl::GetValueFract() -{ -#if !__LP64__ - SInt32 minimum = GetControl32BitMinimum(mControl); - SInt32 maximum = GetControl32BitMaximum(mControl); - SInt32 cval = GetControl32BitValue(mControl); - double result = double(cval - minimum) / double(maximum - minimum); -// printf("get: min=%ld, max=%ld, value=%ld, result=%f\n", minimum, maximum, cval, result); - return result; -#else - return 0; -#endif -} - -void AUCarbonViewControl::SetTextValue(CFStringRef cfstr) -{ -#if !__LP64__ - verify_noerr(SetControlData(mControl, 0, kControlEditTextCFStringTag, sizeof(CFStringRef), &cfstr)); -#endif -} - -CFStringRef AUCarbonViewControl::GetTextValue() -{ -#if !__LP64__ - CFStringRef cfstr; - verify_noerr(GetControlData(mControl, 0, kControlEditTextCFStringTag, sizeof(CFStringRef), &cfstr, NULL)); - return cfstr; -#else - return CFSTR(""); -#endif -} - -void AUCarbonViewControl::SetValue(long value) -{ -#if !__LP64__ - SetControl32BitValue(mControl, value); -#endif -} - -long AUCarbonViewControl::GetValue() -{ -#if !__LP64__ - return GetControl32BitValue(mControl); -#else - return 0; -#endif -} - -/* Notes on event handling - - Button (Click and release on button) - kEventControlClick received - kEventControlTrack received - kEventControlValueFieldChanged received - kEventControlHit received - - Button (Click and release outside of button bounds) - kEventControlClick received - kEventControlTrack received - - Slider (Click, drag, and release) - kEventControlClick received - kEventControlTrack received - kEventControlValueFieldChanged received - kEventControlValueFieldChanged received - kEventControlHit received - - Slider (Click, release without changing value) - kEventControlClick received - kEventControlTrack received -*/ -bool AUCarbonViewControl::HandleEvent(EventHandlerCallRef inHandlerRef, EventRef event) -{ - UInt32 eclass = GetEventClass(event); - UInt32 ekind = GetEventKind(event); - ControlRef control; - bool handled = true; - - switch (eclass) { - case kEventClassControl: - { - AudioUnitParameterInfo AUPI = mParam.ParamInfo(); - - bool isWriteOnlyBoolParameter = ( (AUPI.unit == kAudioUnitParameterUnit_Boolean) && - (AUPI.flags & kAudioUnitParameterFlag_IsWritable) && - !(AUPI.flags & kAudioUnitParameterFlag_IsReadable) ); - - switch (ekind) { - case kEventControlSetFocusPart: // tab - handled = !handled; // fall through to next case - mLastControl = this; - case kEventControlValueFieldChanged: - GetEventParameter(event, kEventParamDirectObject, typeControlRef, NULL, sizeof(ControlRef), NULL, &control); - verify(control == mControl); - ControlToParameter(); - return handled; - case kEventControlClick: - if (isWriteOnlyBoolParameter) { - GetEventParameter(event, kEventParamDirectObject, typeControlRef, NULL, sizeof(ControlRef), NULL, &control); - verify(control == mControl); - ControlToParameter(); - } else if (mLastControl != this) { - if (mLastControl != NULL) { - mLastControl->Update(false); - } - mLastControl = this; - } - mOwnerView->TellListener(mParam, kAudioUnitCarbonViewEvent_MouseDownInControl, NULL); - break; // don't return true, continue normal processing - case kEventControlHit: - if (mLastControl != this) { - if (mLastControl != NULL) - mLastControl->Update(false); - mLastControl = this; - } - mOwnerView->TellListener(mParam, kAudioUnitCarbonViewEvent_MouseUpInControl, NULL); - break; // don't return true, continue normal processing - case kEventControlTrack: - if (mLastControl != this) { - if (mLastControl != NULL) - mLastControl->Update(false); - mLastControl = this; - } - - CallNextEventHandler(inHandlerRef, event); - ControlToParameter(); // new code - mOwnerView->TellListener(mParam, kAudioUnitCarbonViewEvent_MouseUpInControl, NULL); - // old code: - // break; // don't return true, continue normal processing - - return handled; // don't return true, continue normal processing - } - } - } - return !handled; -} - -pascal void AUCarbonViewControl::SliderTrackProc(ControlRef theControl, ControlPartCode partCode) -{ - // this doesn't need to actually do anything -// AUCarbonViewControl *This = (AUCarbonViewControl *)GetControlReference(theControl); -} - -pascal ControlKeyFilterResult AUCarbonViewControl::StdKeyFilterCallback(ControlRef theControl, - SInt16 *keyCode, SInt16 *charCode, - EventModifiers *modifiers) -{ -#if !__LP64__ - SInt16 c = *charCode; - if (c >= ' ' || c == '\b' || c == 0x7F || (c >= 0x1c && c <= 0x1f) || c == '\t') - return kControlKeyFilterPassKey; - if (c == '\r' || c == 3) { // return or Enter - AUCarbonViewControl *This = (AUCarbonViewControl *)GetControlReference(theControl); - ControlEditTextSelectionRec sel = { 0, 32767 }; - SetControlData(This->mControl, 0, kControlEditTextSelectionTag, sizeof(sel), &sel); - This->ControlToParameter(); - } -#endif - return kControlKeyFilterBlockKey; -} - -pascal ControlKeyFilterResult AUCarbonViewControl::NumericKeyFilterCallback(ControlRef theControl, - SInt16 *keyCode, SInt16 *charCode, - EventModifiers *modifiers) -{ -#if !__LP64__ - SInt16 c = *charCode; - if (isdigit(c) || c == '+' || c == '-' || c == '.' || c == '\b' || c == 0x7F || (c >= 0x1c && c <= 0x1f) - || c == '\t') - return kControlKeyFilterPassKey; - if (c == '\r' || c == 3) { // return or Enter - AUCarbonViewControl *This = (AUCarbonViewControl *)GetControlReference(theControl); - ControlEditTextSelectionRec sel = { 0, 32767 }; - SetControlData(This->mControl, 0, kControlEditTextSelectionTag, sizeof(sel), &sel); - This->ControlToParameter(); - } -#endif - return kControlKeyFilterBlockKey; -} - -Boolean AUCarbonViewControl::SizeControlToFit(ControlRef inControl, SInt16 *outWidth, SInt16 *outHeight) -{ -#if !__LP64__ - if (inControl == 0) return false; - - Boolean bValue = false; - // this only works on text controls -- returns an error for other controls, but doesn't do anything, - // so the error is irrelevant - SetControlData(inControl, kControlEntireControl, 'stim' /* kControlStaticTextIsMultilineTag */, sizeof(Boolean), &bValue); - - SInt16 baseLineOffset; - Rect bestRect; - OSErr err = GetBestControlRect(inControl, &bestRect, &baseLineOffset); - if (err != noErr) return false; - - int width = (bestRect.right - bestRect.left) + 1; - int height = (bestRect.bottom - bestRect.top) + 1; - - Rect boundsRect; - GetControlBounds (inControl, &boundsRect); - - Rect newRect; - newRect.top = boundsRect.top; - newRect.bottom = newRect.top + height; - newRect.left = boundsRect.left; - newRect.right = newRect.left + width; - - SetControlBounds (inControl, &newRect); - - if (outWidth) - *outWidth = width; - - if (outHeight) - *outHeight = height; -#endif - return true; -} - -#pragma mark ___AUPropertyControl -bool AUPropertyControl::HandleEvent(EventHandlerCallRef inHandlerRef, EventRef event) -{ - UInt32 eclass = GetEventClass(event); - UInt32 ekind = GetEventKind(event); - switch (eclass) { - case kEventClassControl: - switch (ekind) { - case kEventControlValueFieldChanged: - HandleControlChange(); - return true; // handled - } - } - - return false; -} - -void AUPropertyControl::RegisterEvents () -{ -#if !__LP64__ - EventTypeSpec events[] = { - { kEventClassControl, kEventControlValueFieldChanged } // N.B. OS X only - }; - - WantEventTypes(GetControlEventTarget(mControl), GetEventTypeCount(events), events); -#endif -} - -void AUPropertyControl::EmbedControl (ControlRef theControl) -{ - mView->EmbedControl (theControl); -} - -WindowRef AUPropertyControl::GetCarbonWindow() -{ - return mView->GetCarbonWindow(); -} - -#pragma mark ___AUVPreset -#if !__LP64__ -static CFStringRef kStringFactoryPreset = kAUViewLocalizedStringKey_FactoryPreset; -static bool sAUVPresetLocalized = false; -#endif - -AUVPresets::AUVPresets (AUCarbonViewBase* inParentView, - CFArrayRef& inPresets, - Point inLocation, - int nameWidth, - int controlWidth, - ControlFontStyleRec & inFontStyle) - : AUPropertyControl (inParentView), - mPresets (inPresets), - mView (inParentView) -{ -#if !__LP64__ - Rect r; - - // ok we now have an array of factory presets - // get their strings and display them - - r.top = inLocation.v; r.bottom = r.top; - r.left = inLocation.h; r.right = r.left; - - // localize as necessary - if (!sAUVPresetLocalized) { - CFBundleRef mainBundle = CFBundleGetBundleWithIdentifier(kLocalizedStringBundle_AUView); - if (mainBundle) { - kStringFactoryPreset = CFCopyLocalizedStringFromTableInBundle( - kAUViewLocalizedStringKey_FactoryPreset, kLocalizedStringTable_AUView, - mainBundle, CFSTR("FactoryPreset title string")); - sAUVPresetLocalized = true; - } - } - - // create localized title string - CFMutableStringRef factoryPresetsTitle = CFStringCreateMutable(NULL, 0); - CFStringAppend(factoryPresetsTitle, kStringFactoryPreset); - CFStringAppend(factoryPresetsTitle, kAUViewUnlocalizedString_TitleSeparator); - - ControlRef theControl; - verify_noerr(CreateStaticTextControl(mView->GetCarbonWindow(), &r, factoryPresetsTitle, &inFontStyle, &theControl)); - SInt16 width = 0; - AUCarbonViewControl::SizeControlToFit(theControl, &width, &mHeight); - CFRelease(factoryPresetsTitle); - EmbedControl(theControl); - - r.top -= 2; - r.left += width + 10; - r.right = r.left; - r.bottom = r.top; - - verify_noerr(CreatePopupButtonControl ( mView->GetCarbonWindow(), &r, NULL, - -12345, // DON'T GET MENU FROM RESOURCE mMenuID,!!! - FALSE, // variableWidth, - 0, // titleWidth, - 0, // titleJustification, - 0, // titleStyle, - &mControl)); - - MenuRef menuRef; - verify_noerr(CreateNewMenu(1, 0, &menuRef)); - - int numPresets = CFArrayGetCount(mPresets); - - for (int i = 0; i < numPresets; ++i) - { - AUPreset* preset = (AUPreset*) CFArrayGetValueAtIndex (mPresets, i); - verify_noerr(AppendMenuItemTextWithCFString (menuRef, preset->presetName, 0, 0, 0)); - } - - verify_noerr(SetControlData(mControl, 0, kControlPopupButtonMenuRefTag, sizeof(menuRef), &menuRef)); - verify_noerr (SetControlFontStyle (mControl, &inFontStyle)); - - SetControl32BitMaximum (mControl, numPresets); - - // size popup - SInt16 height = 0; - - AUCarbonViewControl::SizeControlToFit(mControl, &width, &height); - - if (height > mHeight) mHeight = height; - if (mHeight < 0) mHeight = 0; - - // find which menu item is the Default preset - UInt32 propertySize = sizeof(AUPreset); - AUPreset defaultPreset; - OSStatus result = AudioUnitGetProperty (mView->GetEditAudioUnit(), - kAudioUnitProperty_PresentPreset, - kAudioUnitScope_Global, - 0, - &defaultPreset, - &propertySize); - - mPropertyID = kAudioUnitProperty_PresentPreset; -#endif -#ifndef __LP64__ - if (result != noErr) { // if the PresentPreset property is not implemented, fall back to the CurrentPreset property - result = AudioUnitGetProperty (mView->GetEditAudioUnit(), - kAudioUnitProperty_CurrentPreset, - kAudioUnitScope_Global, - 0, - &defaultPreset, - &propertySize); - mPropertyID = kAudioUnitProperty_CurrentPreset; - if (result == noErr) - CFRetain (defaultPreset.presetName); - } -#endif -#if !__LP64__ - EmbedControl (mControl); - - HandlePropertyChange(defaultPreset); - - RegisterEvents(); -#endif -} - -void AUVPresets::AddInterest (AUEventListenerRef inListener, - void * inObject) -{ - AudioUnitEvent e; - e.mEventType = kAudioUnitEvent_PropertyChange; - e.mArgument.mProperty.mAudioUnit = mView->GetEditAudioUnit(); - e.mArgument.mProperty.mPropertyID = mPropertyID; - e.mArgument.mProperty.mScope = kAudioUnitScope_Global; - e.mArgument.mProperty.mElement = 0; - - AUEventListenerAddEventType(inListener, inObject, &e); -} - -void AUVPresets::RemoveInterest (AUEventListenerRef inListener, - void * inObject) -{ - AudioUnitEvent e; - e.mEventType = kAudioUnitEvent_PropertyChange; - e.mArgument.mProperty.mAudioUnit = mView->GetEditAudioUnit(); - e.mArgument.mProperty.mPropertyID = mPropertyID; - e.mArgument.mProperty.mScope = kAudioUnitScope_Global; - e.mArgument.mProperty.mElement = 0; - - AUEventListenerRemoveEventType(inListener, inObject, &e); -} - -void AUVPresets::HandleControlChange () -{ -#if !__LP64__ - SInt32 i = GetControl32BitValue(mControl); - if (i > 0) - { - AUPreset* preset = (AUPreset*) CFArrayGetValueAtIndex (mPresets, i-1); - - verify_noerr(AudioUnitSetProperty (mView->GetEditAudioUnit(), - mPropertyID, // either currentPreset or PresentPreset depending on which is supported - kAudioUnitScope_Global, - 0, - preset, - sizeof(AUPreset))); - - // when we change a preset we can't expect the AU to update its state - // as it isn't meant to know that its being viewed! - // so we broadcast a notification to all listeners that all parameters on this AU have changed - AudioUnitParameter changedUnit; - changedUnit.mAudioUnit = mView->GetEditAudioUnit(); - changedUnit.mParameterID = kAUParameterListener_AnyParameter; - verify_noerr (AUParameterListenerNotify (NULL, NULL, &changedUnit) ); - } -#endif -} - -void AUVPresets::HandlePropertyChange(AUPreset &preset) -{ -#if !__LP64__ - // check to see if the preset is in our menu - int numPresets = CFArrayGetCount(mPresets); - if (preset.presetNumber < 0) { - SetControl32BitValue (mControl, 0); //controls are one-based - } else { - for (SInt32 i = 0; i < numPresets; ++i) { - AUPreset* currPreset = (AUPreset*) CFArrayGetValueAtIndex (mPresets, i); - if (preset.presetNumber == currPreset->presetNumber) { - SetControl32BitValue (mControl, ++i); //controls are one-based - break; - } - } - } - - if (preset.presetName) - CFRelease (preset.presetName); -#endif -} - -bool AUVPresets::HandlePropertyChange (const AudioUnitProperty &inProp) -{ - if (inProp.mPropertyID == mPropertyID) - { - UInt32 theSize = sizeof(AUPreset); - AUPreset currentPreset; - - OSStatus result = AudioUnitGetProperty(inProp.mAudioUnit, - inProp.mPropertyID, - inProp.mScope, - inProp.mElement, ¤tPreset, &theSize); - - if (result == noErr) { -#ifndef __LP64__ - if (inProp.mPropertyID == kAudioUnitProperty_CurrentPreset && currentPreset.presetName) - CFRetain (currentPreset.presetName); -#endif - HandlePropertyChange(currentPreset); - return true; - } - } - return false; -} diff --git a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewControl.h b/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewControl.h deleted file mode 100644 index fb5adb4b83..0000000000 --- a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewControl.h +++ /dev/null @@ -1,230 +0,0 @@ -/* - File: AUCarbonViewControl.h - Abstract: Part of CoreAudio Utility Classes - Version: 1.1 - - Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple - Inc. ("Apple") in consideration of your agreement to the following - terms, and your use, installation, modification or redistribution of - this Apple software constitutes acceptance of these terms. If you do - not agree with these terms, please do not use, install, modify or - redistribute this Apple software. - - In consideration of your agreement to abide by the following terms, and - subject to these terms, Apple grants you a personal, non-exclusive - license, under Apple's copyrights in this original Apple software (the - "Apple Software"), to use, reproduce, modify and redistribute the Apple - Software, with or without modifications, in source and/or binary forms; - provided that if you redistribute the Apple Software in its entirety and - without modifications, you must retain this notice and the following - text and disclaimers in all such redistributions of the Apple Software. - Neither the name, trademarks, service marks or logos of Apple Inc. may - be used to endorse or promote products derived from the Apple Software - without specific prior written permission from Apple. Except as - expressly stated in this notice, no other rights or licenses, express or - implied, are granted by Apple herein, including but not limited to any - patent rights that may be infringed by your derivative works or by other - works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. APPLE - MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION - THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND - OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, - MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED - AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), - STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - Copyright (C) 2014 Apple Inc. All Rights Reserved. - -*/ -#ifndef __AUCarbonViewControl_h__ -#define __AUCarbonViewControl_h__ - -#include -#include -#include -#include "CarbonEventHandler.h" -#include "CAAUParameter.h" - -class AUCarbonViewBase; - -// ____________________________________________________________________________ -// AUCarbonViewControl -// Wrapper for a control that is wired to an AudioUnit parameter. - /*! @class AUCarbonViewControl */ -class AUCarbonViewControl : public CarbonEventHandler { - // note that the controls are never disposed; that's managed by the AUCarbonViewBase's - // parent pane which contains all of them ... if we later need to be able to delete - // individual controls on the fly, extra work needed -public: - enum ControlType { - kTypeContinuous, // e.g. slider - kTypeDiscrete, // e.g. pop-up menu - kTypeText - }; - - AUCarbonViewControl(AUCarbonViewBase *ownerView, AUParameterListenerRef listener, ControlType type, const CAAUParameter ¶m, ControlRef control); - ~AUCarbonViewControl(); - - /*! @method Bind */ - virtual void Bind(); // second-stage construction - - /*! @method ControlToParameter */ - virtual void ControlToParameter(); - /*! @method ParameterToControl */ - virtual void ParameterToControl(Float32 newValue); - - /*! @method SetValueFract */ - virtual void SetValueFract(double value); - /*! @method GetValueFract */ - virtual double GetValueFract(); - /*! @method SetTextValue */ - virtual void SetTextValue(CFStringRef str); - /*! @method GetTextValue */ - virtual CFStringRef GetTextValue(); - /*! @method SetValue */ - virtual void SetValue(long value); - /*! @method GetValue */ - virtual long GetValue(); - - /*! @method GetOwnerView */ - AUCarbonViewBase * GetOwnerView() {return mOwnerView;} - - /*! @method Update */ - void Update (bool inUIThread) - { - if (inUIThread) - ParameterToControl (mParam.GetValue()); - else - AUParameterListenerNotify (mListener, this, &mParam); - } - - - // CarbonEventHandler overrides - /*! @method HandleEvent */ - virtual bool HandleEvent(EventHandlerCallRef inHandlerRef, EventRef event); - - /*! @method ControlRef */ - operator ControlRef() { return mControl; } - - /*! @method SizeControlToFit */ - static Boolean SizeControlToFit(ControlRef inControl, SInt16 *outWidth = NULL, SInt16 *outHeight = NULL); - - /*! @method SliderTrackProc */ - static pascal void SliderTrackProc(ControlRef theControl, ControlPartCode partCode); - /*! @method NumericKeyFilterCallback */ - static pascal ControlKeyFilterResult NumericKeyFilterCallback(ControlRef theControl, SInt16 *keyCode, SInt16 *charCode, - EventModifiers *modifiers); -protected: - /*! @method ParamInfo */ - const AudioUnitParameterInfo &ParamInfo() { return mParam.ParamInfo(); } - - /*! @var mOwnerView */ - AUCarbonViewBase * mOwnerView; - /*! @var mListener */ - AUParameterListenerRef mListener; - /*! @var mType */ - ControlType mType; - /*! @var mParam */ - CAAUParameter mParam; - - /*! @var mControl */ - ControlRef mControl; - - /*! @method StdKeyFilterCallback */ - static pascal ControlKeyFilterResult StdKeyFilterCallback(ControlRef theControl, SInt16 *keyCode, SInt16 *charCode, - EventModifiers *modifiers); - SInt16 mInControlInitialization; - - static AUCarbonViewControl* mLastControl; -}; - - /*! @class AUPropertyControl */ -class AUPropertyControl : public CarbonEventHandler { -public: - /*! @ctor AUPropertyControl */ - AUPropertyControl (AUCarbonViewBase * inBase) : mControl(0), mView (inBase), mHeight(0) {} - - /*! @method HandleEvent */ - virtual bool HandleEvent(EventHandlerCallRef inHandlerRef, EventRef event); - - /*! @method HandlePropertyChange */ - virtual bool HandlePropertyChange (const AudioUnitProperty &inProp) = 0; - - /*! @method AddInterest */ - virtual void AddInterest (AUEventListenerRef inListener, - void * inObject) = 0; - - /*! @method RemoveInterest */ - virtual void RemoveInterest (AUEventListenerRef inListener, - void * inObject) = 0; - - /*! @method GetHeight */ - int GetHeight() { return mHeight;} - -protected: - /*! @method HandleControlChange */ - virtual void HandleControlChange () = 0; - - /*! @method RegisterEvents */ - void RegisterEvents (); - - /*! @method EmbedControl */ - void EmbedControl (ControlRef theControl); - - /*! @method GetCarbonWindow */ - WindowRef GetCarbonWindow(); - - /*! @var mControl */ - ControlRef mControl; - /*! @var mView */ - AUCarbonViewBase* mView; - /*! @var mHeight */ - SInt16 mHeight; -}; - - /*! @class AUVPresets */ -class AUVPresets : public AUPropertyControl { -public: - /*! @ctor HandleControlChange */ - AUVPresets (AUCarbonViewBase * inBase, - CFArrayRef& inPresets, - Point inLocation, - int nameWidth, - int controlWidth, - ControlFontStyleRec & inFontStyle); - - virtual ~AUVPresets () { CFRelease (mPresets); } - - /*! @method HandlePropertyChange */ - virtual bool HandlePropertyChange (const AudioUnitProperty &inProp); - - /*! @method AddInterest */ - virtual void AddInterest (AUEventListenerRef inListener, - void * inObject); - - /*! @method RemoveInterest */ - virtual void RemoveInterest (AUEventListenerRef inListener, - void * inObject); - -protected: - /*! @method HandleControlChange */ - virtual void HandleControlChange (); - - /*! @var mPresets */ - CFArrayRef mPresets; - /*! @var mView */ - AUCarbonViewBase* mView; - AudioUnitPropertyID mPropertyID; - - void HandlePropertyChange(AUPreset &preset); -}; - -#endif // __AUCarbonViewControl_h__ diff --git a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewDispatch.cpp b/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewDispatch.cpp deleted file mode 100644 index 6b0e65a82c..0000000000 --- a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/AUCarbonViewDispatch.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/* - File: AUCarbonViewDispatch.cpp - Abstract: AUCarbonViewDispatch.h - Version: 1.1 - - Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple - Inc. ("Apple") in consideration of your agreement to the following - terms, and your use, installation, modification or redistribution of - this Apple software constitutes acceptance of these terms. If you do - not agree with these terms, please do not use, install, modify or - redistribute this Apple software. - - In consideration of your agreement to abide by the following terms, and - subject to these terms, Apple grants you a personal, non-exclusive - license, under Apple's copyrights in this original Apple software (the - "Apple Software"), to use, reproduce, modify and redistribute the Apple - Software, with or without modifications, in source and/or binary forms; - provided that if you redistribute the Apple Software in its entirety and - without modifications, you must retain this notice and the following - text and disclaimers in all such redistributions of the Apple Software. - Neither the name, trademarks, service marks or logos of Apple Inc. may - be used to endorse or promote products derived from the Apple Software - without specific prior written permission from Apple. Except as - expressly stated in this notice, no other rights or licenses, express or - implied, are granted by Apple herein, including but not limited to any - patent rights that may be infringed by your derivative works or by other - works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. APPLE - MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION - THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND - OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, - MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED - AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), - STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - Copyright (C) 2014 Apple Inc. All Rights Reserved. - -*/ -#include "AUCarbonViewBase.h" - -// ____________________________________________________________________________ -// component dispatch - -#if PRAGMA_STRUCT_ALIGN - #pragma options align=mac68k -#elif PRAGMA_STRUCT_PACKPUSH - #pragma pack(push, 2) -#elif PRAGMA_STRUCT_PACK - #pragma pack(2) -#endif - struct AudioUnitCarbonViewCreateGluePB { - unsigned char componentFlags; - unsigned char componentParamSize; - short componentWhat; - ControlRef* outControl; - const Float32Point* inSize; - const Float32Point* inLocation; - ControlRef inParentControl; - WindowRef inWindow; - AudioUnit inAudioUnit; - AudioUnitCarbonView inView; - }; -#if !__LP64__ - struct AudioUnitCarbonViewSetEventListenerGluePB { - unsigned char componentFlags; - unsigned char componentParamSize; - short componentWhat; - void* inUserData; - AudioUnitCarbonViewEventListener inCallback; - AudioUnitCarbonView inView; - }; -#endif -#if PRAGMA_STRUCT_ALIGN - #pragma options align=reset -#elif PRAGMA_STRUCT_PACKPUSH - #pragma pack(pop) -#elif PRAGMA_STRUCT_PACK - #pragma pack() -#endif - -#define CheckNull(x) if ((x) == NULL) return paramErr; - -OSStatus AUCarbonViewBase::ComponentEntryDispatch(ComponentParameters *p, AUCarbonViewBase *This) -{ - if (This == NULL) return paramErr; - - OSStatus result = noErr; - - switch (p->what) { - case kAudioUnitCarbonViewCreateSelect: - { - AudioUnitCarbonViewCreateGluePB *pb = (AudioUnitCarbonViewCreateGluePB *)p; - CheckNull(pb->inAudioUnit); - CheckNull(pb->inWindow); - CheckNull(pb->inParentControl); - CheckNull(pb->inSize); - CheckNull(pb->inLocation); - CheckNull(pb->outControl); - result = This->CreateCarbonView(pb->inAudioUnit, pb->inWindow, pb->inParentControl, - *pb->inLocation, *pb->inSize, *pb->outControl); - } - break; -#if !__LP64__ - case kAudioUnitCarbonViewSetEventListenerSelect: - { - AudioUnitCarbonViewSetEventListenerGluePB *pb = (AudioUnitCarbonViewSetEventListenerGluePB *)p; - This->SetEventListener(pb->inCallback, pb->inUserData); - } - break; -#endif - - default: - result = ComponentBase::ComponentEntryDispatch(p, This); - break; - } - return result; -} diff --git a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CarbonEventHandler.cpp b/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CarbonEventHandler.cpp deleted file mode 100644 index d2318302e6..0000000000 --- a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CarbonEventHandler.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/* - File: CarbonEventHandler.cpp - Abstract: CarbonEventHandler.h - Version: 1.1 - - Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple - Inc. ("Apple") in consideration of your agreement to the following - terms, and your use, installation, modification or redistribution of - this Apple software constitutes acceptance of these terms. If you do - not agree with these terms, please do not use, install, modify or - redistribute this Apple software. - - In consideration of your agreement to abide by the following terms, and - subject to these terms, Apple grants you a personal, non-exclusive - license, under Apple's copyrights in this original Apple software (the - "Apple Software"), to use, reproduce, modify and redistribute the Apple - Software, with or without modifications, in source and/or binary forms; - provided that if you redistribute the Apple Software in its entirety and - without modifications, you must retain this notice and the following - text and disclaimers in all such redistributions of the Apple Software. - Neither the name, trademarks, service marks or logos of Apple Inc. may - be used to endorse or promote products derived from the Apple Software - without specific prior written permission from Apple. Except as - expressly stated in this notice, no other rights or licenses, express or - implied, are granted by Apple herein, including but not limited to any - patent rights that may be infringed by your derivative works or by other - works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. APPLE - MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION - THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND - OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, - MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED - AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), - STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - Copyright (C) 2014 Apple Inc. All Rights Reserved. - -*/ - -#include "CarbonEventHandler.h" - -static pascal OSStatus TheEventHandler(EventHandlerCallRef inHandlerRef, EventRef inEvent, void *inUserData) -{ - CarbonEventHandler *handler = (CarbonEventHandler *)inUserData; - if (handler->HandleEvent(inHandlerRef, inEvent)) - return noErr; - else return eventNotHandledErr; -} - -CarbonEventHandler::CarbonEventHandler() : - mHandlers(NULL) -{ -} - -CarbonEventHandler::~CarbonEventHandler() -{ - if (mHandlers != NULL) { - int count = static_cast(CFDictionaryGetCount(mHandlers)); - EventHandlerRef *theHandlers = (EventHandlerRef*) malloc(count * sizeof(EventHandlerRef)); - CFDictionaryGetKeysAndValues(mHandlers, NULL, (const void **)theHandlers); - - for (int i = 0; i < count; i++) - RemoveEventHandler(theHandlers[i]); - CFDictionaryRemoveAllValues(mHandlers); - CFRelease (mHandlers); - free(theHandlers); - } -} - -void CarbonEventHandler::WantEventTypes(EventTargetRef target, UInt32 inNumTypes, const EventTypeSpec *inList) -{ - if (mHandlers == NULL) - mHandlers = CFDictionaryCreateMutable(NULL, 0, NULL, NULL); - - EventHandlerRef handler; - - if (CFDictionaryGetValueIfPresent (mHandlers, target, (const void **)&handler)) // if there is already a handler for the target, add the type - verify_noerr(AddEventTypesToHandler(handler, inNumTypes, inList)); - else { - verify_noerr(InstallEventHandler(target, TheEventHandler, inNumTypes, inList, this, &handler)); - CFDictionaryAddValue(mHandlers, target, handler); - } -} diff --git a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CarbonEventHandler.h b/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CarbonEventHandler.h deleted file mode 100644 index 4ba4995fc3..0000000000 --- a/modules/juce_audio_plugin_client/AU/CoreAudioUtilityClasses/CarbonEventHandler.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - File: CarbonEventHandler.h - Abstract: Part of CoreAudio Utility Classes - Version: 1.1 - - Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple - Inc. ("Apple") in consideration of your agreement to the following - terms, and your use, installation, modification or redistribution of - this Apple software constitutes acceptance of these terms. If you do - not agree with these terms, please do not use, install, modify or - redistribute this Apple software. - - In consideration of your agreement to abide by the following terms, and - subject to these terms, Apple grants you a personal, non-exclusive - license, under Apple's copyrights in this original Apple software (the - "Apple Software"), to use, reproduce, modify and redistribute the Apple - Software, with or without modifications, in source and/or binary forms; - provided that if you redistribute the Apple Software in its entirety and - without modifications, you must retain this notice and the following - text and disclaimers in all such redistributions of the Apple Software. - Neither the name, trademarks, service marks or logos of Apple Inc. may - be used to endorse or promote products derived from the Apple Software - without specific prior written permission from Apple. Except as - expressly stated in this notice, no other rights or licenses, express or - implied, are granted by Apple herein, including but not limited to any - patent rights that may be infringed by your derivative works or by other - works in which the Apple Software may be incorporated. - - The Apple Software is provided by Apple on an "AS IS" basis. APPLE - MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION - THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS - FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND - OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. - - IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, - MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED - AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), - STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - - Copyright (C) 2014 Apple Inc. All Rights Reserved. - -*/ -#ifndef __CarbonEventHandler_h__ -#define __CarbonEventHandler_h__ - -#include - - /*! @class CarbonEventHandler */ -class CarbonEventHandler { -public: - /*! @ctor CarbonEventHandler */ - CarbonEventHandler(); - /*! @dtor ~CarbonEventHandler */ - virtual ~CarbonEventHandler(); - - /*! @method WantEventTypes */ - virtual void WantEventTypes(EventTargetRef target, UInt32 inNumTypes, const EventTypeSpec *inList); - - /*! @method HandleEvent */ - virtual bool HandleEvent(EventHandlerCallRef inHandlerRef, EventRef event) = 0; - -protected: - /*! @var mHandlers */ - CFMutableDictionaryRef mHandlers; -}; - -#endif // __CarbonEventHandler_h__ diff --git a/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm b/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm index 2a0d080a0b..72eea53003 100644 --- a/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm +++ b/modules/juce_audio_plugin_client/AU/juce_AU_Wrapper.mm @@ -22,11 +22,6 @@ #if JucePlugin_Build_AU -#if __LP64__ - #undef JUCE_SUPPORT_CARBON - #define JUCE_SUPPORT_CARBON 0 -#endif - JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wshorten-64-to-32", "-Wunused-parameter", "-Wdeprecated-declarations", @@ -52,29 +47,11 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wshorten-64-to-32", #include #include "CoreAudioUtilityClasses/MusicDeviceBase.h" -/** The BUILD_AU_CARBON_UI flag lets you specify whether old-school carbon hosts are supported as - well as ones that can open a cocoa view. If this is enabled, you'll need to also add the AUCarbonBase - files to your project. -*/ -#if ! (defined (BUILD_AU_CARBON_UI) || JUCE_64BIT) - #define BUILD_AU_CARBON_UI 1 -#endif - -#ifdef __LP64__ - #undef BUILD_AU_CARBON_UI // (not possible in a 64-bit build) -#endif - -#if BUILD_AU_CARBON_UI - #include "CoreAudioUtilityClasses/AUCarbonViewBase.h" -#endif - JUCE_END_IGNORE_WARNINGS_GCC_LIKE -#define JUCE_MAC_WINDOW_VISIBITY_BODGE 1 #define JUCE_CORE_INCLUDE_OBJC_HELPERS 1 #include "../utility/juce_IncludeModuleHeaders.h" -#include "../utility/juce_CarbonVisibility.h" #include #include @@ -96,13 +73,7 @@ struct AudioProcessorHolder AudioProcessorHolder (bool initialiseGUI) { if (initialiseGUI) - { - #if BUILD_AU_CARBON_UI - NSApplicationLoad(); - #endif - initialiseJuce_GUI(); - } juceFilter.reset (createPluginFilterOfType (AudioProcessor::wrapperType_AudioUnit)); @@ -1060,23 +1031,6 @@ public: return rate > 0 ? juceFilter->getLatencySamples() / rate : 0; } - //============================================================================== - #if BUILD_AU_CARBON_UI - int GetNumCustomUIComponents() override - { - return getHostType().isDigitalPerformer() ? 0 : 1; - } - - void GetUIComponentDescs (ComponentDescription* inDescArray) override - { - inDescArray[0].componentType = kAudioUnitCarbonViewComponentType; - inDescArray[0].componentSubType = JucePlugin_AUSubType; - inDescArray[0].componentManufacturer = JucePlugin_AUManufacturerCode; - inDescArray[0].componentFlags = 0; - inDescArray[0].componentFlagsMask = 0; - } - #endif - //============================================================================== bool getCurrentPosition (AudioPlayHead::CurrentPositionInfo& info) override { @@ -2420,243 +2374,6 @@ private: JUCE_DECLARE_NON_COPYABLE (JuceAU) }; -//============================================================================== -#if BUILD_AU_CARBON_UI - -class JuceAUView : public AUCarbonViewBase -{ -public: - JuceAUView (AudioUnitCarbonView auview) - : AUCarbonViewBase (auview), - juceFilter (nullptr) - { - } - - ~JuceAUView() - { - deleteUI(); - } - - ComponentResult CreateUI (Float32 /*inXOffset*/, Float32 /*inYOffset*/) override - { - JUCE_AUTORELEASEPOOL - { - if (juceFilter == nullptr) - { - void* pointers[2]; - UInt32 propertySize = sizeof (pointers); - - AudioUnitGetProperty (GetEditAudioUnit(), - juceFilterObjectPropertyID, - kAudioUnitScope_Global, - 0, - pointers, - &propertySize); - - juceFilter = (AudioProcessor*) pointers[0]; - } - - if (juceFilter != nullptr) - { - deleteUI(); - - if (AudioProcessorEditor* editorComp = juceFilter->createEditorIfNeeded()) - { - editorComp->setOpaque (true); - windowComp.reset (new ComponentInHIView (editorComp, mCarbonPane)); - } - } - else - { - jassertfalse; // can't get a pointer to our effect - } - } - - return noErr; - } - - AudioUnitCarbonViewEventListener getEventListener() const { return mEventListener; } - void* getEventListenerUserData() const { return mEventListenerUserData; } - -private: - //============================================================================== - AudioProcessor* juceFilter; - std::unique_ptr windowComp; - - void deleteUI() - { - if (windowComp != nullptr) - { - PopupMenu::dismissAllActiveMenus(); - - /* This assertion is triggered when there's some kind of modal component active, and the - host is trying to delete our plugin. - If you must use modal components, always use them in a non-blocking way, by never - calling runModalLoop(), but instead using enterModalState() with a callback that - will be performed on completion. (Note that this assertion could actually trigger - a false alarm even if you're doing it correctly, but is here to catch people who - aren't so careful) */ - jassert (Component::getCurrentlyModalComponent() == nullptr); - - if (JuceAU::EditorCompHolder* editorCompHolder = dynamic_cast (windowComp->getChildComponent(0))) - if (AudioProcessorEditor* audioProcessEditor = dynamic_cast (editorCompHolder->getChildComponent(0))) - juceFilter->editorBeingDeleted (audioProcessEditor); - - windowComp = nullptr; - } - } - - //============================================================================== - // Uses a child NSWindow to sit in front of a HIView and display our component - class ComponentInHIView : public Component - { - public: - ComponentInHIView (AudioProcessorEditor* ed, HIViewRef parentHIView) - : parentView (parentHIView), - editor (ed), - recursive (false) - { - JUCE_AUTORELEASEPOOL - { - jassert (ed != nullptr); - addAndMakeVisible (editor); - setOpaque (true); - setVisible (true); - setBroughtToFrontOnMouseClick (true); - - setSize (editor.getWidth(), editor.getHeight()); - SizeControl (parentHIView, (SInt16) editor.getWidth(), (SInt16) editor.getHeight()); - - WindowRef windowRef = HIViewGetWindow (parentHIView); - hostWindow = [[NSWindow alloc] initWithWindowRef: windowRef]; - - // not really sure why this is needed in older OS X versions - // but JUCE plug-ins crash without it - if ((SystemStats::getOperatingSystemType() & 0xff) < 12) - [hostWindow retain]; - - [hostWindow setCanHide: YES]; - [hostWindow setReleasedWhenClosed: YES]; - - updateWindowPos(); - - #if ! JucePlugin_EditorRequiresKeyboardFocus - addToDesktop (ComponentPeer::windowIsTemporary | ComponentPeer::windowIgnoresKeyPresses); - setWantsKeyboardFocus (false); - #else - addToDesktop (ComponentPeer::windowIsTemporary); - setWantsKeyboardFocus (true); - #endif - - setVisible (true); - toFront (false); - - addSubWindow(); - - NSWindow* pluginWindow = [((NSView*) getWindowHandle()) window]; - [pluginWindow setNextResponder: hostWindow]; - - attachWindowHidingHooks (this, (WindowRef) windowRef, hostWindow); - } - } - - ~ComponentInHIView() - { - JUCE_AUTORELEASEPOOL - { - removeWindowHidingHooks (this); - - NSWindow* pluginWindow = [((NSView*) getWindowHandle()) window]; - [hostWindow removeChildWindow: pluginWindow]; - removeFromDesktop(); - - [hostWindow release]; - hostWindow = nil; - } - } - - void updateWindowPos() - { - HIPoint f; - f.x = f.y = 0; - HIPointConvert (&f, kHICoordSpaceView, parentView, kHICoordSpaceScreenPixel, 0); - setTopLeftPosition ((int) f.x, (int) f.y); - } - - void addSubWindow() - { - NSWindow* pluginWindow = [((NSView*) getWindowHandle()) window]; - [pluginWindow setExcludedFromWindowsMenu: YES]; - [pluginWindow setCanHide: YES]; - - [hostWindow addChildWindow: pluginWindow - ordered: NSWindowAbove]; - [hostWindow orderFront: nil]; - [pluginWindow orderFront: nil]; - } - - void resized() override - { - if (Component* const child = getChildComponent (0)) - child->setBounds (getLocalBounds()); - } - - void paint (Graphics&) override {} - - void childBoundsChanged (Component*) override - { - if (! recursive) - { - recursive = true; - - const int w = jmax (32, editor.getWidth()); - const int h = jmax (32, editor.getHeight()); - - SizeControl (parentView, (SInt16) w, (SInt16) h); - - if (getWidth() != w || getHeight() != h) - setSize (w, h); - - editor.repaint(); - - updateWindowPos(); - addSubWindow(); // (need this for AULab) - - recursive = false; - } - } - - bool keyPressed (const KeyPress& kp) override - { - if (! kp.getModifiers().isCommandDown()) - { - // If we have an unused keypress, move the key-focus to a host window - // and re-inject the event.. - static NSTimeInterval lastEventTime = 0; // check we're not recursively sending the same event - NSTimeInterval eventTime = [[NSApp currentEvent] timestamp]; - - if (lastEventTime != eventTime) - { - lastEventTime = eventTime; - - [[hostWindow parentWindow] makeKeyWindow]; - repostCurrentNSEvent(); - } - } - - return false; - } - - private: - HIViewRef parentView; - NSWindow* hostWindow; - JuceAU::EditorCompHolder editor; - bool recursive; - }; -}; - -#endif - //============================================================================== #define JUCE_COMPONENT_ENTRYX(Class, Name, Suffix) \ extern "C" __attribute__((visibility("default"))) ComponentResult Name ## Suffix (ComponentParameters* params, Class* obj); \ @@ -2694,10 +2411,6 @@ JUCE_COMPONENT_ENTRY (JuceAU, JucePlugin_AUExportPrefix, Entry) JUCE_FACTORY_ENTRY (JuceAU, JucePlugin_AUExportPrefix) #endif -#if BUILD_AU_CARBON_UI - JUCE_COMPONENT_ENTRY (JuceAUView, JucePlugin_AUExportPrefix, ViewEntry) -#endif - #if ! JUCE_DISABLE_AU_FACTORY_ENTRY JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wcast-align", "-Wzero-as-null-pointer-constant") diff --git a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.mm b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.mm index 02867e2dfa..dde248f781 100644 --- a/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.mm +++ b/modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.mm @@ -24,11 +24,8 @@ #if JucePlugin_Build_VST || JucePlugin_Build_VST3 -#define JUCE_MAC_WINDOW_VISIBITY_BODGE 1 - #include "../utility/juce_IncludeSystemHeaders.h" #include "../utility/juce_IncludeModuleHeaders.h" -#include "../utility/juce_CarbonVisibility.h" //============================================================================== namespace juce @@ -153,8 +150,6 @@ void* attachComponentToWindowRefVST (Component* comp, void* parentWindowOrView, [hostWindow orderFront: nil]; [pluginWindow orderFront: nil]; - attachWindowHidingHooks (comp, (WindowRef) parentWindowOrView, hostWindow); - return hostWindow; } #endif @@ -192,8 +187,6 @@ void detachComponentFromWindowRefVST (Component* comp, void* window, bool isNSVi comp->getProperties() ["boundsEventRef"].toString().getHexValue64(); RemoveEventHandler (ref); - removeWindowHidingHooks (comp); - CFUniquePtr dummyView ((HIViewRef) (void*) (pointer_sized_int) comp->getProperties() ["dummyViewRef"].toString().getHexValue64()); diff --git a/modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r b/modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r index 82f7641401..850a756c7f 100644 --- a/modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client_AU.r @@ -41,23 +41,3 @@ #define ENTRY_POINT JucePlugin_AUExportPrefixQuoted "Entry" #include "AUResources.r" - -//============================================================================== -// component resources for Audio Unit Carbon View - -#ifndef BUILD_AU_CARBON_UI - #define BUILD_AU_CARBON_UI 1 -#endif - -#if BUILD_AU_CARBON_UI - #define RES_ID 2000 - #define COMP_TYPE kAudioUnitCarbonViewComponentType - #define COMP_SUBTYPE JucePlugin_AUSubType - #define COMP_MANUF JucePlugin_AUManufacturerCode - #define VERSION JucePlugin_VersionCode - #define NAME JucePlugin_Manufacturer ": " JucePlugin_Name " View" - #define DESCRIPTION NAME - #define ENTRY_POINT JucePlugin_AUExportPrefixQuoted "ViewEntry" - - #include "AUResources.r" -#endif diff --git a/modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_2.mm b/modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_2.mm index 9da303d357..112fdd466a 100644 --- a/modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_2.mm +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client_AU_2.mm @@ -55,9 +55,6 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wparentheses", #include "AU/CoreAudioUtilityClasses/AUBase.cpp" #include "AU/CoreAudioUtilityClasses/AUBuffer.cpp" -#include "AU/CoreAudioUtilityClasses/AUCarbonViewBase.cpp" -#include "AU/CoreAudioUtilityClasses/AUCarbonViewControl.cpp" -#include "AU/CoreAudioUtilityClasses/AUCarbonViewDispatch.cpp" #include "AU/CoreAudioUtilityClasses/AUDispatch.cpp" #include "AU/CoreAudioUtilityClasses/AUInputElement.cpp" #include "AU/CoreAudioUtilityClasses/AUMIDIBase.cpp" @@ -69,7 +66,6 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wparentheses", #include "AU/CoreAudioUtilityClasses/CAMutex.cpp" #include "AU/CoreAudioUtilityClasses/CAStreamBasicDescription.cpp" #include "AU/CoreAudioUtilityClasses/CAVectorUnit.cpp" -#include "AU/CoreAudioUtilityClasses/CarbonEventHandler.cpp" #include "AU/CoreAudioUtilityClasses/ComponentBase.cpp" #include "AU/CoreAudioUtilityClasses/MusicDeviceBase.cpp" diff --git a/modules/juce_audio_plugin_client/utility/juce_CarbonVisibility.h b/modules/juce_audio_plugin_client/utility/juce_CarbonVisibility.h deleted file mode 100644 index 8ef5832fa5..0000000000 --- a/modules/juce_audio_plugin_client/utility/juce_CarbonVisibility.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE 7 technical preview. - Copyright (c) 2022 - Raw Material Software Limited - - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). - - For the technical preview this file cannot be licensed commercially. - - JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER - EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE - DISCLAIMED. - - ============================================================================== -*/ - -namespace juce -{ - -//============================================================================== -#if JUCE_SUPPORT_CARBON && JUCE_MAC_WINDOW_VISIBITY_BODGE - -/* When you wrap a WindowRef as an NSWindow, it seems to bugger up the HideWindow - function, so when the host tries (and fails) to hide the window, this stuff catches - the event and forces it to update. -*/ -static pascal OSStatus windowVisibilityBodge (EventHandlerCallRef, EventRef e, void* user) -{ - NSWindow* hostWindow = (NSWindow*) user; - - switch (GetEventKind (e)) - { - case kEventWindowInit: [hostWindow display]; break; - case kEventWindowShown: [hostWindow orderFront: nil]; break; - case kEventWindowHidden: [hostWindow orderOut: nil]; break; - } - - return eventNotHandledErr; -} - -inline void attachWindowHidingHooks (Component* comp, void* hostWindowRef, NSWindow* nsWindow) -{ - const EventTypeSpec eventsToCatch[] = - { - { kEventClassWindow, kEventWindowInit }, - { kEventClassWindow, kEventWindowShown }, - { kEventClassWindow, kEventWindowHidden } - }; - - EventHandlerRef ref; - InstallWindowEventHandler ((WindowRef) hostWindowRef, - NewEventHandlerUPP (windowVisibilityBodge), - GetEventTypeCount (eventsToCatch), eventsToCatch, - (void*) nsWindow, &ref); - - comp->getProperties().set ("carbonEventRef", String::toHexString ((pointer_sized_int) (void*) ref)); -} - -inline void removeWindowHidingHooks (Component* comp) -{ - if (comp != nullptr) - RemoveEventHandler ((EventHandlerRef) (void*) (pointer_sized_int) - comp->getProperties() ["carbonEventRef"].toString().getHexValue64()); -} - -#elif JUCE_MAC - inline void attachWindowHidingHooks (void*, void*, void*) {} - inline void removeWindowHidingHooks (void*) {} -#endif - -} // namespace juce diff --git a/modules/juce_audio_plugin_client/utility/juce_IncludeSystemHeaders.h b/modules/juce_audio_plugin_client/utility/juce_IncludeSystemHeaders.h index 275449e3c0..c7992836b3 100644 --- a/modules/juce_audio_plugin_client/utility/juce_IncludeSystemHeaders.h +++ b/modules/juce_audio_plugin_client/utility/juce_IncludeSystemHeaders.h @@ -34,10 +34,6 @@ #include #include #elif JUCE_MAC || JUCE_IOS - #if ! (defined (JUCE_SUPPORT_CARBON) || defined (__LP64__)) - #define JUCE_SUPPORT_CARBON 1 - #endif - #ifdef __OBJC__ #if JUCE_MAC #include @@ -48,10 +44,6 @@ #endif #endif - #if JUCE_SUPPORT_CARBON && (! JUCE_IOS) - #include - #endif - #include #include #include diff --git a/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm b/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm index 89b1e13705..fe35cc8bed 100644 --- a/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm +++ b/modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm @@ -28,10 +28,6 @@ JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations") #include -#if JUCE_SUPPORT_CARBON - #include -#endif - #include #include @@ -427,7 +423,6 @@ namespace AudioUnitFormatHelpers } //============================================================================== -class AudioUnitPluginWindowCarbon; class AudioUnitPluginWindowCocoa; //============================================================================== @@ -1615,7 +1610,6 @@ public: private: //============================================================================== - friend class AudioUnitPluginWindowCarbon; friend class AudioUnitPluginWindowCocoa; friend class AudioUnitPluginFormat; @@ -2594,162 +2588,12 @@ private: } }; -#if JUCE_SUPPORT_CARBON - -//============================================================================== -class AudioUnitPluginWindowCarbon : public AudioProcessorEditor -{ -public: - AudioUnitPluginWindowCarbon (AudioUnitPluginInstance& p) - : AudioProcessorEditor (&p), - plugin (p), - audioComponent (nullptr), - viewComponent (nullptr) - { - innerWrapper.reset (new InnerWrapperComponent (*this)); - addAndMakeVisible (innerWrapper.get()); - - setOpaque (true); - setVisible (true); - setSize (400, 300); - - UInt32 propertySize; - if (AudioUnitGetPropertyInfo (plugin.audioUnit, kAudioUnitProperty_GetUIComponentList, - kAudioUnitScope_Global, 0, &propertySize, NULL) == noErr - && propertySize > 0) - { - HeapBlock views (propertySize / sizeof (AudioComponentDescription)); - - if (AudioUnitGetProperty (plugin.audioUnit, kAudioUnitProperty_GetUIComponentList, - kAudioUnitScope_Global, 0, &views[0], &propertySize) == noErr) - { - audioComponent = AudioComponentFindNext (nullptr, &views[0]); - } - } - } - - ~AudioUnitPluginWindowCarbon() - { - innerWrapper = nullptr; - - if (isValid()) - plugin.editorBeingDeleted (this); - } - - bool isValid() const noexcept { return audioComponent != nullptr; } - - //============================================================================== - void paint (Graphics& g) override - { - g.fillAll (Colours::black); - } - - void resized() override - { - if (innerWrapper != nullptr) - innerWrapper->setSize (getWidth(), getHeight()); - } - - //============================================================================== - bool keyStateChanged (bool) override { return false; } - bool keyPressed (const KeyPress&) override { return false; } - - //============================================================================== - AudioUnit getAudioUnit() const { return plugin.audioUnit; } - - AudioUnitCarbonView getViewComponent() - { - if (viewComponent == nullptr && audioComponent != nullptr) - AudioComponentInstanceNew (audioComponent, &viewComponent); - - return viewComponent; - } - - void closeViewComponent() - { - if (viewComponent != nullptr) - { - JUCE_AU_LOG ("Closing AU GUI: " + plugin.getName()); - - AudioComponentInstanceDispose (viewComponent); - viewComponent = nullptr; - } - } - -private: - //============================================================================== - AudioUnitPluginInstance& plugin; - AudioComponent audioComponent; - AudioUnitCarbonView viewComponent; - - //============================================================================== - class InnerWrapperComponent : public CarbonViewWrapperComponent - { - public: - InnerWrapperComponent (AudioUnitPluginWindowCarbon& w) : owner (w) {} - - ~InnerWrapperComponent() - { - deleteWindow(); - } - - HIViewRef attachView (WindowRef windowRef, HIViewRef rootView) override - { - JUCE_AU_LOG ("Opening AU GUI: " + owner.plugin.getName()); - - AudioUnitCarbonView carbonView = owner.getViewComponent(); - - if (carbonView == 0) - return 0; - - Float32Point pos = { 0, 0 }; - Float32Point size = { 250, 200 }; - HIViewRef pluginView = 0; - - AudioUnitCarbonViewCreate (carbonView, owner.getAudioUnit(), windowRef, rootView, - &pos, &size, (ControlRef*) &pluginView); - - return pluginView; - } - - void removeView (HIViewRef) override - { - owner.closeViewComponent(); - } - - private: - AudioUnitPluginWindowCarbon& owner; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (InnerWrapperComponent) - }; - - friend class InnerWrapperComponent; - std::unique_ptr innerWrapper; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioUnitPluginWindowCarbon) -}; - -#endif - //============================================================================== AudioProcessorEditor* AudioUnitPluginInstance::createEditor() { std::unique_ptr w (new AudioUnitPluginWindowCocoa (*this, false)); if (! static_cast (w.get())->isValid()) - w.reset(); - - #if JUCE_SUPPORT_CARBON - if (w == nullptr) - { - w.reset (new AudioUnitPluginWindowCarbon (*this)); - - if (! static_cast (w.get())->isValid()) - w.reset(); - } - #endif - - if (w == nullptr) w.reset (new AudioUnitPluginWindowCocoa (*this, true)); // use AUGenericView as a fallback return w.release(); diff --git a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp index 5e8f6a5923..db06c4ddc9 100644 --- a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp +++ b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp @@ -1220,10 +1220,6 @@ struct VSTPluginInstance final : public AudioPluginInstance, wantsMidiMessages = pluginCanDo ("receiveVstMidiEvent") > 0 || isSynthPlugin(); - #if JUCE_MAC && JUCE_SUPPORT_CARBON - usesCocoaNSView = ((unsigned int) pluginCanDo ("hasCockosViewAsConfig") & 0xffff0000ul) == 0xbeef0000ul; - #endif - setLatencySamples (vstEffect->initialDelay); } @@ -1961,7 +1957,6 @@ struct VSTPluginInstance final : public AudioPluginInstance, ModuleHandle::Ptr vstModule; std::unique_ptr extraFunctions; - bool usesCocoaNSView = false; private: //============================================================================== @@ -2732,18 +2727,8 @@ public: #elif JUCE_MAC ignoreUnused (recursiveResize, pluginRefusesToResize, alreadyInside); - #if JUCE_SUPPORT_CARBON - if (! plug.usesCocoaNSView) - { - carbonWrapper.reset (new CarbonWrapperComponent (*this)); - addAndMakeVisible (carbonWrapper.get()); - } - else - #endif - { - cocoaWrapper.reset (new NSViewComponentWithParent (plugin)); - addAndMakeVisible (cocoaWrapper.get()); - } + cocoaWrapper.reset (new NSViewComponentWithParent (plugin)); + addAndMakeVisible (cocoaWrapper.get()); #endif activeVSTWindows.add (this); @@ -2769,9 +2754,6 @@ public: closePluginWindow(); #if JUCE_MAC - #if JUCE_SUPPORT_CARBON - carbonWrapper.reset(); - #endif cocoaWrapper.reset(); #endif @@ -2800,11 +2782,6 @@ public: setSize (correctedBounds.getWidth(), correctedBounds.getHeight()); #if JUCE_MAC - #if JUCE_SUPPORT_CARBON - if (carbonWrapper != nullptr) - carbonWrapper->setSize (correctedBounds.getWidth(), correctedBounds.getHeight()); - #endif - if (cocoaWrapper != nullptr) cocoaWrapper->setSize (correctedBounds.getWidth(), correctedBounds.getHeight()); #endif @@ -2820,25 +2797,19 @@ public: void visibilityChanged() override { - if (cocoaWrapper != nullptr) - { - if (isShowing()) - openPluginWindow ((NSView*) cocoaWrapper->getView()); - else - closePluginWindow(); - } + if (isShowing()) + openPluginWindow ((NSView*) cocoaWrapper->getView()); + else + closePluginWindow(); } void childBoundsChanged (Component*) override { - if (cocoaWrapper != nullptr) - { - auto w = cocoaWrapper->getWidth(); - auto h = cocoaWrapper->getHeight(); + auto w = cocoaWrapper->getWidth(); + auto h = cocoaWrapper->getHeight(); - if (w != getWidth() || h != getHeight()) - setSize (w, h); - } + if (w != getWidth() || h != getHeight()) + setSize (w, h); } void parentHierarchyChanged() override { visibilityChanged(); } @@ -3317,86 +3288,6 @@ private: //============================================================================== #if JUCE_MAC - #if JUCE_SUPPORT_CARBON - struct CarbonWrapperComponent : public CarbonViewWrapperComponent - { - CarbonWrapperComponent (VSTPluginWindow& w) : owner (w) - { - keepPluginWindowWhenHidden = w.shouldAvoidDeletingWindow(); - setRepaintsChildHIViewWhenCreated (w.shouldRepaintCarbonWindowWhenCreated()); - } - - ~CarbonWrapperComponent() - { - deleteWindow(); - } - - HIViewRef attachView (WindowRef windowRef, HIViewRef /*rootView*/) override - { - owner.openPluginWindow (windowRef); - return {}; - } - - void removeView (HIViewRef) override - { - if (owner.isOpen) - { - owner.isOpen = false; - owner.dispatch (Vst2::effEditClose, 0, 0, 0, 0); - owner.dispatch (Vst2::effEditSleep, 0, 0, 0, 0); - } - } - - bool getEmbeddedViewSize (int& w, int& h) override - { - Vst2::ERect* rect = nullptr; - owner.dispatch (Vst2::effEditGetRect, 0, 0, &rect, 0); - w = rect->right - rect->left; - h = rect->bottom - rect->top; - return true; - } - - void handleMouseDown (int x, int y) override - { - if (! alreadyInside) - { - alreadyInside = true; - getTopLevelComponent()->toFront (true); - owner.dispatch (Vst2::effEditMouse, x, y, 0, 0); - alreadyInside = false; - } - else - { - PostEvent (::mouseDown, 0); - } - } - - void handlePaint() override - { - if (auto* peer = getPeer()) - { - auto pos = peer->globalToLocal (getScreenPosition()); - Vst2::ERect r; - r.left = (int16) pos.getX(); - r.top = (int16) pos.getY(); - r.right = (int16) (r.left + getWidth()); - r.bottom = (int16) (r.top + getHeight()); - - owner.dispatch (Vst2::effEditDraw, 0, 0, &r, 0); - } - } - - private: - VSTPluginWindow& owner; - bool alreadyInside = false; - - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CarbonWrapperComponent) - }; - - friend struct CarbonWrapperComponent; - std::unique_ptr carbonWrapper; - #endif - std::unique_ptr cocoaWrapper; void resized() override diff --git a/modules/juce_audio_processors/juce_audio_processors.cpp b/modules/juce_audio_processors/juce_audio_processors.cpp index 80914cc0ab..98abe6c2b7 100644 --- a/modules/juce_audio_processors/juce_audio_processors.cpp +++ b/modules/juce_audio_processors/juce_audio_processors.cpp @@ -36,13 +36,6 @@ #include //============================================================================== -#if JUCE_MAC - #if JUCE_SUPPORT_CARBON && (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_AU) - #include - #include - #endif -#endif - #if (JUCE_PLUGINHOST_VST || JUCE_PLUGINHOST_VST3) && (JUCE_LINUX || JUCE_BSD) #include #include diff --git a/modules/juce_audio_processors/juce_audio_processors.h b/modules/juce_audio_processors/juce_audio_processors.h index 553e3d24b7..101a659e94 100644 --- a/modules/juce_audio_processors/juce_audio_processors.h +++ b/modules/juce_audio_processors/juce_audio_processors.h @@ -107,10 +107,6 @@ // #error "You need to set either the JUCE_PLUGINHOST_AU and/or JUCE_PLUGINHOST_VST and/or JUCE_PLUGINHOST_VST3 and/or JUCE_PLUGINHOST_LADSPA flags if you're using this module!" #endif -#if ! (defined (JUCE_SUPPORT_CARBON) || JUCE_64BIT || JUCE_IOS) - #define JUCE_SUPPORT_CARBON 1 -#endif - #ifndef JUCE_SUPPORT_LEGACY_AUDIOPROCESSOR #define JUCE_SUPPORT_LEGACY_AUDIOPROCESSOR 1 #endif diff --git a/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h b/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h index a272fee762..260669c8d2 100644 --- a/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h +++ b/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h @@ -30,7 +30,7 @@ namespace Steinberg #endif //============================================================================== -#if (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE) || (defined(AUDIOCOMPONENT_NOCARBONINSTANCES) && AUDIOCOMPONENT_NOCARBONINSTANCES) +#if TARGET_OS_IPHONE struct OpaqueAudioComponentInstance; typedef struct OpaqueAudioComponentInstance* AudioComponentInstance; #else diff --git a/modules/juce_core/files/juce_File.h b/modules/juce_core/files/juce_File.h index 8a82a4a833..baa816c8be 100644 --- a/modules/juce_core/files/juce_File.h +++ b/modules/juce_core/files/juce_File.h @@ -20,17 +20,13 @@ ============================================================================== */ -#if ! defined (DOXYGEN) && (JUCE_MAC || JUCE_IOS) - #if __LP64__ - using OSType = unsigned int; - #else - using OSType = unsigned long; - #endif -#endif - namespace juce { +#if ! DOXYGEN && (JUCE_MAC || JUCE_IOS) + using OSType = unsigned int; +#endif + //============================================================================== /** Represents a local file or directory. diff --git a/modules/juce_gui_basics/juce_gui_basics.cpp b/modules/juce_gui_basics/juce_gui_basics.cpp index d9697568b7..0493ed43a2 100644 --- a/modules/juce_gui_basics/juce_gui_basics.cpp +++ b/modules/juce_gui_basics/juce_gui_basics.cpp @@ -44,10 +44,6 @@ #import #import - #if JUCE_SUPPORT_CARBON - #import // still needed for SetSystemUIMode() - #endif - #elif JUCE_IOS #if JUCE_PUSH_NOTIFICATIONS && defined (__IPHONE_10_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0 #import diff --git a/modules/juce_gui_basics/juce_gui_basics.h b/modules/juce_gui_basics/juce_gui_basics.h index 57d10f3ee1..00981d387b 100644 --- a/modules/juce_gui_basics/juce_gui_basics.h +++ b/modules/juce_gui_basics/juce_gui_basics.h @@ -36,7 +36,7 @@ minimumCppStandard: 14 dependencies: juce_graphics juce_data_structures - OSXFrameworks: Carbon Cocoa QuartzCore + OSXFrameworks: Cocoa QuartzCore WeakOSXFrameworks: Metal MetalKit iOSFrameworks: CoreServices UIKit WeakiOSFrameworks: Metal MetalKit diff --git a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm index 783fc9fe09..5c213a0c47 100644 --- a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm +++ b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm @@ -1385,35 +1385,7 @@ public: // has a Z label). Therefore, we need to query the current keyboard // layout to figure out what character the key would have produced // if the shift key was not pressed - String unmodified; - - #if JUCE_SUPPORT_CARBON - if (auto currentKeyboard = CFUniquePtr (TISCopyCurrentKeyboardInputSource())) - { - if (auto layoutData = (CFDataRef) TISGetInputSourceProperty (currentKeyboard, - kTISPropertyUnicodeKeyLayoutData)) - { - if (auto* layoutPtr = (const UCKeyboardLayout*) CFDataGetBytePtr (layoutData)) - { - UInt32 keysDown = 0; - UniChar buffer[4]; - UniCharCount actual; - - if (UCKeyTranslate (layoutPtr, [ev keyCode], kUCKeyActionDown, 0, LMGetKbdType(), - kUCKeyTranslateNoDeadKeysBit, &keysDown, sizeof (buffer) / sizeof (UniChar), - &actual, buffer) == 0) - unmodified = String (CharPointer_UTF16 (reinterpret_cast (buffer)), 4); - } - } - } - - // did the above layout conversion fail - if (unmodified.isEmpty()) - #endif - { - unmodified = nsStringToJuce ([ev charactersIgnoringModifiers]); - } - + String unmodified = nsStringToJuce ([ev charactersIgnoringModifiers]); auto keyCode = (int) unmodified[0]; if (keyCode == 0x19) // (backwards-tab) diff --git a/modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h b/modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h deleted file mode 100644 index bd8ea3c2e3..0000000000 --- a/modules/juce_gui_extra/native/juce_mac_CarbonViewWrapperComponent.h +++ /dev/null @@ -1,339 +0,0 @@ -/* - ============================================================================== - - This file is part of the JUCE 7 technical preview. - Copyright (c) 2022 - Raw Material Software Limited - - You may use this code under the terms of the GPL v3 - (see www.gnu.org/licenses). - - For the technical preview this file cannot be licensed commercially. - - JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER - EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE - DISCLAIMED. - - ============================================================================== -*/ - -namespace juce -{ - -//============================================================================== -/** - Creates a floating carbon window that can be used to hold a carbon UI. - - This is a handy class that's designed to be inlined where needed, e.g. - in the audio plugin hosting code. - - @tags{GUI} -*/ -class CarbonViewWrapperComponent : public Component, - public ComponentMovementWatcher, - public Timer -{ -public: - CarbonViewWrapperComponent() - : ComponentMovementWatcher (this), - carbonWindow (nil), - keepPluginWindowWhenHidden (false), - wrapperWindow (nil), - embeddedView (0), - recursiveResize (false), - repaintChildOnCreation (true) - { - } - - ~CarbonViewWrapperComponent() - { - jassert (embeddedView == 0); // must call deleteWindow() in the subclass's destructor! - } - - virtual HIViewRef attachView (WindowRef windowRef, HIViewRef rootView) = 0; - virtual void removeView (HIViewRef embeddedView) = 0; - virtual void handleMouseDown (int, int) {} - virtual void handlePaint() {} - - virtual bool getEmbeddedViewSize (int& w, int& h) - { - if (embeddedView == 0) - return false; - - HIRect bounds; - HIViewGetBounds (embeddedView, &bounds); - w = jmax (1, roundToInt (bounds.size.width)); - h = jmax (1, roundToInt (bounds.size.height)); - return true; - } - - void createWindow() - { - if (wrapperWindow == nil) - { - Rect r; - r.left = (short) getScreenX(); - r.top = (short) getScreenY(); - r.right = (short) (r.left + getWidth()); - r.bottom = (short) (r.top + getHeight()); - - CreateNewWindow (kDocumentWindowClass, - (WindowAttributes) (kWindowStandardHandlerAttribute | kWindowCompositingAttribute - | kWindowNoShadowAttribute | kWindowNoTitleBarAttribute), - &r, &wrapperWindow); - - jassert (wrapperWindow != 0); - if (wrapperWindow == 0) - return; - - carbonWindow = [[NSWindow alloc] initWithWindowRef: wrapperWindow]; - - [getOwnerWindow() addChildWindow: carbonWindow - ordered: NSWindowAbove]; - - embeddedView = attachView (wrapperWindow, HIViewGetRoot (wrapperWindow)); - - // Check for the plugin creating its own floating window, and if there is one, - // we need to reparent it to make it visible.. - if (carbonWindow.childWindows.count > 0) - if (NSWindow* floatingChildWindow = [[carbonWindow childWindows] objectAtIndex: 0]) - [getOwnerWindow() addChildWindow: floatingChildWindow - ordered: NSWindowAbove]; - - EventTypeSpec windowEventTypes[] = - { - { kEventClassWindow, kEventWindowGetClickActivation }, - { kEventClassWindow, kEventWindowHandleDeactivate }, - { kEventClassWindow, kEventWindowBoundsChanging }, - { kEventClassMouse, kEventMouseDown }, - { kEventClassMouse, kEventMouseMoved }, - { kEventClassMouse, kEventMouseDragged }, - { kEventClassMouse, kEventMouseUp }, - { kEventClassWindow, kEventWindowDrawContent }, - { kEventClassWindow, kEventWindowShown }, - { kEventClassWindow, kEventWindowHidden } - }; - - EventHandlerUPP upp = NewEventHandlerUPP (carbonEventCallback); - InstallWindowEventHandler (wrapperWindow, upp, - sizeof (windowEventTypes) / sizeof (EventTypeSpec), - windowEventTypes, this, &eventHandlerRef); - - setOurSizeToEmbeddedViewSize(); - setEmbeddedWindowToOurSize(); - - creationTime = Time::getCurrentTime(); - } - } - - void deleteWindow() - { - removeView (embeddedView); - embeddedView = 0; - - if (wrapperWindow != nil) - { - NSWindow* ownerWindow = getOwnerWindow(); - - if ([[ownerWindow childWindows] count] > 0) - { - [ownerWindow removeChildWindow: carbonWindow]; - [carbonWindow close]; - } - - RemoveEventHandler (eventHandlerRef); - DisposeWindow (wrapperWindow); - wrapperWindow = nil; - } - } - - //============================================================================== - void setOurSizeToEmbeddedViewSize() - { - int w, h; - if (getEmbeddedViewSize (w, h)) - { - if (w != getWidth() || h != getHeight()) - { - startTimer (50); - setSize (w, h); - - if (Component* p = getParentComponent()) - p->setSize (w, h); - } - else - { - startTimer (jlimit (50, 500, getTimerInterval() + 20)); - } - } - else - { - stopTimer(); - } - } - - void setEmbeddedWindowToOurSize() - { - if (! recursiveResize) - { - recursiveResize = true; - - if (embeddedView != 0) - { - HIRect r; - r.origin.x = 0; - r.origin.y = 0; - r.size.width = (float) getWidth(); - r.size.height = (float) getHeight(); - HIViewSetFrame (embeddedView, &r); - } - - if (wrapperWindow != nil) - { - jassert (getTopLevelComponent()->getDesktopScaleFactor() == 1.0f); - Rectangle screenBounds (getScreenBounds() * Desktop::getInstance().getGlobalScaleFactor()); - - Rect wr; - wr.left = (short) screenBounds.getX(); - wr.top = (short) screenBounds.getY(); - wr.right = (short) screenBounds.getRight(); - wr.bottom = (short) screenBounds.getBottom(); - - SetWindowBounds (wrapperWindow, kWindowContentRgn, &wr); - - // This group stuff is mainly a workaround for Mackie plugins like FinalMix.. - WindowGroupRef group = GetWindowGroup (wrapperWindow); - WindowRef attachedWindow; - - if (GetIndexedWindow (group, 2, kWindowGroupContentsReturnWindows, &attachedWindow) == noErr) - { - SelectWindow (attachedWindow); - ActivateWindow (attachedWindow, TRUE); - HideWindow (wrapperWindow); - } - - ShowWindow (wrapperWindow); - } - - recursiveResize = false; - } - } - - void componentMovedOrResized (bool /*wasMoved*/, bool /*wasResized*/) override - { - setEmbeddedWindowToOurSize(); - } - - // (overridden to intercept movements of the top-level window) - void componentMovedOrResized (Component& component, bool wasMoved, bool wasResized) override - { - ComponentMovementWatcher::componentMovedOrResized (component, wasMoved, wasResized); - - if (&component == getTopLevelComponent()) - setEmbeddedWindowToOurSize(); - } - - void componentPeerChanged() override - { - deleteWindow(); - createWindow(); - } - - void componentVisibilityChanged() override - { - if (isShowing()) - createWindow(); - else if (! keepPluginWindowWhenHidden) - deleteWindow(); - - setEmbeddedWindowToOurSize(); - } - - static void recursiveHIViewRepaint (HIViewRef view) - { - HIViewSetNeedsDisplay (view, true); - HIViewRef child = HIViewGetFirstSubview (view); - - while (child != 0) - { - recursiveHIViewRepaint (child); - child = HIViewGetNextView (child); - } - } - - void timerCallback() override - { - if (isShowing()) - { - setOurSizeToEmbeddedViewSize(); - - // To avoid strange overpainting problems when the UI is first opened, we'll - // repaint it a few times during the first second that it's on-screen.. - if (repaintChildOnCreation && (Time::getCurrentTime() - creationTime).inMilliseconds() < 1000) - recursiveHIViewRepaint (HIViewGetRoot (wrapperWindow)); - } - } - - void setRepaintsChildHIViewWhenCreated (bool b) noexcept - { - repaintChildOnCreation = b; - } - - OSStatus carbonEventHandler (EventHandlerCallRef /*nextHandlerRef*/, EventRef event) - { - switch (GetEventKind (event)) - { - case kEventWindowHandleDeactivate: - ActivateWindow (wrapperWindow, TRUE); - return noErr; - - case kEventWindowGetClickActivation: - { - getTopLevelComponent()->toFront (false); - [carbonWindow makeKeyAndOrderFront: nil]; - - ClickActivationResult howToHandleClick = kActivateAndHandleClick; - - SetEventParameter (event, kEventParamClickActivation, typeClickActivationResult, - sizeof (ClickActivationResult), &howToHandleClick); - - if (embeddedView != 0) - HIViewSetNeedsDisplay (embeddedView, true); - - return noErr; - } - } - - return eventNotHandledErr; - } - - static pascal OSStatus carbonEventCallback (EventHandlerCallRef nextHandlerRef, EventRef event, void* userData) - { - return ((CarbonViewWrapperComponent*) userData)->carbonEventHandler (nextHandlerRef, event); - } - - NSWindow* carbonWindow; - bool keepPluginWindowWhenHidden; - -protected: - WindowRef wrapperWindow; - HIViewRef embeddedView; - bool recursiveResize, repaintChildOnCreation; - Time creationTime; - - EventHandlerRef eventHandlerRef; - - NSWindow* getOwnerWindow() const { return [((NSView*) getWindowHandle()) window]; } -}; - -//============================================================================== -// Non-public utility function that hosts can use if they need to get hold of the -// internals of a carbon wrapper window.. -void* getCarbonWindow (Component* possibleCarbonComponent) -{ - if (CarbonViewWrapperComponent* cv = dynamic_cast (possibleCarbonComponent)) - return cv->carbonWindow; - - return nullptr; -} - -} // namespace juce diff --git a/modules/juce_video/native/juce_mac_Video.h b/modules/juce_video/native/juce_mac_Video.h index 7745355515..f43a8bc8c6 100644 --- a/modules/juce_video/native/juce_mac_Video.h +++ b/modules/juce_video/native/juce_mac_Video.h @@ -577,18 +577,11 @@ private: PlayerController (Pimpl& ownerToUse, bool useNativeControlsIfAvailable) : PlayerControllerBase (ownerToUse, useNativeControlsIfAvailable) { - #if JUCE_32BIT - // 32-bit builds don't have AVPlayerView, so need to use a layer - useNativeControls = false; - #endif - wrappedPlayer = [&]() -> std::unique_ptr { - #if ! JUCE_32BIT if (@available (macOS 10.9, *)) if (useNativeControls) return std::make_unique(); - #endif return std::make_unique (); }(); @@ -658,7 +651,6 @@ private: NSUniquePtr playerLayer { [[AVPlayerLayer alloc] init] }; }; - #if ! JUCE_32BIT class API_AVAILABLE (macos (10.9)) WrappedPlayerView : public WrappedPlayer { public: @@ -670,7 +662,6 @@ private: private: NSUniquePtr playerView { [[AVPlayerView alloc] init] }; }; - #endif std::unique_ptr wrappedPlayer; };