Browse Source

macOS/iOS: Fix unguarded availability warnings

pull/22/head
Tom Poole 3 years ago
parent
commit
eda5c696e5
27 changed files with 220 additions and 177 deletions
  1. +4
    -4
      examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj
  2. +4
    -4
      examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj
  3. +4
    -4
      extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj
  4. +4
    -4
      extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj
  5. +3
    -1
      extras/Build/CMake/JUCEHelperTargets.cmake
  6. +4
    -4
      extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj
  7. +1
    -0
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h
  8. +3
    -0
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp
  9. +1
    -2
      extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h
  10. +4
    -4
      extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj
  11. +2
    -10
      modules/juce_audio_devices/native/juce_mac_CoreMidi.mm
  12. +25
    -13
      modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm
  13. +2
    -2
      modules/juce_audio_utils/native/juce_mac_BluetoothMidiDevicePairingDialogue.mm
  14. +3
    -2
      modules/juce_core/native/juce_mac_Files.mm
  15. +1
    -1
      modules/juce_core/native/juce_mac_Network.mm
  16. +1
    -1
      modules/juce_core/native/juce_mac_ObjCHelpers.h
  17. +13
    -4
      modules/juce_events/native/juce_ScopedLowPowerModeDisabler.cpp
  18. +14
    -28
      modules/juce_gui_basics/native/accessibility/juce_ios_Accessibility.mm
  19. +27
    -15
      modules/juce_gui_basics/native/accessibility/juce_mac_Accessibility.mm
  20. +6
    -3
      modules/juce_gui_basics/native/juce_mac_FileChooser.mm
  21. +7
    -4
      modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm
  22. +3
    -3
      modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp
  23. +5
    -6
      modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm
  24. +0
    -4
      modules/juce_video/capture/juce_CameraDevice.cpp
  25. +2
    -1
      modules/juce_video/native/juce_ios_CameraDevice.h
  26. +2
    -4
      modules/juce_video/native/juce_mac_CameraDevice.h
  27. +75
    -49
      modules/juce_video/native/juce_mac_Video.h

+ 4
- 4
examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj View File

@@ -561,8 +561,8 @@
LLVM_LTO = YES; LLVM_LTO = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11; MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner; PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner;
PRODUCT_NAME = "DemoRunner"; PRODUCT_NAME = "DemoRunner";
USE_HEADERMAP = NO; USE_HEADERMAP = NO;
@@ -642,8 +642,8 @@
INSTALL_PATH = "$(HOME)/Applications"; INSTALL_PATH = "$(HOME)/Applications";
MACOSX_DEPLOYMENT_TARGET = 10.11; MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner; PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner;
PRODUCT_NAME = "DemoRunner"; PRODUCT_NAME = "DemoRunner";
USE_HEADERMAP = NO; USE_HEADERMAP = NO;


+ 4
- 4
examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj View File

@@ -564,8 +564,8 @@
INSTALL_PATH = "$(HOME)/Applications"; INSTALL_PATH = "$(HOME)/Applications";
LLVM_LTO = YES; LLVM_LTO = YES;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner; PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner;
PRODUCT_NAME = "DemoRunner"; PRODUCT_NAME = "DemoRunner";
USE_HEADERMAP = NO; USE_HEADERMAP = NO;
@@ -645,8 +645,8 @@
INFOPLIST_PREPROCESS = NO; INFOPLIST_PREPROCESS = NO;
INSTALL_PATH = "$(HOME)/Applications"; INSTALL_PATH = "$(HOME)/Applications";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner; PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner;
PRODUCT_NAME = "DemoRunner"; PRODUCT_NAME = "DemoRunner";
USE_HEADERMAP = NO; USE_HEADERMAP = NO;


+ 4
- 4
extras/AudioPluginHost/Builds/MacOSX/AudioPluginHost.xcodeproj/project.pbxproj View File

@@ -486,8 +486,8 @@
LLVM_LTO = YES; LLVM_LTO = YES;
MACOSX_DEPLOYMENT_TARGET = 10.11; MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost; PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost;
PRODUCT_NAME = "AudioPluginHost"; PRODUCT_NAME = "AudioPluginHost";
USE_HEADERMAP = NO; USE_HEADERMAP = NO;
@@ -615,8 +615,8 @@
INSTALL_PATH = "$(HOME)/Applications"; INSTALL_PATH = "$(HOME)/Applications";
MACOSX_DEPLOYMENT_TARGET = 10.11; MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost; PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost;
PRODUCT_NAME = "AudioPluginHost"; PRODUCT_NAME = "AudioPluginHost";
USE_HEADERMAP = NO; USE_HEADERMAP = NO;


+ 4
- 4
extras/AudioPluginHost/Builds/iOS/AudioPluginHost.xcodeproj/project.pbxproj View File

@@ -494,8 +494,8 @@
INSTALL_PATH = "$(HOME)/Applications"; INSTALL_PATH = "$(HOME)/Applications";
LLVM_LTO = YES; LLVM_LTO = YES;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost; PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost;
PRODUCT_NAME = "Plugin Host"; PRODUCT_NAME = "Plugin Host";
USE_HEADERMAP = NO; USE_HEADERMAP = NO;
@@ -624,8 +624,8 @@
INFOPLIST_PREPROCESS = NO; INFOPLIST_PREPROCESS = NO;
INSTALL_PATH = "$(HOME)/Applications"; INSTALL_PATH = "$(HOME)/Applications";
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost; PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost;
PRODUCT_NAME = "Plugin Host"; PRODUCT_NAME = "Plugin Host";
USE_HEADERMAP = NO; USE_HEADERMAP = NO;


+ 3
- 1
extras/Build/CMake/JUCEHelperTargets.cmake View File

@@ -38,7 +38,9 @@ elseif((CMAKE_CXX_COMPILER_ID STREQUAL "Clang") OR (CMAKE_CXX_COMPILER_ID STREQU
$<$<OR:$<COMPILE_LANGUAGE:CXX>,$<COMPILE_LANGUAGE:OBJCXX>>: $<$<OR:$<COMPILE_LANGUAGE:CXX>,$<COMPILE_LANGUAGE:OBJCXX>>:
-Wzero-as-null-pointer-constant -Wunused-private-field -Wzero-as-null-pointer-constant -Wunused-private-field
-Woverloaded-virtual -Wreorder -Woverloaded-virtual -Wreorder
-Winconsistent-missing-destructor-override>)
-Winconsistent-missing-destructor-override>
$<$<OR:$<COMPILE_LANGUAGE:OBJC>,$<COMPILE_LANGUAGE:OBJCXX>>:
-Wunguarded-availability -Wunguarded-availability-new>)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
target_compile_options(juce_recommended_warning_flags INTERFACE target_compile_options(juce_recommended_warning_flags INTERFACE
-Wall -Wextra -Wpedantic -Wstrict-aliasing -Wuninitialized -Wall -Wextra -Wpedantic -Wstrict-aliasing -Wuninitialized


+ 4
- 4
extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj View File

@@ -1170,8 +1170,8 @@
INSTALL_PATH = "$(HOME)/Applications"; INSTALL_PATH = "$(HOME)/Applications";
MACOSX_DEPLOYMENT_TARGET = 10.12; MACOSX_DEPLOYMENT_TARGET = 10.12;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../Build $(SRCROOT)/../../../../modules"; MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../Build $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
PRODUCT_BUNDLE_IDENTIFIER = com.juce.theprojucer; PRODUCT_BUNDLE_IDENTIFIER = com.juce.theprojucer;
PRODUCT_NAME = "Projucer"; PRODUCT_NAME = "Projucer";
USE_HEADERMAP = NO; USE_HEADERMAP = NO;
@@ -1239,8 +1239,8 @@
INSTALL_PATH = "$(HOME)/Applications"; INSTALL_PATH = "$(HOME)/Applications";
MACOSX_DEPLOYMENT_TARGET = 10.12; MACOSX_DEPLOYMENT_TARGET = 10.12;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../Build $(SRCROOT)/../../../../modules"; MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../Build $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
PRODUCT_BUNDLE_IDENTIFIER = com.juce.theprojucer; PRODUCT_BUNDLE_IDENTIFIER = com.juce.theprojucer;
PRODUCT_NAME = "Projucer"; PRODUCT_NAME = "Projucer";
USE_HEADERMAP = NO; USE_HEADERMAP = NO;


+ 1
- 0
extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h View File

@@ -1577,6 +1577,7 @@ public:
s.set ("GCC_FAST_MATH", "YES"); s.set ("GCC_FAST_MATH", "YES");
auto recommendedWarnings = config.getRecommendedCompilerWarningFlags(); auto recommendedWarnings = config.getRecommendedCompilerWarningFlags();
recommendedWarnings.common.addArray (recommendedWarnings.objc);
recommendedWarnings.cpp.addArray (recommendedWarnings.common); recommendedWarnings.cpp.addArray (recommendedWarnings.common);
struct XcodeWarningFlags struct XcodeWarningFlags


+ 3
- 0
extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp View File

@@ -868,6 +868,9 @@ ProjectExporter::BuildConfiguration::BuildConfiguration (Project& p, const Value
llvmFlags.cpp.addArray ({ llvmFlags.cpp.addArray ({
"-Wunused-private-field", "-Winconsistent-missing-destructor-override" "-Wunused-private-field", "-Winconsistent-missing-destructor-override"
}); });
llvmFlags.objc.addArray ({
"-Wunguarded-availability", "-Wunguarded-availability-new"
});
auto& gccFlags = recommendedCompilerWarningFlags[CompilerNames::gcc] = BuildConfiguration::CompilerWarningFlags::getRecommendedForGCCAndLLVM(); auto& gccFlags = recommendedCompilerWarningFlags[CompilerNames::gcc] = BuildConfiguration::CompilerWarningFlags::getRecommendedForGCCAndLLVM();
gccFlags.common.addArray ({ gccFlags.common.addArray ({


+ 1
- 2
extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.h View File

@@ -289,8 +289,7 @@ public:
return result; return result;
} }
StringArray common;
StringArray cpp;
StringArray common, cpp, objc;
}; };
CompilerWarningFlags getRecommendedCompilerWarningFlags() const; CompilerWarningFlags getRecommendedCompilerWarningFlags() const;


+ 4
- 4
extras/UnitTestRunner/Builds/MacOSX/UnitTestRunner.xcodeproj/project.pbxproj View File

@@ -451,8 +451,8 @@
LLVM_LTO = YES; LLVM_LTO = YES;
MACOSX_DEPLOYMENT_TARGET = 10.10; MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
PRODUCT_BUNDLE_IDENTIFIER = com.juce.UnitTestRunner; PRODUCT_BUNDLE_IDENTIFIER = com.juce.UnitTestRunner;
PRODUCT_NAME = "UnitTestRunner"; PRODUCT_NAME = "UnitTestRunner";
USE_HEADERMAP = NO; USE_HEADERMAP = NO;
@@ -573,8 +573,8 @@
INSTALL_PATH = "/usr/bin"; INSTALL_PATH = "/usr/bin";
MACOSX_DEPLOYMENT_TARGET = 10.10; MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion";
OTHER_CFLAGS = "-Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
OTHER_CPLUSPLUSFLAGS = "-Woverloaded-virtual -Wreorder -Wzero-as-null-pointer-constant -Wunused-private-field -Winconsistent-missing-destructor-override -Wall -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wswitch-enum -Wsign-conversion -Wsign-compare -Wunreachable-code -Wcast-align -Wno-ignored-qualifiers -Wshorten-64-to-32 -Wconversion -Wint-conversion -Wconditional-uninitialized -Wconstant-conversion -Wbool-conversion -Wextra-semi -Wshift-sign-overflow -Wno-missing-field-initializers -Wshadow-all -Wnullable-to-nonnull-conversion -Wunguarded-availability -Wunguarded-availability-new";
PRODUCT_BUNDLE_IDENTIFIER = com.juce.UnitTestRunner; PRODUCT_BUNDLE_IDENTIFIER = com.juce.UnitTestRunner;
PRODUCT_NAME = "UnitTestRunner"; PRODUCT_NAME = "UnitTestRunner";
USE_HEADERMAP = NO; USE_HEADERMAP = NO;


+ 2
- 10
modules/juce_audio_devices/native/juce_mac_CoreMidi.mm View File

@@ -82,10 +82,8 @@ namespace CoreMidiHelpers
struct Sender; struct Sender;
#if JUCE_HAS_NEW_COREMIDI_API #if JUCE_HAS_NEW_COREMIDI_API
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wunguarded-availability", "-Wunguarded-availability-new")
template <> template <>
struct Sender<ImplementationStrategy::onlyNew> : public SenderBase
struct API_AVAILABLE (macos (11.0), ios (14.0)) Sender<ImplementationStrategy::onlyNew> : public SenderBase
{ {
explicit Sender (MIDIEndpointRef ep) explicit Sender (MIDIEndpointRef ep)
: umpConverter (getProtocolForEndpoint (ep)) : umpConverter (getProtocolForEndpoint (ep))
@@ -177,8 +175,6 @@ namespace CoreMidiHelpers
send(); send();
} }
}; };
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
#endif #endif
#if JUCE_HAS_OLD_COREMIDI_API #if JUCE_HAS_OLD_COREMIDI_API
@@ -829,10 +825,8 @@ namespace CoreMidiHelpers
struct CreatorFunctions; struct CreatorFunctions;
#if JUCE_HAS_NEW_COREMIDI_API #if JUCE_HAS_NEW_COREMIDI_API
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wunguarded-availability", "-Wunguarded-availability-new")
template <> template <>
struct CreatorFunctions<ImplementationStrategy::onlyNew>
struct API_AVAILABLE (macos (11.0), ios (14.0)) CreatorFunctions<ImplementationStrategy::onlyNew>
{ {
static OSStatus createInputPort (ump::PacketProtocol protocol, static OSStatus createInputPort (ump::PacketProtocol protocol,
MIDIClientRef client, MIDIClientRef client,
@@ -894,8 +888,6 @@ namespace CoreMidiHelpers
static_cast<MidiPortAndCallback*> (readProcRefCon)->handlePackets (*list); static_cast<MidiPortAndCallback*> (readProcRefCon)->handlePackets (*list);
} }
}; };
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
#endif #endif
#if JUCE_HAS_OLD_COREMIDI_API #if JUCE_HAS_OLD_COREMIDI_API


+ 25
- 13
modules/juce_audio_processors/format_types/juce_AudioUnitPluginFormat.mm View File

@@ -287,7 +287,7 @@ namespace AudioUnitFormatHelpers
NSBundle* bundle = [[NSBundle alloc] initWithPath: (NSString*) fileOrIdentifier.toCFString()]; NSBundle* bundle = [[NSBundle alloc] initWithPath: (NSString*) fileOrIdentifier.toCFString()];
NSArray* audioComponents = [bundle objectForInfoDictionaryKey: @"AudioComponents"]; NSArray* audioComponents = [bundle objectForInfoDictionaryKey: @"AudioComponents"];
NSDictionary* dict = audioComponents[0];
NSDictionary* dict = [audioComponents objectAtIndex: 0];
desc.componentManufacturer = stringToOSType (nsStringToJuce ((NSString*) [dict valueForKey: @"manufacturer"])); desc.componentManufacturer = stringToOSType (nsStringToJuce ((NSString*) [dict valueForKey: @"manufacturer"]));
desc.componentType = stringToOSType (nsStringToJuce ((NSString*) [dict valueForKey: @"type"])); desc.componentType = stringToOSType (nsStringToJuce ((NSString*) [dict valueForKey: @"type"]));
@@ -436,6 +436,14 @@ namespace AudioUnitFormatHelpers
*/ */
std::vector<size_t> channels; std::vector<size_t> channels;
}; };
static bool isPluginAUv3 (const AudioComponentDescription& desc)
{
if (@available (macOS 10.11, *))
return (desc.componentFlags & kAudioComponentFlag_IsV3AudioUnit) != 0;
return false;
}
} }
//============================================================================== //==============================================================================
@@ -656,7 +664,7 @@ public:
AudioComponentGetDescription (auComponent, &componentDesc); AudioComponentGetDescription (auComponent, &componentDesc);
isAUv3 = ((componentDesc.componentFlags & kAudioComponentFlag_IsV3AudioUnit) != 0);
isAUv3 = AudioUnitFormatHelpers::isPluginAUv3 (componentDesc);
wantsMidiMessages = componentDesc.componentType == kAudioUnitType_MusicDevice wantsMidiMessages = componentDesc.componentType == kAudioUnitType_MusicDevice
|| componentDesc.componentType == kAudioUnitType_MusicEffect || componentDesc.componentType == kAudioUnitType_MusicEffect
@@ -2577,7 +2585,10 @@ private:
{ {
const auto viewSize = [&controller] const auto viewSize = [&controller]
{ {
auto size = [controller preferredContentSize];
auto size = CGSizeZero;
if (@available (macOS 10.11, *))
size = [controller preferredContentSize];
if (size.width == 0 || size.height == 0) if (size.width == 0 || size.height == 0)
size = controller.view.frame.size; size = controller.view.frame.size;
@@ -2886,12 +2897,15 @@ void AudioUnitPluginFormat::createPluginInstance (const PluginDescription& desc,
auto callbackBlock = new AUAsyncInitializationCallback (rate, blockSize, std::move (callback)); auto callbackBlock = new AUAsyncInitializationCallback (rate, blockSize, std::move (callback));
if ((componentDesc.componentFlags & kAudioComponentFlag_IsV3AudioUnit) != 0)
if (AudioUnitFormatHelpers::isPluginAUv3 (componentDesc))
{ {
AudioComponentInstantiate (auComponent, kAudioComponentInstantiation_LoadOutOfProcess,
callbackBlock->getBlock());
if (@available (macOS 10.11, *))
{
AudioComponentInstantiate (auComponent, kAudioComponentInstantiation_LoadOutOfProcess,
callbackBlock->getBlock());
return;
return;
}
} }
AudioComponentInstance audioUnit; AudioComponentInstance audioUnit;
@@ -2915,8 +2929,10 @@ bool AudioUnitPluginFormat::requiresUnblockedMessageThreadDuringCreation (const
pluginName, version, manufacturer)) pluginName, version, manufacturer))
{ {
if (AudioComponent auComp = AudioComponentFindNext (nullptr, &componentDesc)) if (AudioComponent auComp = AudioComponentFindNext (nullptr, &componentDesc))
{
if (AudioComponentGetDescription (auComp, &componentDesc) == noErr) if (AudioComponentGetDescription (auComp, &componentDesc) == noErr)
return ((componentDesc.componentFlags & kAudioComponentFlag_IsV3AudioUnit) != 0);
return AudioUnitFormatHelpers::isPluginAUv3 (componentDesc);
}
} }
return false; return false;
@@ -2948,11 +2964,7 @@ StringArray AudioUnitPluginFormat::searchPathsForPlugins (const FileSearchPath&,
|| desc.componentType == kAudioUnitType_Mixer || desc.componentType == kAudioUnitType_Mixer
|| desc.componentType == kAudioUnitType_MIDIProcessor) || desc.componentType == kAudioUnitType_MIDIProcessor)
{ {
ignoreUnused (allowPluginsWhichRequireAsynchronousInstantiation);
const auto isAUv3 = ((desc.componentFlags & kAudioComponentFlag_IsV3AudioUnit) != 0);
if (allowPluginsWhichRequireAsynchronousInstantiation || ! isAUv3)
if (allowPluginsWhichRequireAsynchronousInstantiation || ! AudioUnitFormatHelpers::isPluginAUv3 (desc))
result.add (AudioUnitFormatHelpers::createPluginIdentifier (desc)); result.add (AudioUnitFormatHelpers::createPluginIdentifier (desc));
} }
} }


+ 2
- 2
modules/juce_audio_utils/native/juce_mac_BluetoothMidiDevicePairingDialogue.mm View File

@@ -27,7 +27,7 @@ namespace juce
{ {
//============================================================================== //==============================================================================
class BluetoothMidiPairingWindowClass : public ObjCClass<NSObject>
class API_AVAILABLE (macos (10.11)) BluetoothMidiPairingWindowClass : public ObjCClass<NSObject>
{ {
public: public:
struct Callbacks struct Callbacks
@@ -117,7 +117,7 @@ private:
} }
}; };
class BluetoothMidiSelectorWindowHelper : public DeletedAtShutdown
class API_AVAILABLE (macos (10.11)) BluetoothMidiSelectorWindowHelper : public DeletedAtShutdown
{ {
public: public:
BluetoothMidiSelectorWindowHelper (ModalComponentManager::Callback* exitCallback, BluetoothMidiSelectorWindowHelper (ModalComponentManager::Callback* exitCallback,


+ 3
- 2
modules/juce_core/native/juce_mac_Files.mm View File

@@ -528,8 +528,9 @@ void File::addToDock() const
File File::getContainerForSecurityApplicationGroupIdentifier (const String& appGroup) File File::getContainerForSecurityApplicationGroupIdentifier (const String& appGroup)
{ {
if (auto* url = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier: juceStringToNS (appGroup)])
return File (nsStringToJuce ([url path]));
if (@available (macOS 10.8, *))
if (auto* url = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier: juceStringToNS (appGroup)])
return File (nsStringToJuce ([url path]));
return File(); return File();
} }


+ 1
- 1
modules/juce_core/native/juce_mac_Network.mm View File

@@ -393,7 +393,7 @@ JUCE_END_IGNORE_WARNINGS_GCC_LIKE
#endif #endif
//============================================================================== //==============================================================================
class URLConnectionState : public URLConnectionStateBase
class API_AVAILABLE (macos (10.9)) URLConnectionState : public URLConnectionStateBase
{ {
public: public:
URLConnectionState (NSURLRequest* req, const int maxRedirects) URLConnectionState (NSURLRequest* req, const int maxRedirects)


+ 1
- 1
modules/juce_core/native/juce_mac_ObjCHelpers.h View File

@@ -164,7 +164,7 @@ inline var nsDictionaryToVar (NSDictionary* dictionary)
DynamicObject::Ptr dynamicObject (new DynamicObject()); DynamicObject::Ptr dynamicObject (new DynamicObject());
for (NSString* key in dictionary) for (NSString* key in dictionary)
dynamicObject->setProperty (nsStringToJuce (key), nsObjectToVar (dictionary[key]));
dynamicObject->setProperty (nsStringToJuce (key), nsObjectToVar ([dictionary objectForKey: key]));
return var (dynamicObject.get()); return var (dynamicObject.get());
} }


+ 13
- 4
modules/juce_events/native/juce_ScopedLowPowerModeDisabler.cpp View File

@@ -28,12 +28,21 @@ namespace juce
class ScopedLowPowerModeDisabler::Pimpl class ScopedLowPowerModeDisabler::Pimpl
{ {
public: public:
Pimpl() = default;
~Pimpl() { [[NSProcessInfo processInfo] endActivity: activity]; }
Pimpl()
{
if (@available (macOS 10.9, *))
activity = [[NSProcessInfo processInfo] beginActivityWithOptions: NSActivityUserInitiatedAllowingIdleSystemSleep
reason: @"App must remain in high-power mode"];
}
~Pimpl()
{
if (@available (macOS 10.9, *))
[[NSProcessInfo processInfo] endActivity: activity];
}
private: private:
id activity { [[NSProcessInfo processInfo] beginActivityWithOptions: NSActivityUserInitiatedAllowingIdleSystemSleep
reason: @"App must remain in high-power mode"] };
id activity;
JUCE_DECLARE_NON_COPYABLE (Pimpl) JUCE_DECLARE_NON_COPYABLE (Pimpl)
JUCE_DECLARE_NON_MOVEABLE (Pimpl) JUCE_DECLARE_NON_MOVEABLE (Pimpl)


+ 14
- 28
modules/juce_gui_basics/native/accessibility/juce_ios_Accessibility.mm View File

@@ -41,31 +41,6 @@ namespace juce
#define JUCE_IOS_CONTAINER_API_AVAILABLE 1 #define JUCE_IOS_CONTAINER_API_AVAILABLE 1
#endif #endif
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wunguarded-availability", "-Wunguarded-availability-new")
constexpr auto juceUIAccessibilityContainerTypeNone =
#if JUCE_IOS_CONTAINER_API_AVAILABLE
UIAccessibilityContainerTypeNone;
#else
0;
#endif
constexpr auto juceUIAccessibilityContainerTypeDataTable =
#if JUCE_IOS_CONTAINER_API_AVAILABLE
UIAccessibilityContainerTypeDataTable;
#else
1;
#endif
constexpr auto juceUIAccessibilityContainerTypeList =
#if JUCE_IOS_CONTAINER_API_AVAILABLE
UIAccessibilityContainerTypeList;
#else
2;
#endif
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
#define JUCE_NATIVE_ACCESSIBILITY_INCLUDED 1 #define JUCE_NATIVE_ACCESSIBILITY_INCLUDED 1
//============================================================================== //==============================================================================
@@ -164,7 +139,12 @@ private:
if (auto* handler = getHandler (self)) if (auto* handler = getHandler (self))
{ {
if (handler->getTableInterface() != nullptr) if (handler->getTableInterface() != nullptr)
return juceUIAccessibilityContainerTypeDataTable;
{
if (@available (iOS 11.0, *))
return UIAccessibilityContainerTypeDataTable;
return 1; // UIAccessibilityContainerTypeDataTable
}
const auto role = handler->getRole(); const auto role = handler->getRole();
@@ -172,11 +152,17 @@ private:
|| role == AccessibilityRole::list || role == AccessibilityRole::list
|| role == AccessibilityRole::tree) || role == AccessibilityRole::tree)
{ {
return juceUIAccessibilityContainerTypeList;
if (@available (iOS 11.0, *))
return UIAccessibilityContainerTypeList;
return 2; // UIAccessibilityContainerTypeList
} }
} }
return juceUIAccessibilityContainerTypeNone;
if (@available (iOS 11.0, *))
return UIAccessibilityContainerTypeNone;
return 0; // UIAccessibilityContainerTypeNone
} }
}; };


+ 27
- 15
modules/juce_gui_basics/native/accessibility/juce_mac_Accessibility.mm View File

@@ -23,6 +23,7 @@
============================================================================== ==============================================================================
*/ */
API_AVAILABLE (macos (10.10))
static void juceFreeAccessibilityPlatformSpecificData (NSAccessibilityElement<NSAccessibility>*) {} static void juceFreeAccessibilityPlatformSpecificData (NSAccessibilityElement<NSAccessibility>*) {}
namespace juce namespace juce
@@ -35,16 +36,17 @@ namespace juce
#define JUCE_NATIVE_ACCESSIBILITY_INCLUDED 1 #define JUCE_NATIVE_ACCESSIBILITY_INCLUDED 1
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wunguarded-availability", "-Wunguarded-availability-new")
//============================================================================== //==============================================================================
class AccessibilityHandler::AccessibilityNativeImpl class AccessibilityHandler::AccessibilityNativeImpl
{ {
public: public:
explicit AccessibilityNativeImpl (AccessibilityHandler& handler) explicit AccessibilityNativeImpl (AccessibilityHandler& handler)
: accessibilityElement (AccessibilityElement::create (handler))
{}
{
if (@available (macOS 10.10, *))
accessibilityElement = AccessibilityElement::create (handler);
}
API_AVAILABLE (macos (10.10))
NSAccessibilityElement<NSAccessibility>* getAccessibilityElement() const noexcept NSAccessibilityElement<NSAccessibility>* getAccessibilityElement() const noexcept
{ {
return accessibilityElement.get(); return accessibilityElement.get();
@@ -52,7 +54,7 @@ public:
private: private:
//============================================================================== //==============================================================================
class AccessibilityElement : public AccessibleObjCClass<NSAccessibilityElement<NSAccessibility>>
class API_AVAILABLE (macos (10.10)) AccessibilityElement : public AccessibleObjCClass<NSAccessibilityElement<NSAccessibility>>
{ {
public: public:
static Holder create (AccessibilityHandler& handler) static Holder create (AccessibilityHandler& handler)
@@ -830,6 +832,7 @@ private:
}; };
//============================================================================== //==============================================================================
API_AVAILABLE (macos (10.10))
AccessibilityElement::Holder accessibilityElement; AccessibilityElement::Holder accessibilityElement;
//============================================================================== //==============================================================================
@@ -839,7 +842,10 @@ private:
//============================================================================== //==============================================================================
AccessibilityNativeHandle* AccessibilityHandler::getNativeImplementation() const AccessibilityNativeHandle* AccessibilityHandler::getNativeImplementation() const
{ {
return (AccessibilityNativeHandle*) nativeImpl->getAccessibilityElement();
if (@available (macOS 10.10, *))
return (AccessibilityNativeHandle*) nativeImpl->getAccessibilityElement();
return nullptr;
} }
static bool areAnyAccessibilityClientsActive() static bool areAnyAccessibilityClientsActive()
@@ -873,12 +879,15 @@ static void sendHandlerNotification (const AccessibilityHandler& handler,
if (! areAnyAccessibilityClientsActive() || notification == NSAccessibilityNotificationName{}) if (! areAnyAccessibilityClientsActive() || notification == NSAccessibilityNotificationName{})
return; return;
if (id accessibilityElement = (id) handler.getNativeImplementation())
if (@available (macOS 10.9, *))
{ {
sendAccessibilityEvent (accessibilityElement, notification,
(notification == NSAccessibilityLayoutChangedNotification
? @{ NSAccessibilityUIElementsKey: @[ accessibilityElement ] }
: nil));
if (id accessibilityElement = (id) handler.getNativeImplementation())
{
sendAccessibilityEvent (accessibilityElement, notification,
(notification == NSAccessibilityLayoutChangedNotification
? @{ NSAccessibilityUIElementsKey: @[ accessibilityElement ] }
: nil));
}
} }
} }
@@ -937,10 +946,13 @@ void AccessibilityHandler::postAnnouncement (const String& announcementString, A
if (! areAnyAccessibilityClientsActive()) if (! areAnyAccessibilityClientsActive())
return; return;
if (@available (macOS 10.10, *))
{
if (@available (macOS 10.9, *))
{
auto nsPriority = [priority] auto nsPriority = [priority]
{ {
// The below doesn't get noticed by the @available check above
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wunguarded-availability")
switch (priority) switch (priority)
{ {
case AnnouncementPriority::low: return NSAccessibilityPriorityLow; case AnnouncementPriority::low: return NSAccessibilityPriorityLow;
@@ -950,6 +962,8 @@ void AccessibilityHandler::postAnnouncement (const String& announcementString, A
jassertfalse; jassertfalse;
return NSAccessibilityPriorityLow; return NSAccessibilityPriorityLow;
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
}(); }();
sendAccessibilityEvent ((id) [NSApp mainWindow], sendAccessibilityEvent ((id) [NSApp mainWindow],
@@ -959,6 +973,4 @@ void AccessibilityHandler::postAnnouncement (const String& announcementString, A
} }
} }
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
} // namespace juce } // namespace juce

+ 6
- 3
modules/juce_gui_basics/native/juce_mac_FileChooser.mm View File

@@ -112,10 +112,13 @@ public:
preview->addToDesktop (0, (void*) nsViewPreview); preview->addToDesktop (0, (void*) nsViewPreview);
preview->setVisible (true); preview->setVisible (true);
if (! isSave)
if (@available (macOS 10.11, *))
{ {
auto* openPanel = static_cast<NSOpenPanel*> (panel);
[openPanel setAccessoryViewDisclosed: YES];
if (! isSave)
{
auto* openPanel = static_cast<NSOpenPanel*> (panel);
[openPanel setAccessoryViewDisclosed: YES];
}
} }
} }


+ 7
- 4
modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm View File

@@ -1789,10 +1789,13 @@ private:
void setFullScreenSizeConstraints (const ComponentBoundsConstrainer& c) void setFullScreenSizeConstraints (const ComponentBoundsConstrainer& c)
{ {
const auto minSize = NSMakeSize (static_cast<float> (c.getMinimumWidth()),
0.0f);
[window setMinFullScreenContentSize: minSize];
[window setMaxFullScreenContentSize: NSMakeSize (100000, 100000)];
if (@available (macOS 10.11, *))
{
const auto minSize = NSMakeSize (static_cast<float> (c.getMinimumWidth()),
0.0f);
[window setMinFullScreenContentSize: minSize];
[window setMaxFullScreenContentSize: NSMakeSize (100000, 100000)];
}
} }
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NSViewComponentPeer) JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (NSViewComponentPeer)


+ 3
- 3
modules/juce_gui_extra/native/juce_mac_SystemTrayIcon.cpp View File

@@ -26,7 +26,7 @@
namespace juce namespace juce
{ {
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wunguarded-availability", "-Wunguarded-availability-new", "-Wdeprecated-declarations")
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations")
extern NSMenu* createNSMenu (const PopupMenu&, const String& name, int topLevelMenuId, extern NSMenu* createNSMenu (const PopupMenu&, const String& name, int topLevelMenuId,
int topLevelIndex, bool addDelegate); int topLevelIndex, bool addDelegate);
@@ -87,7 +87,7 @@ struct StatusItemContainer : public Timer
}; };
//============================================================================== //==============================================================================
struct ButtonBasedStatusItem : public StatusItemContainer
struct API_AVAILABLE (macos (10.10)) ButtonBasedStatusItem : public StatusItemContainer
{ {
//============================================================================== //==============================================================================
ButtonBasedStatusItem (SystemTrayIconComponent& iconComp, const Image& im) ButtonBasedStatusItem (SystemTrayIconComponent& iconComp, const Image& im)
@@ -384,7 +384,7 @@ public:
//============================================================================== //==============================================================================
Pimpl (SystemTrayIconComponent& iconComp, const Image& im) Pimpl (SystemTrayIconComponent& iconComp, const Image& im)
{ {
if (std::floor (NSFoundationVersionNumber) > NSFoundationVersionNumber10_10)
if (@available (macOS 10.10, *))
statusItemHolder = std::make_unique<ButtonBasedStatusItem> (iconComp, im); statusItemHolder = std::make_unique<ButtonBasedStatusItem> (iconComp, im);
else else
statusItemHolder = std::make_unique<ViewBasedStatusItem> (iconComp, im); statusItemHolder = std::make_unique<ViewBasedStatusItem> (iconComp, im);


+ 5
- 6
modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm View File

@@ -32,7 +32,7 @@ namespace juce
static NSURL* appendParametersToFileURL (const URL& url, NSURL* fileUrl) static NSURL* appendParametersToFileURL (const URL& url, NSURL* fileUrl)
{ {
if (@available (macOS 10.9, *))
if (@available (macOS 10.10, *))
{ {
const auto parameterNames = url.getParameterNames(); const auto parameterNames = url.getParameterNames();
const auto parameterValues = url.getParameterValues(); const auto parameterValues = url.getParameterValues();
@@ -263,7 +263,7 @@ private:
JUCE_END_IGNORE_WARNINGS_GCC_LIKE JUCE_END_IGNORE_WARNINGS_GCC_LIKE
#endif #endif
struct WebViewDelegateClass : public ObjCClass<NSObject>
struct API_AVAILABLE (macos (10.10)) WebViewDelegateClass : public ObjCClass<NSObject>
{ {
WebViewDelegateClass() : ObjCClass<NSObject> ("JUCEWebViewDelegate_") WebViewDelegateClass() : ObjCClass<NSObject> ("JUCEWebViewDelegate_")
{ {
@@ -339,7 +339,7 @@ private:
} }
#if WKWEBVIEW_OPENPANEL_SUPPORTED #if WKWEBVIEW_OPENPANEL_SUPPORTED
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wunguarded-availability", "-Wunguarded-availability-new")
API_AVAILABLE (macos (10.12))
static void runOpenPanel (id, SEL, WKWebView*, WKOpenPanelParameters* parameters, WKFrameInfo*, static void runOpenPanel (id, SEL, WKWebView*, WKOpenPanelParameters* parameters, WKFrameInfo*,
void (^completionHandler)(NSArray<NSURL*>*)) void (^completionHandler)(NSArray<NSURL*>*))
{ {
@@ -402,7 +402,6 @@ private:
delete wrapper; delete wrapper;
}); });
} }
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
#endif #endif
}; };
@@ -507,7 +506,7 @@ private:
JUCE_END_IGNORE_WARNINGS_GCC_LIKE JUCE_END_IGNORE_WARNINGS_GCC_LIKE
#endif #endif
class WKWebViewImpl : public WebViewBase
class API_AVAILABLE (macos (10.11)) WKWebViewImpl : public WebViewBase
{ {
public: public:
WKWebViewImpl (WebBrowserComponent* owner) WKWebViewImpl (WebBrowserComponent* owner)
@@ -587,7 +586,7 @@ class WebBrowserComponent::Pimpl
public: public:
Pimpl (WebBrowserComponent* owner) Pimpl (WebBrowserComponent* owner)
{ {
if (@available (macOS 10.10, *))
if (@available (macOS 10.11, *))
webView = std::make_unique<WKWebViewImpl> (owner); webView = std::make_unique<WKWebViewImpl> (owner);
#if JUCE_MAC #if JUCE_MAC
else else


+ 0
- 4
modules/juce_video/capture/juce_CameraDevice.cpp View File

@@ -31,11 +31,7 @@ namespace juce
#elif JUCE_WINDOWS #elif JUCE_WINDOWS
#include "../native/juce_win32_CameraDevice.h" #include "../native/juce_win32_CameraDevice.h"
#elif JUCE_IOS #elif JUCE_IOS
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wunguarded-availability", "-Wunguarded-availability-new")
#include "../native/juce_ios_CameraDevice.h" #include "../native/juce_ios_CameraDevice.h"
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
#elif JUCE_ANDROID #elif JUCE_ANDROID
#include "../native/juce_android_CameraDevice.h" #include "../native/juce_android_CameraDevice.h"
#endif #endif


+ 2
- 1
modules/juce_video/native/juce_ios_CameraDevice.h View File

@@ -766,7 +766,7 @@ private:
//============================================================================== //==============================================================================
#if JUCE_USE_NEW_CAMERA_API #if JUCE_USE_NEW_CAMERA_API
class PhotoOutputDelegateClass : public ObjCClass<NSObject>
class API_AVAILABLE (ios (10.0)) PhotoOutputDelegateClass : public ObjCClass<NSObject>
{ {
public: public:
PhotoOutputDelegateClass() : ObjCClass<NSObject> ("PhotoOutputDelegateClass_") PhotoOutputDelegateClass() : ObjCClass<NSObject> ("PhotoOutputDelegateClass_")
@@ -820,6 +820,7 @@ private:
JUCE_CAMERA_LOG ("didFinishCaptureForSettings(), error = " + errorString); JUCE_CAMERA_LOG ("didFinishCaptureForSettings(), error = " + errorString);
} }
API_AVAILABLE (ios (11.0))
static void didFinishProcessingPhoto (id self, SEL, AVCapturePhotoOutput*, AVCapturePhoto* capturePhoto, NSError* error) static void didFinishProcessingPhoto (id self, SEL, AVCapturePhotoOutput*, AVCapturePhoto* capturePhoto, NSError* error)
{ {
getOwner (self).takingPicture = false; getOwner (self).takingPicture = false;


+ 2
- 4
modules/juce_video/native/juce_mac_CameraDevice.h View File

@@ -226,7 +226,7 @@ private:
{ {
JUCE_CAMERA_LOG (nsStringToJuce ([notification description])); JUCE_CAMERA_LOG (nsStringToJuce ([notification description]));
NSError* error = notification.userInfo[AVCaptureSessionErrorKey];
NSError* error = [notification.userInfo objectForKey: AVCaptureSessionErrorKey];
auto errorString = error != nil ? nsStringToJuce (error.localizedDescription) : String(); auto errorString = error != nil ? nsStringToJuce (error.localizedDescription) : String();
getOwner (self).cameraSessionRuntimeError (errorString); getOwner (self).cameraSessionRuntimeError (errorString);
} }
@@ -244,8 +244,7 @@ private:
}; };
#if JUCE_USE_NEW_CAMERA_API #if JUCE_USE_NEW_CAMERA_API
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wunguarded-availability", "-Wunguarded-availability-new")
class PostCatalinaPhotoOutput : public ImageOutputBase
class API_AVAILABLE (macos (10.15)) PostCatalinaPhotoOutput : public ImageOutputBase
{ {
public: public:
PostCatalinaPhotoOutput() PostCatalinaPhotoOutput()
@@ -329,7 +328,6 @@ private:
AVCapturePhotoOutput* imageOutput = nil; AVCapturePhotoOutput* imageOutput = nil;
std::unique_ptr<NSObject, NSObjectDeleter> delegate; std::unique_ptr<NSObject, NSObjectDeleter> delegate;
}; };
JUCE_END_IGNORE_WARNINGS_GCC_LIKE
#endif #endif
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations") JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations")


+ 75
- 49
modules/juce_video/native/juce_mac_Video.h View File

@@ -195,8 +195,15 @@ private:
public: public:
~PlayerControllerBase() ~PlayerControllerBase()
{ {
detachPlayerStatusObserver();
detachPlaybackObserver();
// Derived classes must call detachPlayerStatusObserver() before destruction!
jassert (! playerStatusObserverAttached);
// Derived classes must call detachPlaybackObserver() before destruction!
jassert (! playbackObserverAttached);
// Note that it's unsafe to call detachPlayerStatusObserver and detachPlaybackObserver
// directly here, because those functions call into the derived class, which will have
// been destroyed at this point.
} }
protected: protected:
@@ -226,8 +233,8 @@ private:
if ([keyPath isEqualToString: nsStringLiteral ("rate")]) if ([keyPath isEqualToString: nsStringLiteral ("rate")])
{ {
auto oldRate = [change[NSKeyValueChangeOldKey] floatValue];
auto newRate = [change[NSKeyValueChangeNewKey] floatValue];
auto oldRate = [[change objectForKey: NSKeyValueChangeOldKey] floatValue];
auto newRate = [[change objectForKey: NSKeyValueChangeNewKey] floatValue];
if (oldRate == 0 && newRate != 0) if (oldRate == 0 && newRate != 0)
owner.playbackStarted(); owner.playbackStarted();
@@ -236,7 +243,7 @@ private:
} }
else if ([keyPath isEqualToString: nsStringLiteral ("status")]) else if ([keyPath isEqualToString: nsStringLiteral ("status")])
{ {
auto status = [change[NSKeyValueChangeNewKey] intValue];
auto status = [[change objectForKey: NSKeyValueChangeNewKey] intValue];
if (status == AVPlayerStatusFailed) if (status == AVPlayerStatusFailed)
owner.errorOccurred(); owner.errorOccurred();
@@ -329,8 +336,8 @@ private:
auto* urlAsset = (AVURLAsset*) playerItem.asset; auto* urlAsset = (AVURLAsset*) playerItem.asset;
URL url (nsStringToJuce (urlAsset.URL.absoluteString)); URL url (nsStringToJuce (urlAsset.URL.absoluteString));
auto oldStatus = [change[NSKeyValueChangeOldKey] intValue];
auto newStatus = [change[NSKeyValueChangeNewKey] intValue];
auto oldStatus = [[change objectForKey: NSKeyValueChangeOldKey] intValue];
auto newStatus = [[change objectForKey: NSKeyValueChangeNewKey] intValue];
// Ignore spurious notifications // Ignore spurious notifications
if (oldStatus == newStatus) if (oldStatus == newStatus)
@@ -481,6 +488,8 @@ private:
forKeyPath: nsStringLiteral ("status") forKeyPath: nsStringLiteral ("status")
options: NSKeyValueObservingOptionNew options: NSKeyValueObservingOptionNew
context: this]; context: this];
playerStatusObserverAttached = true;
} }
void detachPlayerStatusObserver() void detachPlayerStatusObserver()
@@ -495,6 +504,8 @@ private:
forKeyPath: nsStringLiteral ("status") forKeyPath: nsStringLiteral ("status")
context: this]; context: this];
} }
playerStatusObserverAttached = false;
} }
void attachPlaybackObserver() void attachPlaybackObserver()
@@ -505,6 +516,8 @@ private:
name: AVPlayerItemDidPlayToEndTimeNotification name: AVPlayerItemDidPlayToEndTimeNotification
object: [crtp().getPlayer() currentItem]]; object: [crtp().getPlayer() currentItem]];
JUCE_END_IGNORE_WARNINGS_GCC_LIKE JUCE_END_IGNORE_WARNINGS_GCC_LIKE
playbackObserverAttached = true;
} }
void detachPlaybackObserver() void detachPlaybackObserver()
@@ -512,6 +525,8 @@ private:
JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wundeclared-selector") JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wundeclared-selector")
[[NSNotificationCenter defaultCenter] removeObserver: playerItemPlaybackStatusObserver.get()]; [[NSNotificationCenter defaultCenter] removeObserver: playerItemPlaybackStatusObserver.get()];
JUCE_END_IGNORE_WARNINGS_GCC_LIKE JUCE_END_IGNORE_WARNINGS_GCC_LIKE
playbackObserverAttached = false;
} }
private: private:
@@ -556,6 +571,8 @@ private:
owner.playbackStopped(); owner.playbackStopped();
} }
bool playerStatusObserverAttached = false, playbackObserverAttached = false;
JUCE_DECLARE_WEAK_REFERENCEABLE (PlayerControllerBase) JUCE_DECLARE_WEAK_REFERENCEABLE (PlayerControllerBase)
}; };
@@ -572,38 +589,21 @@ private:
useNativeControls = false; useNativeControls = false;
#endif #endif
if (useNativeControls)
wrappedPlayer = [&]() -> std::unique_ptr<WrappedPlayer>
{ {
#if ! JUCE_32BIT #if ! JUCE_32BIT
playerView = [[AVPlayerView alloc] init];
if (@available (macOS 10.9, *))
if (useNativeControls)
return std::make_unique<WrappedPlayerView>();
#endif #endif
}
else
{
view = [[NSView alloc] init];
playerLayer = [[AVPlayerLayer alloc] init];
[view setLayer: playerLayer];
}
}
~PlayerController()
{
#if JUCE_32BIT
[view release];
[playerLayer release];
#else
[playerView release];
#endif
return std::make_unique<WrappedPlayerLayer> ();
}();
} }
NSView* getView() NSView* getView()
{ {
#if ! JUCE_32BIT
if (useNativeControls)
return playerView;
#endif
return view;
return wrappedPlayer->getView();
} }
Result load (NSURL* url) Result load (NSURL* url)
@@ -629,12 +629,7 @@ private:
detachPlayerStatusObserver(); detachPlayerStatusObserver();
detachPlaybackObserver(); detachPlaybackObserver();
#if ! JUCE_32BIT
if (useNativeControls)
[playerView setPlayer: player];
else
#endif
[playerLayer setPlayer: player];
wrappedPlayer->setPlayer (player);
if (player != nil) if (player != nil)
{ {
@@ -645,21 +640,46 @@ private:
AVPlayer* getPlayer() const AVPlayer* getPlayer() const
{ {
#if ! JUCE_32BIT
if (useNativeControls)
return [playerView player];
#endif
return [playerLayer player];
return wrappedPlayer->getPlayer();
} }
private: private:
NSView* view = nil;
AVPlayerLayer* playerLayer = nil;
struct WrappedPlayer
{
virtual ~WrappedPlayer() = default;
virtual NSView* getView() const = 0;
virtual AVPlayer* getPlayer() const = 0;
virtual void setPlayer (AVPlayer*) = 0;
};
class WrappedPlayerLayer : public WrappedPlayer
{
public:
WrappedPlayerLayer () { [view.get() setLayer: playerLayer.get()]; }
NSView* getView() const override { return view.get(); }
AVPlayer* getPlayer() const override { return [playerLayer.get() player]; }
void setPlayer (AVPlayer* player) override { [playerLayer.get() setPlayer: player]; }
private:
NSUniquePtr<NSView> view { [[NSView alloc] init] };
NSUniquePtr<AVPlayerLayer> playerLayer { [[AVPlayerLayer alloc] init] };
};
#if ! JUCE_32BIT #if ! JUCE_32BIT
// 32-bit builds don't have AVPlayerView
AVPlayerView* playerView = nil;
class API_AVAILABLE (macos (10.9)) WrappedPlayerView : public WrappedPlayer
{
public:
WrappedPlayerView() = default;
NSView* getView() const override { return playerView.get(); }
AVPlayer* getPlayer() const override { return [playerView.get() player]; }
void setPlayer (AVPlayer* player) override { [playerView.get() setPlayer: player]; }
private:
NSUniquePtr<AVPlayerView> playerView { [[AVPlayerView alloc] init] };
};
#endif #endif
std::unique_ptr<WrappedPlayer> wrappedPlayer;
}; };
#else #else
//============================================================================== //==============================================================================
@@ -716,13 +736,19 @@ private:
void setPlayer (AVPlayer* playerToUse) void setPlayer (AVPlayer* playerToUse)
{ {
detachPlayerStatusObserver();
detachPlaybackObserver();
if (useNativeControls) if (useNativeControls)
[playerViewController.get() setPlayer: playerToUse]; [playerViewController.get() setPlayer: playerToUse];
else else
[playerLayer.get() setPlayer: playerToUse]; [playerLayer.get() setPlayer: playerToUse];
attachPlayerStatusObserver();
attachPlaybackObserver();
if (playerToUse != nil)
{
attachPlayerStatusObserver();
attachPlaybackObserver();
}
} }
private: private:


Loading…
Cancel
Save