| @@ -575,8 +575,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/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; | MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -Wunguarded-availability -Wunguarded-availability-new"; | |||||
| OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | ||||
| PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner; | PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner; | ||||
| PRODUCT_NAME = "DemoRunner"; | PRODUCT_NAME = "DemoRunner"; | ||||
| @@ -667,8 +667,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/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; | MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -Wunguarded-availability -Wunguarded-availability-new"; | |||||
| OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | ||||
| PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner; | PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner; | ||||
| PRODUCT_NAME = "DemoRunner"; | PRODUCT_NAME = "DemoRunner"; | ||||
| @@ -578,8 +578,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/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; | MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -Wunguarded-availability -Wunguarded-availability-new"; | |||||
| OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | ||||
| PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner; | PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner; | ||||
| PRODUCT_NAME = "DemoRunner"; | PRODUCT_NAME = "DemoRunner"; | ||||
| @@ -670,8 +670,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/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; | MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -Wunguarded-availability -Wunguarded-availability-new"; | |||||
| OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | ||||
| PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner; | PRODUCT_BUNDLE_IDENTIFIER = com.rmsl.jucedemorunner; | ||||
| PRODUCT_NAME = "DemoRunner"; | PRODUCT_NAME = "DemoRunner"; | ||||
| @@ -500,8 +500,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/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; | MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -Wunguarded-availability -Wunguarded-availability-new"; | |||||
| OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | ||||
| PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost; | PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost; | ||||
| PRODUCT_NAME = "AudioPluginHost"; | PRODUCT_NAME = "AudioPluginHost"; | ||||
| @@ -640,8 +640,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/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; | MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -Wunguarded-availability -Wunguarded-availability-new"; | |||||
| OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | ||||
| PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost; | PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost; | ||||
| PRODUCT_NAME = "AudioPluginHost"; | PRODUCT_NAME = "AudioPluginHost"; | ||||
| @@ -508,8 +508,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/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; | MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -Wunguarded-availability -Wunguarded-availability-new"; | |||||
| OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | ||||
| PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost; | PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost; | ||||
| PRODUCT_NAME = "Plugin Host"; | PRODUCT_NAME = "Plugin Host"; | ||||
| @@ -649,8 +649,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/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; | MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -Wunguarded-availability -Wunguarded-availability-new"; | |||||
| OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | ||||
| PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost; | PRODUCT_BUNDLE_IDENTIFIER = com.juce.pluginhost; | ||||
| PRODUCT_NAME = "Plugin Host"; | PRODUCT_NAME = "Plugin Host"; | ||||
| @@ -31,7 +31,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 | ||||
| @@ -1173,8 +1173,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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -Wunguarded-availability -Wunguarded-availability-new"; | |||||
| OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | ||||
| PRODUCT_BUNDLE_IDENTIFIER = com.juce.theprojucer; | PRODUCT_BUNDLE_IDENTIFIER = com.juce.theprojucer; | ||||
| PRODUCT_NAME = "Projucer"; | PRODUCT_NAME = "Projucer"; | ||||
| @@ -1244,8 +1244,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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -Wunguarded-availability -Wunguarded-availability-new"; | |||||
| OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | ||||
| PRODUCT_BUNDLE_IDENTIFIER = com.juce.theprojucer; | PRODUCT_BUNDLE_IDENTIFIER = com.juce.theprojucer; | ||||
| PRODUCT_NAME = "Projucer"; | PRODUCT_NAME = "Projucer"; | ||||
| @@ -1599,6 +1599,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 | ||||
| @@ -894,6 +894,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 ({ | ||||
| @@ -289,8 +289,7 @@ public: | |||||
| return result; | return result; | ||||
| } | } | ||||
| StringArray common; | |||||
| StringArray cpp; | |||||
| StringArray common, cpp, objc; | |||||
| }; | }; | ||||
| CompilerWarningFlags getRecommendedCompilerWarningFlags() const; | CompilerWarningFlags getRecommendedCompilerWarningFlags() const; | ||||
| @@ -465,8 +465,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/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; | MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -Wunguarded-availability -Wunguarded-availability-new"; | |||||
| OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | ||||
| PRODUCT_BUNDLE_IDENTIFIER = com.juce.UnitTestRunner; | PRODUCT_BUNDLE_IDENTIFIER = com.juce.UnitTestRunner; | ||||
| PRODUCT_NAME = "UnitTestRunner"; | PRODUCT_NAME = "UnitTestRunner"; | ||||
| @@ -598,8 +598,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/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/VST3_SDK $(SRCROOT)/../../JuceLibraryCode $(SRCROOT)/../../../../modules"; | MTL_HEADER_SEARCH_PATHS = "$(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lilv $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sratom $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord/src $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/sord $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/serd $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK/lv2 $(SRCROOT)/../../../../modules/juce_audio_processors/format_types/LV2_SDK $(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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes"; | |||||
| 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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -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 -Wshadow-all -Wnullable-to-nonnull-conversion -Wmissing-prototypes -Wunguarded-availability -Wunguarded-availability-new"; | |||||
| OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | OTHER_LDFLAGS = "-weak_framework Metal -weak_framework MetalKit"; | ||||
| PRODUCT_BUNDLE_IDENTIFIER = com.juce.UnitTestRunner; | PRODUCT_BUNDLE_IDENTIFIER = com.juce.UnitTestRunner; | ||||
| PRODUCT_NAME = "UnitTestRunner"; | PRODUCT_NAME = "UnitTestRunner"; | ||||
| @@ -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 | ||||
| @@ -281,7 +281,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"])); | ||||
| @@ -416,6 +416,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; | |||||
| } | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -636,7 +644,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 | ||||
| @@ -2545,7 +2553,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; | ||||
| @@ -2854,12 +2865,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; | ||||
| @@ -2883,8 +2897,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; | ||||
| @@ -2916,11 +2932,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)); | ||||
| } | } | ||||
| } | } | ||||
| @@ -20,7 +20,7 @@ namespace juce | |||||
| { | { | ||||
| //============================================================================== | //============================================================================== | ||||
| class BluetoothMidiPairingWindowClass : public ObjCClass<NSObject> | |||||
| class API_AVAILABLE (macos (10.11)) BluetoothMidiPairingWindowClass : public ObjCClass<NSObject> | |||||
| { | { | ||||
| public: | public: | ||||
| struct Callbacks | struct Callbacks | ||||
| @@ -110,7 +110,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, | ||||
| @@ -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(); | ||||
| } | } | ||||
| @@ -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) | ||||
| @@ -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()); | ||||
| } | } | ||||
| @@ -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) | ||||
| @@ -34,31 +34,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 | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -157,7 +132,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(); | ||||
| @@ -165,11 +145,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 | |||||
| } | } | ||||
| }; | }; | ||||
| @@ -16,6 +16,7 @@ | |||||
| ============================================================================== | ============================================================================== | ||||
| */ | */ | ||||
| API_AVAILABLE (macos (10.10)) | |||||
| static void juceFreeAccessibilityPlatformSpecificData (NSAccessibilityElement<NSAccessibility>*) {} | static void juceFreeAccessibilityPlatformSpecificData (NSAccessibilityElement<NSAccessibility>*) {} | ||||
| namespace juce | namespace juce | ||||
| @@ -28,16 +29,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(); | ||||
| @@ -45,7 +47,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) | ||||
| @@ -823,6 +825,7 @@ private: | |||||
| }; | }; | ||||
| //============================================================================== | //============================================================================== | ||||
| API_AVAILABLE (macos (10.10)) | |||||
| AccessibilityElement::Holder accessibilityElement; | AccessibilityElement::Holder accessibilityElement; | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -832,7 +835,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() | ||||
| @@ -866,12 +872,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)); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| @@ -930,10 +939,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; | ||||
| @@ -943,6 +955,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], | ||||
| @@ -952,6 +966,4 @@ void AccessibilityHandler::postAnnouncement (const String& announcementString, A | |||||
| } | } | ||||
| } | } | ||||
| JUCE_END_IGNORE_WARNINGS_GCC_LIKE | |||||
| } // namespace juce | } // namespace juce | ||||
| @@ -105,10 +105,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]; | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| @@ -1848,10 +1848,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)]; | |||||
| } | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -19,7 +19,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); | ||||
| @@ -80,7 +80,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) | ||||
| @@ -377,7 +377,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); | ||||
| @@ -25,7 +25,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(); | ||||
| @@ -256,7 +256,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_") | ||||
| { | { | ||||
| @@ -332,7 +332,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*>*)) | ||||
| { | { | ||||
| @@ -395,7 +395,6 @@ private: | |||||
| delete wrapper; | delete wrapper; | ||||
| }); | }); | ||||
| } | } | ||||
| JUCE_END_IGNORE_WARNINGS_GCC_LIKE | |||||
| #endif | #endif | ||||
| }; | }; | ||||
| @@ -500,7 +499,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) | ||||
| @@ -580,7 +579,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 | ||||
| @@ -24,11 +24,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 | ||||
| @@ -759,7 +759,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_") | ||||
| @@ -813,6 +813,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; | ||||
| @@ -219,7 +219,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); | ||||
| } | } | ||||
| @@ -237,8 +237,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() | ||||
| @@ -322,7 +321,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") | ||||
| @@ -188,8 +188,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: | ||||
| @@ -219,8 +226,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(); | ||||
| @@ -229,7 +236,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(); | ||||
| @@ -322,8 +329,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) | ||||
| @@ -474,6 +481,8 @@ private: | |||||
| forKeyPath: nsStringLiteral ("status") | forKeyPath: nsStringLiteral ("status") | ||||
| options: NSKeyValueObservingOptionNew | options: NSKeyValueObservingOptionNew | ||||
| context: this]; | context: this]; | ||||
| playerStatusObserverAttached = true; | |||||
| } | } | ||||
| void detachPlayerStatusObserver() | void detachPlayerStatusObserver() | ||||
| @@ -488,6 +497,8 @@ private: | |||||
| forKeyPath: nsStringLiteral ("status") | forKeyPath: nsStringLiteral ("status") | ||||
| context: this]; | context: this]; | ||||
| } | } | ||||
| playerStatusObserverAttached = false; | |||||
| } | } | ||||
| void attachPlaybackObserver() | void attachPlaybackObserver() | ||||
| @@ -498,6 +509,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() | ||||
| @@ -505,6 +518,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: | ||||
| @@ -549,6 +564,8 @@ private: | |||||
| owner.playbackStopped(); | owner.playbackStopped(); | ||||
| } | } | ||||
| bool playerStatusObserverAttached = false, playbackObserverAttached = false; | |||||
| JUCE_DECLARE_WEAK_REFERENCEABLE (PlayerControllerBase) | JUCE_DECLARE_WEAK_REFERENCEABLE (PlayerControllerBase) | ||||
| }; | }; | ||||
| @@ -565,38 +582,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) | ||||
| @@ -622,12 +622,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) | ||||
| { | { | ||||
| @@ -638,21 +633,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 | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -709,13 +729,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: | ||||