New upstream version 5.4.7~ds0
authorIOhannes m zmölnig <zmoelnig@umlautS.umlaeute.mur.at>
Tue, 18 Feb 2020 08:40:50 +0000 (09:40 +0100)
committerIOhannes m zmölnig <zmoelnig@umlautS.umlaeute.mur.at>
Tue, 18 Feb 2020 08:40:50 +0000 (09:40 +0100)
103 files changed:
ChangeList.txt
examples/DemoRunner/Builds/Android/app/CMakeLists.txt
examples/DemoRunner/Builds/Android/app/src/main/AndroidManifest.xml
examples/DemoRunner/Builds/LinuxMakefile/Makefile
examples/DemoRunner/Builds/MacOSX/DemoRunner.xcodeproj/project.pbxproj
examples/DemoRunner/Builds/MacOSX/Info-App.plist
examples/DemoRunner/Builds/VisualStudio2015/DemoRunner_App.vcxproj
examples/DemoRunner/Builds/VisualStudio2015/resources.rc
examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj
examples/DemoRunner/Builds/VisualStudio2017/resources.rc
examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj
examples/DemoRunner/Builds/VisualStudio2019/resources.rc
examples/DemoRunner/Builds/iOS/DemoRunner.xcodeproj/project.pbxproj
examples/DemoRunner/Builds/iOS/Info-App.plist
examples/DemoRunner/DemoRunner.jucer
examples/DemoRunner/JuceLibraryCode/AppConfig.h
examples/DemoRunner/JuceLibraryCode/JuceHeader.h
extras/AudioPerformanceTest/AudioPerformanceTest.jucer
extras/AudioPerformanceTest/Builds/LinuxMakefile/Makefile
extras/AudioPerformanceTest/JuceLibraryCode/AppConfig.h
extras/AudioPluginHost/AudioPluginHost.jucer
extras/AudioPluginHost/Builds/LinuxMakefile/Makefile
extras/AudioPluginHost/JuceLibraryCode/AppConfig.h
extras/BinaryBuilder/BinaryBuilder.jucer
extras/BinaryBuilder/Builds/LinuxMakefile/Makefile
extras/BinaryBuilder/JuceLibraryCode/AppConfig.h
extras/NetworkGraphicsDemo/Builds/LinuxMakefile/Makefile
extras/NetworkGraphicsDemo/JuceLibraryCode/AppConfig.h
extras/NetworkGraphicsDemo/NetworkGraphicsDemo.jucer
extras/Projucer/Builds/LinuxMakefile/Makefile
extras/Projucer/Builds/MacOSX/Info-App.plist
extras/Projucer/Builds/MacOSX/Projucer.xcodeproj/project.pbxproj
extras/Projucer/Builds/VisualStudio2015/Projucer_App.vcxproj
extras/Projucer/Builds/VisualStudio2015/resources.rc
extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj
extras/Projucer/Builds/VisualStudio2017/resources.rc
extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj
extras/Projucer/Builds/VisualStudio2019/resources.rc
extras/Projucer/JuceLibraryCode/AppConfig.h
extras/Projucer/JuceLibraryCode/JuceHeader.h
extras/Projucer/Projucer.jucer
extras/Projucer/Source/Application/Windows/jucer_GlobalPathsWindowComponent.h
extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.cpp
extras/Projucer/Source/Project/UI/Sidebar/jucer_ModuleTreeItems.h
extras/Projucer/Source/Project/UI/jucer_ModulesInformationComponent.h
extras/Projucer/Source/Project/jucer_Module.cpp
extras/Projucer/Source/Project/jucer_Module.h
extras/Projucer/Source/Project/jucer_Project.cpp
extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Make.h
extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h
extras/Projucer/Source/ProjectSaving/jucer_ProjectExporter.cpp
extras/Projucer/Source/Utility/Helpers/jucer_MiscUtilities.cpp
extras/Projucer/Source/Utility/Helpers/jucer_MiscUtilities.h
extras/Projucer/Source/Utility/UI/PropertyComponents/jucer_FilePathPropertyComponent.h
extras/UnitTestRunner/Builds/LinuxMakefile/Makefile
extras/UnitTestRunner/JuceLibraryCode/AppConfig.h
extras/UnitTestRunner/UnitTestRunner.jucer
extras/WindowsDLL/JuceLibraryCode/AppConfig.h
extras/WindowsDLL/WindowsDLL.jucer
modules/juce_analytics/juce_analytics.h
modules/juce_audio_basics/juce_audio_basics.h
modules/juce_audio_devices/juce_audio_devices.h
modules/juce_audio_devices/native/juce_win32_DirectSound.cpp
modules/juce_audio_devices/native/juce_win32_WASAPI.cpp
modules/juce_audio_formats/juce_audio_formats.h
modules/juce_audio_plugin_client/Unity/juce_UnityPluginInterface.h
modules/juce_audio_plugin_client/VST/juce_VST_Wrapper.cpp
modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp
modules/juce_audio_plugin_client/juce_audio_plugin_client.h
modules/juce_audio_plugin_client/utility/juce_IncludeSystemHeaders.h
modules/juce_audio_processors/juce_audio_processors.h
modules/juce_audio_utils/juce_audio_utils.h
modules/juce_blocks_basics/juce_blocks_basics.h
modules/juce_box2d/juce_box2d.h
modules/juce_core/juce_core.cpp
modules/juce_core/juce_core.h
modules/juce_core/native/juce_BasicNativeHeaders.h
modules/juce_core/native/juce_win32_SystemStats.cpp
modules/juce_core/system/juce_StandardHeader.h
modules/juce_cryptography/juce_cryptography.h
modules/juce_data_structures/juce_data_structures.h
modules/juce_dsp/juce_dsp.h
modules/juce_events/juce_events.h
modules/juce_graphics/juce_graphics.h
modules/juce_graphics/native/juce_mac_CoreGraphicsContext.mm
modules/juce_graphics/native/juce_win32_DirectWriteTypeLayout.cpp
modules/juce_graphics/native/juce_win32_DirectWriteTypeface.cpp
modules/juce_gui_basics/juce_gui_basics.cpp
modules/juce_gui_basics/juce_gui_basics.h
modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm
modules/juce_gui_basics/native/juce_win32_DragAndDrop.cpp
modules/juce_gui_basics/native/juce_win32_Windowing.cpp
modules/juce_gui_basics/widgets/juce_ListBox.cpp
modules/juce_gui_extra/juce_gui_extra.h
modules/juce_gui_extra/native/juce_win32_WebBrowserComponent.cpp
modules/juce_opengl/juce_opengl.cpp
modules/juce_opengl/juce_opengl.h
modules/juce_osc/juce_osc.h
modules/juce_osc/osc/juce_OSCBundle.h
modules/juce_product_unlocking/juce_product_unlocking.h
modules/juce_product_unlocking/native/javaopt/app/com/roli/juce/JuceBillingClient.java
modules/juce_video/juce_video.cpp
modules/juce_video/juce_video.h

index 8be146308ceb05231d1d75f6624b6a0736fb99ec..867532c2fb96644305ea37165de237dcc1eea56b 100644 (file)
@@ -3,6 +3,14 @@
 This file just lists the more notable headline features. For more detailed info\r
 about minor changes and bugfixes, please see the git log!\r
 \r
+Version 5.4.7\r
+  - Fixed a macOS focus bug causing Components to not receive mouse events\r
+  - Fixed a potential NullPointerException in the Android IAP code\r
+  - Fixed an entitlements file generation bug in the Projucer\r
+  - Send VST2 audioMasterUpdateDisplay opcode on the message thread to fix some hosts not updating\r
+  - Fixed some build errors and warnings when using Clang on Windows\r
+  - Changed the default architecture specified in Linux Makefiles generated by the Projucer\r
+\r
 Version 5.4.6\r
   - Fixed compatibility with macOS versions below 10.11\r
   - Multiple thread safety improvements\r
index c75d3d7ce7ad92be72d1cc4ffdbb5fc5b9ef02f1..9f79a9c32fbc5d3349c84505e7a73df3aca50e42 100644 (file)
@@ -8,7 +8,7 @@ SET(BINARY_NAME "juce_jni")
 add_library("cpufeatures" STATIC "${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c")
 set_source_files_properties("${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c" PROPERTIES COMPILE_FLAGS "-Wno-sign-conversion -Wno-gnu-statement-expression")
 
-add_definitions("-DJUCE_ANDROID=1" "-DJUCE_ANDROID_API_VERSION=23" "-DJUCE_PUSH_NOTIFICATIONS=1" "-DJUCE_PUSH_NOTIFICATIONS_ACTIVITY=\"com/roli/juce/JuceActivity\"" "-DJUCE_ANDROID_GL_ES_VERSION_3_0=1" "-DJUCE_DEMO_RUNNER=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_ANDROIDSTUDIO_7F0E4A25=1" "-DJUCE_APP_VERSION=5.4.6" "-DJUCE_APP_VERSION_HEX=0x50406")
+add_definitions("-DJUCE_ANDROID=1" "-DJUCE_ANDROID_API_VERSION=23" "-DJUCE_PUSH_NOTIFICATIONS=1" "-DJUCE_PUSH_NOTIFICATIONS_ACTIVITY=\"com/roli/juce/JuceActivity\"" "-DJUCE_ANDROID_GL_ES_VERSION_3_0=1" "-DJUCE_DEMO_RUNNER=1" "-DJUCE_UNIT_TESTS=1" "-DJUCER_ANDROIDSTUDIO_7F0E4A25=1" "-DJUCE_APP_VERSION=5.4.7" "-DJUCE_APP_VERSION_HEX=0x50407")
 
 include_directories( AFTER
     "../../../JuceLibraryCode"
index f577cd8c09675f5d1fa1b238a93d9f05587cfac8..e4a887186f6e8fbe04f47939e70e09d7078e0f23 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="5.4.6"
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="5.4.7"
           package="com.juce.demorunner">
   <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:anyDensity="true"/>
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
index 56acdc6f4c2f800c8b2667d79c00b03adb0a7f30..c9d711ebb01697f0224a0bdf5f3095e819edff7c 100644 (file)
@@ -32,10 +32,10 @@ ifeq ($(CONFIG),Debug)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
-  JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCE_DEMO_RUNNER=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=5.4.6 -DJUCE_APP_VERSION_HEX=0x50406 $(shell pkg-config --cflags alsa x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0 libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
+  JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCE_DEMO_RUNNER=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=5.4.7 -DJUCE_APP_VERSION_HEX=0x50407 $(shell pkg-config --cflags alsa x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0 libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
   JUCE_CPPFLAGS_APP := -DJucePlugin_Build_VST=0 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0 -DJucePlugin_Build_Unity=0
   JUCE_TARGET_APP := DemoRunner
 
@@ -53,10 +53,10 @@ ifeq ($(CONFIG),Release)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
-  JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCE_DEMO_RUNNER=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=5.4.6 -DJUCE_APP_VERSION_HEX=0x50406 $(shell pkg-config --cflags alsa x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0 libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
+  JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCE_DEMO_RUNNER=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=5.4.7 -DJUCE_APP_VERSION_HEX=0x50407 $(shell pkg-config --cflags alsa x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0 libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
   JUCE_CPPFLAGS_APP := -DJucePlugin_Build_VST=0 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0 -DJucePlugin_Build_Unity=0
   JUCE_TARGET_APP := DemoRunner
 
index 2b5ef85586080180c71156c177fb7ae8195354f1..c7c730f1ca089d3e6a3920511b628bd5328ae573 100644 (file)
                                        "JUCE_DEMO_RUNNER=1",
                                        "JUCE_UNIT_TESTS=1",
                                        "JUCER_XCODE_MAC_F6D2F4CF=1",
-                                       "JUCE_APP_VERSION=5.4.6",
-                                       "JUCE_APP_VERSION_HEX=0x50406",
+                                       "JUCE_APP_VERSION=5.4.7",
+                                       "JUCE_APP_VERSION_HEX=0x50407",
                                        "JucePlugin_Build_VST=0",
                                        "JucePlugin_Build_VST3=0",
                                        "JucePlugin_Build_AU=0",
                                        "JUCE_DEMO_RUNNER=1",
                                        "JUCE_UNIT_TESTS=1",
                                        "JUCER_XCODE_MAC_F6D2F4CF=1",
-                                       "JUCE_APP_VERSION=5.4.6",
-                                       "JUCE_APP_VERSION_HEX=0x50406",
+                                       "JUCE_APP_VERSION=5.4.7",
+                                       "JUCE_APP_VERSION_HEX=0x50407",
                                        "JucePlugin_Build_VST=0",
                                        "JucePlugin_Build_VST3=0",
                                        "JucePlugin_Build_AU=0",
index 2c5d4b3840f320c7355de2784192e045af08c7d3..9954cbe56cc28c4798bc5253de563b524d46d4b1 100644 (file)
@@ -22,9 +22,9 @@
     <key>CFBundleSignature</key>\r
     <string>????</string>\r
     <key>CFBundleShortVersionString</key>\r
-    <string>5.4.6</string>\r
+    <string>5.4.7</string>\r
     <key>CFBundleVersion</key>\r
-    <string>5.4.6</string>\r
+    <string>5.4.7</string>\r
     <key>NSHumanReadableCopyright</key>\r
     <string>Copyright (c) 2018 - ROLI Ltd.</string>\r
     <key>NSHighResolutionCapable</key>\r
index b0db8d97f3547b9da701c752f1598892a91288bf..2fd74b72490803bed3a4d553d8c8aa363fd228b9 100644 (file)
@@ -64,7 +64,7 @@
       <Optimization>Disabled</Optimization>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=5.4.6;JUCE_APP_VERSION_HEX=0x50406;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=5.4.7;JUCE_APP_VERSION_HEX=0x50407;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
       <PrecompiledHeader/>\r
     <ClCompile>\r
       <Optimization>Full</Optimization>\r
       <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=5.4.6;JUCE_APP_VERSION_HEX=0x50406;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=5.4.7;JUCE_APP_VERSION_HEX=0x50407;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
       <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
       <PrecompiledHeader/>\r
index ea054be68ae4bca76e54c88c42ae8b430eaf367e..507bdca131a13846346dcc5dbdcb893b331d457b 100644 (file)
@@ -7,7 +7,7 @@
 #include <windows.h>\r
 \r
 VS_VERSION_INFO VERSIONINFO\r
-FILEVERSION  5,4,6,0\r
+FILEVERSION  5,4,7,0\r
 BEGIN\r
   BLOCK "StringFileInfo"\r
   BEGIN\r
@@ -16,9 +16,9 @@ BEGIN
       VALUE "CompanyName",  "ROLI Ltd.\0"\r
       VALUE "LegalCopyright",  "Copyright (c) 2018 - ROLI Ltd.\0"\r
       VALUE "FileDescription",  "DemoRunner\0"\r
-      VALUE "FileVersion",  "5.4.6\0"\r
+      VALUE "FileVersion",  "5.4.7\0"\r
       VALUE "ProductName",  "DemoRunner\0"\r
-      VALUE "ProductVersion",  "5.4.6\0"\r
+      VALUE "ProductVersion",  "5.4.7\0"\r
     END\r
   END\r
 \r
index 0f6f601f44c998567d634523064c100d413686e7..952d10f7054ea5b60e23d0766a75bbdd14e1c374 100644 (file)
@@ -64,7 +64,7 @@
       <Optimization>Disabled</Optimization>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=5.4.6;JUCE_APP_VERSION_HEX=0x50406;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=5.4.7;JUCE_APP_VERSION_HEX=0x50407;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
       <PrecompiledHeader/>\r
     <ClCompile>\r
       <Optimization>Full</Optimization>\r
       <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=5.4.6;JUCE_APP_VERSION_HEX=0x50406;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=5.4.7;JUCE_APP_VERSION_HEX=0x50407;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
       <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
       <PrecompiledHeader/>\r
index ea054be68ae4bca76e54c88c42ae8b430eaf367e..507bdca131a13846346dcc5dbdcb893b331d457b 100644 (file)
@@ -7,7 +7,7 @@
 #include <windows.h>\r
 \r
 VS_VERSION_INFO VERSIONINFO\r
-FILEVERSION  5,4,6,0\r
+FILEVERSION  5,4,7,0\r
 BEGIN\r
   BLOCK "StringFileInfo"\r
   BEGIN\r
@@ -16,9 +16,9 @@ BEGIN
       VALUE "CompanyName",  "ROLI Ltd.\0"\r
       VALUE "LegalCopyright",  "Copyright (c) 2018 - ROLI Ltd.\0"\r
       VALUE "FileDescription",  "DemoRunner\0"\r
-      VALUE "FileVersion",  "5.4.6\0"\r
+      VALUE "FileVersion",  "5.4.7\0"\r
       VALUE "ProductName",  "DemoRunner\0"\r
-      VALUE "ProductVersion",  "5.4.6\0"\r
+      VALUE "ProductVersion",  "5.4.7\0"\r
     END\r
   END\r
 \r
index 779d691d006ec28876e0ac0245f68eb8f56070d6..74bb1dbb5d401b7c23399cac57ac32934c909bb8 100644 (file)
@@ -64,7 +64,7 @@
       <Optimization>Disabled</Optimization>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=5.4.6;JUCE_APP_VERSION_HEX=0x50406;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=5.4.7;JUCE_APP_VERSION_HEX=0x50407;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
       <PrecompiledHeader/>\r
     <ClCompile>\r
       <Optimization>Full</Optimization>\r
       <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=5.4.6;JUCE_APP_VERSION_HEX=0x50406;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCE_DEMO_RUNNER=1;JUCE_UNIT_TESTS=1;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=5.4.7;JUCE_APP_VERSION_HEX=0x50407;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
       <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
       <PrecompiledHeader/>\r
index ea054be68ae4bca76e54c88c42ae8b430eaf367e..507bdca131a13846346dcc5dbdcb893b331d457b 100644 (file)
@@ -7,7 +7,7 @@
 #include <windows.h>\r
 \r
 VS_VERSION_INFO VERSIONINFO\r
-FILEVERSION  5,4,6,0\r
+FILEVERSION  5,4,7,0\r
 BEGIN\r
   BLOCK "StringFileInfo"\r
   BEGIN\r
@@ -16,9 +16,9 @@ BEGIN
       VALUE "CompanyName",  "ROLI Ltd.\0"\r
       VALUE "LegalCopyright",  "Copyright (c) 2018 - ROLI Ltd.\0"\r
       VALUE "FileDescription",  "DemoRunner\0"\r
-      VALUE "FileVersion",  "5.4.6\0"\r
+      VALUE "FileVersion",  "5.4.7\0"\r
       VALUE "ProductName",  "DemoRunner\0"\r
-      VALUE "ProductVersion",  "5.4.6\0"\r
+      VALUE "ProductVersion",  "5.4.7\0"\r
     END\r
   END\r
 \r
index 49d4408e1440365171fc80f17d69586da1f6e12f..1a569bd1324a93074b4c0b5a4a08d5ccb7d35a0f 100644 (file)
                                        "JUCE_DEMO_RUNNER=1",
                                        "JUCE_UNIT_TESTS=1",
                                        "JUCER_XCODE_IPHONE_5BC26AE3=1",
-                                       "JUCE_APP_VERSION=5.4.6",
-                                       "JUCE_APP_VERSION_HEX=0x50406",
+                                       "JUCE_APP_VERSION=5.4.7",
+                                       "JUCE_APP_VERSION_HEX=0x50407",
                                        "JucePlugin_Build_VST=0",
                                        "JucePlugin_Build_VST3=0",
                                        "JucePlugin_Build_AU=0",
                                        "JUCE_DEMO_RUNNER=1",
                                        "JUCE_UNIT_TESTS=1",
                                        "JUCER_XCODE_IPHONE_5BC26AE3=1",
-                                       "JUCE_APP_VERSION=5.4.6",
-                                       "JUCE_APP_VERSION_HEX=0x50406",
+                                       "JUCE_APP_VERSION=5.4.7",
+                                       "JUCE_APP_VERSION_HEX=0x50407",
                                        "JucePlugin_Build_VST=0",
                                        "JucePlugin_Build_VST3=0",
                                        "JucePlugin_Build_AU=0",
index 1b8b1b7042a26341b6d2297805e11d7d2c04659a..f0906a669b1940a182b468bce8b5a9b14d991290 100644 (file)
@@ -30,9 +30,9 @@
     <key>CFBundleSignature</key>\r
     <string>????</string>\r
     <key>CFBundleShortVersionString</key>\r
-    <string>5.4.6</string>\r
+    <string>5.4.7</string>\r
     <key>CFBundleVersion</key>\r
-    <string>5.4.6</string>\r
+    <string>5.4.7</string>\r
     <key>NSHumanReadableCopyright</key>\r
     <string>Copyright (c) 2018 - ROLI Ltd.</string>\r
     <key>NSHighResolutionCapable</key>\r
index 56059d32cb98108529d14b3685921598210a8847..64eb8169de6cdebb8271cf396b56bc35afe92afd 100644 (file)
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 \r
-<JUCERPROJECT name="DemoRunner" projectType="guiapp" jucerVersion="5.4.6" defines="JUCE_DEMO_RUNNER=1&#10;JUCE_UNIT_TESTS=1"\r
-              bundleIdentifier="com.juce.demorunner" version="5.4.6" companyName="ROLI Ltd."\r
+<JUCERPROJECT name="DemoRunner" projectType="guiapp" jucerVersion="5.4.7" defines="JUCE_DEMO_RUNNER=1&#10;JUCE_UNIT_TESTS=1"\r
+              bundleIdentifier="com.juce.demorunner" version="5.4.7" companyName="ROLI Ltd."\r
               companyCopyright="Copyright (c) 2018 - ROLI Ltd." companyWebsite="https://www.juce.com/"\r
-              companyEmail="info@juce.com" id="yj7xMM" reportAppUsage="1">\r
+              companyEmail="info@juce.com" id="yj7xMM" reportAppUsage="0">\r
   <MAINGROUP id="G8kbr7" name="DemoRunner">\r
     <GROUP id="{20E3F84A-29E9-D5FF-4559-1A9E4A70CD60}" name="Source">\r
       <GROUP id="{272A692A-6AFE-68BD-C8E8-63B3D62245B1}" name="Demos">\r
index 048b13f167f6708e3486e3e341ae1894dd2bbe98..f33cd6f45a297bc1839cf20e47ee3fed5ac8134f 100644 (file)
 #endif\r
 \r
 #ifndef JUCE_REPORT_APP_USAGE\r
- #define JUCE_REPORT_APP_USAGE 1\r
+ #define JUCE_REPORT_APP_USAGE 0\r
 #endif\r
 \r
 // END SECTION A\r
 \r
 #define JUCE_USE_DARK_SPLASH_SCREEN 1\r
 \r
-#define JUCE_PROJUCER_VERSION 0x50406\r
+#define JUCE_PROJUCER_VERSION 0x50407\r
 \r
 //==============================================================================\r
 #define JUCE_MODULE_AVAILABLE_juce_analytics              1\r
index 0d632903da66c15ce1210b37db745da3235b3d4c..4878fe639023cd846a57cb3b9022250d924a802a 100644 (file)
@@ -56,7 +56,7 @@ namespace ProjectInfo
 {\r
     const char* const  projectName    = "DemoRunner";\r
     const char* const  companyName    = "ROLI Ltd.";\r
-    const char* const  versionString  = "5.4.6";\r
-    const int          versionNumber  = 0x50406;\r
+    const char* const  versionString  = "5.4.7";\r
+    const int          versionNumber  = 0x50407;\r
 }\r
 #endif\r
index 61c0a854e33b66de7cc2f6a426cd1b7260fe0517..89732ea0dc7c49b60a8b72da22a0a99da5453511 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 \r
 <JUCERPROJECT id="AKfc5m" name="AudioPerformanceTest" projectType="guiapp"\r
-              bundleIdentifier="com.juce.AudioPerformanceTest" jucerVersion="5.4.6"\r
+              bundleIdentifier="com.juce.AudioPerformanceTest" jucerVersion="5.4.7"\r
               displaySplashScreen="0" reportAppUsage="0" companyName="ROLI Ltd."\r
               companyCopyright="ROLI Ltd.">\r
   <MAINGROUP id="b1eVTe" name="AudioPerformanceTest">\r
index cd2ac907c5f92622c706026da4a94de547d82084..6e877bd02fc58ccebf79c956315474295f84292d 100644 (file)
@@ -32,7 +32,7 @@ ifeq ($(CONFIG),Debug)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
   JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0 libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
@@ -53,7 +53,7 @@ ifeq ($(CONFIG),Release)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
   JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0 libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
index c03b022dc0ec2fb2a5ea8faaa7d5ad01951fc878..140961cad8382e98fe6c4a6ae78e94d73b1142f0 100644 (file)
@@ -47,7 +47,7 @@
 \r
 #define JUCE_USE_DARK_SPLASH_SCREEN 1\r
 \r
-#define JUCE_PROJUCER_VERSION 0x50406\r
+#define JUCE_PROJUCER_VERSION 0x50407\r
 \r
 //==============================================================================\r
 #define JUCE_MODULE_AVAILABLE_juce_audio_basics          1\r
index ac227ba1b8d6bf58675a3ff0f6cb8eb0cdb2074f..523a580507df497c023f41e8c4d6a5fab8f655c7 100644 (file)
@@ -2,7 +2,7 @@
 \r
 <JUCERPROJECT id="NTe0XB0ij" name="AudioPluginHost" projectType="guiapp" version="1.0.0"\r
               juceFolder="../../../juce" bundleIdentifier="com.roli.juce.pluginhost"\r
-              jucerVersion="5.4.6" companyName="ROLI Ltd." displaySplashScreen="0"\r
+              jucerVersion="5.4.7" companyName="ROLI Ltd." displaySplashScreen="0"\r
               reportAppUsage="0" companyCopyright="ROLI Ltd.">\r
   <EXPORTFORMATS>\r
     <XCODE_MAC targetFolder="Builds/MacOSX" rtasFolder="~/SDKs/PT_80_SDK" objCExtraSuffix="M73TRi"\r
index e6bb5df34d3e1e37a1537e26a4683d5868da9b5d..1ee6149ef7289486fec1dc8e22514ca7d1f5f7d1 100644 (file)
@@ -32,7 +32,7 @@ ifeq ($(CONFIG),Debug)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
   JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa x11 xinerama xext freetype2 libcurl) -pthread -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
@@ -53,7 +53,7 @@ ifeq ($(CONFIG),Release)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
   JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa x11 xinerama xext freetype2 libcurl) -pthread -I../../../../modules/juce_audio_processors/format_types/VST3_SDK -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
index f14dc27fa09a238b1f71c1a8e14034a790b8fe4d..3c4df5804e5e23ca281223aca076d69298bae08e 100644 (file)
@@ -49,7 +49,7 @@
 \r
 #define JUCE_USE_DARK_SPLASH_SCREEN 1\r
 \r
-#define JUCE_PROJUCER_VERSION 0x50406\r
+#define JUCE_PROJUCER_VERSION 0x50407\r
 \r
 //==============================================================================\r
 #define JUCE_MODULE_AVAILABLE_juce_audio_basics          1\r
index ada60fc15ff41754e5d7d29a12ba1fb0826411eb..55c70b5f8432bcc93837ec0ec559e18bb9edc766 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 \r
 <JUCERPROJECT id="3t6YqETY1" name="BinaryBuilder" projectType="consoleapp"\r
-              juceFolder="../../../juce" jucerVersion="5.4.6" bundleIdentifier="com.roli.binarybuilder"\r
+              juceFolder="../../../juce" jucerVersion="5.4.7" bundleIdentifier="com.roli.binarybuilder"\r
               displaySplashScreen="0" reportAppUsage="0" companyName="ROLI Ltd."\r
               companyCopyright="ROLI Ltd.">\r
   <EXPORTFORMATS>\r
index 64c5e96d80eac4d251e6c07e6c2382c0a3f71b83..4ade9f34fb2a0cda0a364a296dd79abcb071f81f 100644 (file)
@@ -32,7 +32,7 @@ ifeq ($(CONFIG),Debug)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
   JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
@@ -53,7 +53,7 @@ ifeq ($(CONFIG),Release)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
   JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
index 8fcbef4aaf87e925bb1eff25fddce7e294ff0928..88f91e288e10a31e2bab1a3a9f8cd84ddb2041a5 100644 (file)
@@ -47,7 +47,7 @@
 \r
 #define JUCE_USE_DARK_SPLASH_SCREEN 1\r
 \r
-#define JUCE_PROJUCER_VERSION 0x50406\r
+#define JUCE_PROJUCER_VERSION 0x50407\r
 \r
 //==============================================================================\r
 #define JUCE_MODULE_AVAILABLE_juce_core      1\r
index c457c924777beec741155d5a2e945d4d81048f00..18a67b54564da963076209c4bdfa52a2a63f9011 100644 (file)
@@ -32,7 +32,7 @@ ifeq ($(CONFIG),Debug)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
   JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0 libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
@@ -53,7 +53,7 @@ ifeq ($(CONFIG),Release)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
   JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0 libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
index a5889ec1a42c273c3f71d7ac7d5dde3bf0ce2055..8b0ed52b7273c03081e4e329f35124d5cc99f762 100644 (file)
@@ -47,7 +47,7 @@
 \r
 #define JUCE_USE_DARK_SPLASH_SCREEN 1\r
 \r
-#define JUCE_PROJUCER_VERSION 0x50406\r
+#define JUCE_PROJUCER_VERSION 0x50407\r
 \r
 //==============================================================================\r
 #define JUCE_MODULE_AVAILABLE_juce_audio_basics          1\r
index 319f8865a6a2ad53dd03a003cac089d09f22cfd6..f9a08d9e477cb6457cbd2965b33b4e6ca6b4d153 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 \r
 <JUCERPROJECT id="gWI5Ir" name="NetworkGraphicsDemo" projectType="guiapp" bundleIdentifier="com.juce.NetworkGraphicsDemo"\r
-              jucerVersion="5.4.6" displaySplashScreen="0" reportAppUsage="0"\r
+              jucerVersion="5.4.7" displaySplashScreen="0" reportAppUsage="0"\r
               companyName="ROLI Ltd." companyCopyright="ROLI Ltd.">\r
   <MAINGROUP id="OT9rJ2" name="NetworkGraphicsDemo">\r
     <GROUP id="{48D54E6E-37F4-B20A-E038-C63E4EDFD4D9}" name="Source">\r
index b98883b30cee07a52e7d3045afd07949c5684b95..65fd56aa1daf6191358f562635d2a0d3dcb14a90 100644 (file)
@@ -32,10 +32,10 @@ ifeq ($(CONFIG),Debug)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
-  JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=5.4.6 -DJUCE_APP_VERSION_HEX=0x50406 $(shell pkg-config --cflags x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
+  JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=5.4.7 -DJUCE_APP_VERSION_HEX=0x50407 $(shell pkg-config --cflags x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
   JUCE_CPPFLAGS_APP := -DJucePlugin_Build_VST=0 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0 -DJucePlugin_Build_Unity=0
   JUCE_TARGET_APP := Projucer
 
@@ -53,10 +53,10 @@ ifeq ($(CONFIG),Release)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
-  JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=5.4.6 -DJUCE_APP_VERSION_HEX=0x50406 $(shell pkg-config --cflags x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
+  JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=5.4.7 -DJUCE_APP_VERSION_HEX=0x50407 $(shell pkg-config --cflags x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
   JUCE_CPPFLAGS_APP := -DJucePlugin_Build_VST=0 -DJucePlugin_Build_VST3=0 -DJucePlugin_Build_AU=0 -DJucePlugin_Build_AUv3=0 -DJucePlugin_Build_RTAS=0 -DJucePlugin_Build_AAX=0 -DJucePlugin_Build_Standalone=0 -DJucePlugin_Build_Unity=0
   JUCE_TARGET_APP := Projucer
 
index 6ea5928a41ff9b9c80ea91e24927ecbe19ddb560..90b42330876b9fc78108b93e144efc69947b7548 100644 (file)
@@ -3,21 +3,6 @@
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\r
 <plist>\r
   <dict>\r
-    <key>NSAppTransportSecurity</key>\r
-    <dict>\r
-      <key>NSAllowsArbitraryLoads</key>\r
-      <true/>\r
-      <key>NSExceptionDomains</key>\r
-      <dict>\r
-        <key>amazonaws.com</key>\r
-        <dict>\r
-          <key>NSExceptionAllowsInsecureHTTPLoads</key>\r
-          <true/>\r
-          <key>NSIncludesSubdomains</key>\r
-          <true/>\r
-        </dict>\r
-      </dict>\r
-    </dict>\r
     <key>NSMicrophoneUsageDescription</key>\r
     <string>This app requires audio input. If you do not have an audio interface connected it will use the built-in microphone.</string>\r
     <key>NSCameraUsageDescription</key>\r
@@ -37,9 +22,9 @@
     <key>CFBundleSignature</key>\r
     <string>????</string>\r
     <key>CFBundleShortVersionString</key>\r
-    <string>5.4.6</string>\r
+    <string>5.4.7</string>\r
     <key>CFBundleVersion</key>\r
-    <string>5.4.6</string>\r
+    <string>5.4.7</string>\r
     <key>NSHumanReadableCopyright</key>\r
     <string>ROLI Ltd.</string>\r
     <key>NSHighResolutionCapable</key>\r
index 3990ab682573d2ff2112dedbbb467007f4b973ef..94c16df9e8cf4d6a9a3b1e3c0c729dbd33533718 100644 (file)
                                        "_DEBUG=1",
                                        "DEBUG=1",
                                        "JUCER_XCODE_MAC_F6D2F4CF=1",
-                                       "JUCE_APP_VERSION=5.4.6",
-                                       "JUCE_APP_VERSION_HEX=0x50406",
+                                       "JUCE_APP_VERSION=5.4.7",
+                                       "JUCE_APP_VERSION_HEX=0x50407",
                                        "JucePlugin_Build_VST=0",
                                        "JucePlugin_Build_VST3=0",
                                        "JucePlugin_Build_AU=0",
                                        "_NDEBUG=1",
                                        "NDEBUG=1",
                                        "JUCER_XCODE_MAC_F6D2F4CF=1",
-                                       "JUCE_APP_VERSION=5.4.6",
-                                       "JUCE_APP_VERSION_HEX=0x50406",
+                                       "JUCE_APP_VERSION=5.4.7",
+                                       "JUCE_APP_VERSION_HEX=0x50407",
                                        "JucePlugin_Build_VST=0",
                                        "JucePlugin_Build_VST3=0",
                                        "JucePlugin_Build_AU=0",
index a72d79547930db958044f6f6bc4dfc3eae0fb13c..35ce8e3c597df27c1532f91fe359dabd185f3020 100644 (file)
@@ -64,7 +64,7 @@
       <Optimization>Disabled</Optimization>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=5.4.6;JUCE_APP_VERSION_HEX=0x50406;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=5.4.7;JUCE_APP_VERSION_HEX=0x50407;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>\r
       <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
       <PrecompiledHeader/>\r
     <ClCompile>\r
       <Optimization>Full</Optimization>\r
       <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=5.4.6;JUCE_APP_VERSION_HEX=0x50406;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2015_78A5022=1;JUCE_APP_VERSION=5.4.7;JUCE_APP_VERSION_HEX=0x50407;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
       <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
       <PrecompiledHeader/>\r
index 0dfcbc7f57583d298dcb909596165869c99519b0..3cc301e639da82e58b6cc43f142a13d1f75969e5 100644 (file)
@@ -7,7 +7,7 @@
 #include <windows.h>\r
 \r
 VS_VERSION_INFO VERSIONINFO\r
-FILEVERSION  5,4,6,0\r
+FILEVERSION  5,4,7,0\r
 BEGIN\r
   BLOCK "StringFileInfo"\r
   BEGIN\r
@@ -16,9 +16,9 @@ BEGIN
       VALUE "CompanyName",  "ROLI Ltd.\0"\r
       VALUE "LegalCopyright",  "ROLI Ltd.\0"\r
       VALUE "FileDescription",  "Projucer\0"\r
-      VALUE "FileVersion",  "5.4.6\0"\r
+      VALUE "FileVersion",  "5.4.7\0"\r
       VALUE "ProductName",  "Projucer\0"\r
-      VALUE "ProductVersion",  "5.4.6\0"\r
+      VALUE "ProductVersion",  "5.4.7\0"\r
     END\r
   END\r
 \r
index 0bc1479014dc87bcda14c40a5213856f213a9248..1bfe1bf054b9f0207be36a3d1d50b7148c88b583 100644 (file)
@@ -64,7 +64,7 @@
       <Optimization>Disabled</Optimization>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=5.4.6;JUCE_APP_VERSION_HEX=0x50406;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=5.4.7;JUCE_APP_VERSION_HEX=0x50407;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
       <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
       <PrecompiledHeader/>\r
     <ClCompile>\r
       <Optimization>Full</Optimization>\r
       <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=5.4.6;JUCE_APP_VERSION_HEX=0x50406;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2017_78A5024=1;JUCE_APP_VERSION=5.4.7;JUCE_APP_VERSION_HEX=0x50407;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
       <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
       <PrecompiledHeader/>\r
index 0dfcbc7f57583d298dcb909596165869c99519b0..3cc301e639da82e58b6cc43f142a13d1f75969e5 100644 (file)
@@ -7,7 +7,7 @@
 #include <windows.h>\r
 \r
 VS_VERSION_INFO VERSIONINFO\r
-FILEVERSION  5,4,6,0\r
+FILEVERSION  5,4,7,0\r
 BEGIN\r
   BLOCK "StringFileInfo"\r
   BEGIN\r
@@ -16,9 +16,9 @@ BEGIN
       VALUE "CompanyName",  "ROLI Ltd.\0"\r
       VALUE "LegalCopyright",  "ROLI Ltd.\0"\r
       VALUE "FileDescription",  "Projucer\0"\r
-      VALUE "FileVersion",  "5.4.6\0"\r
+      VALUE "FileVersion",  "5.4.7\0"\r
       VALUE "ProductName",  "Projucer\0"\r
-      VALUE "ProductVersion",  "5.4.6\0"\r
+      VALUE "ProductVersion",  "5.4.7\0"\r
     END\r
   END\r
 \r
index dc49d5194a5eebe71b18173cc13049d3eba403ab..c5a3d25f3bf51260593c99ee5a470a544bbcd72d 100644 (file)
@@ -64,7 +64,7 @@
       <Optimization>Disabled</Optimization>\r
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
       <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=5.4.6;JUCE_APP_VERSION_HEX=0x50406;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;DEBUG;_DEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=5.4.7;JUCE_APP_VERSION_HEX=0x50407;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>\r
       <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
       <PrecompiledHeader/>\r
     <ClCompile>\r
       <Optimization>Full</Optimization>\r
       <AdditionalIncludeDirectories>..\..\JuceLibraryCode;..\..\..\..\modules;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>\r
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=5.4.6;JUCE_APP_VERSION_HEX=0x50406;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_WINDOWS;NDEBUG;JUCER_VS2019_78A5026=1;JUCE_APP_VERSION=5.4.7;JUCE_APP_VERSION_HEX=0x50407;JucePlugin_Build_VST=0;JucePlugin_Build_VST3=0;JucePlugin_Build_AU=0;JucePlugin_Build_AUv3=0;JucePlugin_Build_RTAS=0;JucePlugin_Build_AAX=0;JucePlugin_Build_Standalone=0;JucePlugin_Build_Unity=0;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\r
       <RuntimeTypeInfo>true</RuntimeTypeInfo>\r
       <PrecompiledHeader/>\r
index 0dfcbc7f57583d298dcb909596165869c99519b0..3cc301e639da82e58b6cc43f142a13d1f75969e5 100644 (file)
@@ -7,7 +7,7 @@
 #include <windows.h>\r
 \r
 VS_VERSION_INFO VERSIONINFO\r
-FILEVERSION  5,4,6,0\r
+FILEVERSION  5,4,7,0\r
 BEGIN\r
   BLOCK "StringFileInfo"\r
   BEGIN\r
@@ -16,9 +16,9 @@ BEGIN
       VALUE "CompanyName",  "ROLI Ltd.\0"\r
       VALUE "LegalCopyright",  "ROLI Ltd.\0"\r
       VALUE "FileDescription",  "Projucer\0"\r
-      VALUE "FileVersion",  "5.4.6\0"\r
+      VALUE "FileVersion",  "5.4.7\0"\r
       VALUE "ProductName",  "Projucer\0"\r
-      VALUE "ProductVersion",  "5.4.6\0"\r
+      VALUE "ProductVersion",  "5.4.7\0"\r
     END\r
   END\r
 \r
index e9598ed9d49d1352cca7534b333fd2df823f3ece..cb5a32449f69da0cb873b01eff67f0e07626464f 100644 (file)
@@ -66,7 +66,7 @@
 \r
 #define JUCE_USE_DARK_SPLASH_SCREEN 1\r
 \r
-#define JUCE_PROJUCER_VERSION 0x50406\r
+#define JUCE_PROJUCER_VERSION 0x50407\r
 \r
 //==============================================================================\r
 #define JUCE_MODULE_AVAILABLE_juce_analytics            1\r
index acb1d2cf220915579ea0b8a7ea52fd34f037f62e..abc5ebe606a65a200f7581eb83a14e1bd5ad1d77 100644 (file)
@@ -45,7 +45,7 @@ namespace ProjectInfo
 {\r
     const char* const  projectName    = "Projucer";\r
     const char* const  companyName    = "ROLI Ltd.";\r
-    const char* const  versionString  = "5.4.6";\r
-    const int          versionNumber  = 0x50406;\r
+    const char* const  versionString  = "5.4.7";\r
+    const int          versionNumber  = 0x50407;\r
 }\r
 #endif\r
index 0df4502653b4b72036b811ca516db454ad3ba53f..4e877daa0d9a29bc96e2ed0103502dfb7b1afd0e 100644 (file)
@@ -1,13 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 \r
 <JUCERPROJECT id="M70qfTRRk" name="Projucer" projectType="guiapp" juceFolder="../../juce"\r
-              jucerVersion="5.4.6" version="5.4.6" bundleIdentifier="com.juce.theprojucer"\r
+              jucerVersion="5.4.7" version="5.4.7" bundleIdentifier="com.juce.theprojucer"\r
               splashScreenColour="Dark" displaySplashScreen="0" reportAppUsage="0"\r
               companyName="ROLI Ltd." companyCopyright="ROLI Ltd." cppLanguageStandard="11">\r
   <EXPORTFORMATS>\r
     <XCODE_MAC targetFolder="Builds/MacOSX" vstFolder="~/SDKs/vstsdk2.4" rtasFolder="~/SDKs/PT_80_SDK"\r
                documentExtensions=".jucer" objCExtraSuffix="zkVtji" bigIcon="rv1F4h"\r
-               customPList="&lt;plist&gt;&#10;&lt;dict&gt;&#10;&#9;&lt;key&gt;NSAppTransportSecurity&lt;/key&gt;&#10;&#9;&lt;dict&gt;&#10;&#9;&#9;&lt;key&gt;NSAllowsArbitraryLoads&lt;/key&gt;&#10;&#9;&#9;&lt;true/&gt;&#10;&#9;&#9;&lt;key&gt;NSExceptionDomains&lt;/key&gt;&#10;&#9;&#9;&lt;dict&gt;&#10;&#9;&#9;&#9;&lt;key&gt;amazonaws.com&lt;/key&gt;&#10;&#9;&#9;&#9;&lt;dict&gt;&#10;&#9;&#9;&#9;&#9;&lt;key&gt;NSExceptionAllowsInsecureHTTPLoads&lt;/key&gt;&#10;&#9;&#9;&#9;&#9;&lt;true/&gt;&#10;&#9;&#9;&#9;&#9;&lt;key&gt;NSIncludesSubdomains&lt;/key&gt;&#10;&#9;&#9;&#9;&#9;&lt;true/&gt;&#10;&#9;&#9;&#9;&lt;/dict&gt;&#10;&#9;&#9;&lt;/dict&gt;&#10;&#9;&lt;/dict&gt;&#10;&lt;/dict&gt;&#10;&lt;/plist&gt;"\r
                extraFrameworks="AudioUnit; Accelerate; AVFoundation; CoreAudio; CoreAudioKit; CoreMIDI; DiscRecording; QuartzCore; AudioToolbox; OpenGL; QTKit; QuickTime"\r
                microphonePermissionNeeded="1" cameraPermissionNeeded="1">\r
       <CONFIGURATIONS>\r
index 4dee4ce789a856ac2d30d7b5dbf924e872e0117f..67eda31db62267dc1234a04fe39d4f069adaf695 100644 (file)
@@ -75,14 +75,8 @@ public:
         auto juceValue = getAppSettings().getStoredPath (Ids::defaultJuceModulePath, TargetOS::getThisOS());\r
         auto userValue = getAppSettings().getStoredPath (Ids::defaultUserModulePath, TargetOS::getThisOS());\r
 \r
-        auto jucePathNeedsScanning = (! juceValue.isUsingDefault() && juceValue.get() != lastJUCEModulePath);\r
-        auto userPathNeedsScanning = (! userValue.isUsingDefault() && userValue.get() != lastUserModulePath);\r
-\r
-        if (jucePathNeedsScanning)\r
-            ProjucerApplication::getApp().rescanJUCEPathModules();\r
-\r
-        if (userPathNeedsScanning)\r
-            ProjucerApplication::getApp().rescanUserPathModules();\r
+        if (juceValue.get() != lastJUCEModulePath)  ProjucerApplication::getApp().rescanJUCEPathModules();\r
+        if (userValue.get() != lastUserModulePath)  ProjucerApplication::getApp().rescanUserPathModules();\r
     }\r
 \r
     void paint (Graphics& g) override\r
index d852991a71199063d6f3856f2be138e7f002435a..fdaa55c44f14eb9801a2f2c814754a0d1fc771c0 100644 (file)
@@ -256,7 +256,7 @@ public:
         build.setGlobalDefs (getGlobalDefs());\r
         build.setCompileFlags (project.getCompileEngineSettings().getExtraCompilerFlagsString());\r
         build.setExtraDLLs (getExtraDLLs());\r
-        build.setJuceModulesFolder (EnabledModuleList::findDefaultModulesFolder (project).getFullPathName());\r
+        build.setJuceModulesFolder (project.getEnabledModules().getDefaultModulesFolder().getFullPathName());\r
 \r
         build.setUtilsCppInclude (project.getAppIncludeFile().getFullPathName());\r
 \r
@@ -388,10 +388,10 @@ private:
                 {\r
                     for (auto* m : modules)\r
                     {\r
-                        auto localModuleFolder = proj.getEnabledModules().shouldCopyModuleFilesLocally (m->moduleInfo.getID()).getValue()\r
-                                                        ? proj.getLocalModuleFolder (m->moduleInfo.getID())\r
-                                                        : m->moduleInfo.getFolder();\r
+                        auto copyLocally = proj.getEnabledModules().shouldCopyModuleFilesLocally (m->moduleInfo.getID());\r
 \r
+                        auto localModuleFolder = copyLocally ? proj.getLocalModuleFolder (m->moduleInfo.getID())\r
+                                                             : m->moduleInfo.getFolder();\r
 \r
                         m->findAndAddCompiledUnits (*exporter, nullptr, compileUnits,\r
                                                     isPluginProject || isVSTHost ? ProjectType::Target::SharedCodeTarget\r
index 7917a4fdd4b476f6d54af75f7d34e0fa2ffd3616..709a23a243caa329d87eafa3c5baa237b2bfe29e 100644 (file)
@@ -153,6 +153,7 @@ private:
             group.properties.clear();\r
             exporterModulePathDefaultValues.clear();\r
             exporterModulePathValues.clear();\r
+            globalPathValues.clear();\r
 \r
             for (Project::ExporterIterator exporter (project); exporter.next();)\r
             {\r
@@ -179,34 +180,39 @@ private:
                            "This can be an absolute path, or relative to the jucer project folder, but it "\r
                            "must be valid on the filesystem of the target machine that will be performing this build. If this "\r
                            "is empty then the global path will be used.");\r
+\r
+                globalPathValues.add (getAppSettings().getStoredPath (isJUCEModule (moduleID) ? Ids::defaultJuceModulePath : Ids::defaultUserModulePath,\r
+                                                                      exporter->getTargetOSForExporter()).getPropertyAsValue());\r
             }\r
 \r
             for (int i = 0; i < exporterModulePathDefaultValues.size(); ++i)\r
             {\r
                 exporterModulePathDefaultValues.getReference (i).onDefaultChange = [this] { startTimer (50); };\r
+\r
                 exporterModulePathValues.getReference (i).addListener (this);\r
+                globalPathValues.getReference (i).addListener (this);\r
             }\r
 \r
-            globalPathValue.removeListener (this);\r
-            globalPathValue.referTo (modules.getShouldUseGlobalPathValue (moduleID));\r
-            globalPathValue.addListener (this);\r
+            useGlobalPathValue.removeListener (this);\r
+            useGlobalPathValue.referTo (modules.shouldUseGlobalPathValue (moduleID));\r
+            useGlobalPathValue.addListener (this);\r
 \r
             auto menuItemString = (TargetOS::getThisOS() == TargetOS::osx ? "\"Projucer->Global Paths...\""\r
                                                                           : "\"File->Global Paths...\"");\r
 \r
-            props.add (new BooleanPropertyComponent (globalPathValue,\r
+            props.add (new BooleanPropertyComponent (useGlobalPathValue,\r
                                                      "Use global path", "Use global path for this module"),\r
                        String ("If this is enabled, then the locally-stored global path (set in the ") + menuItemString + " menu item) "\r
                        "will be used as the path to this module. "\r
                        "This means that if this Projucer project is opened on another machine it will use that machine's global path as the path to this module.");\r
 \r
-            props.add (new BooleanPropertyComponent (modules.shouldCopyModuleFilesLocally (moduleID),\r
+            props.add (new BooleanPropertyComponent (modules.shouldCopyModuleFilesLocallyValue (moduleID),\r
                                                      "Create local copy", "Copy the module into the project folder"),\r
                        "If this is enabled, then a local copy of the entire module will be made inside your project (in the auto-generated JuceLibraryFiles folder), "\r
                        "so that your project will be self-contained, and won't need to contain any references to files in other folders. "\r
                        "This also means that you can check the module into your source-control system to make sure it is always in sync with your own code.");\r
 \r
-            props.add (new BooleanPropertyComponent (modules.shouldShowAllModuleFilesInProject (moduleID),\r
+            props.add (new BooleanPropertyComponent (modules.shouldShowAllModuleFilesInProjectValue (moduleID),\r
                                                      "Add source to project", "Make module files browsable in projects"),\r
                        "If this is enabled, then the entire source tree from this module will be shown inside your project, "\r
                        "making it easy to browse/edit the module's classes. If disabled, then only the minimum number of files "\r
@@ -262,8 +268,8 @@ private:
 \r
         //==============================================================================\r
         Array<ValueWithDefault> exporterModulePathDefaultValues;\r
-        Array<Value> exporterModulePathValues;\r
-        Value globalPathValue;\r
+        Array<Value> exporterModulePathValues, globalPathValues;\r
+        Value useGlobalPathValue;\r
 \r
         OwnedArray <Project::ConfigFlag> configFlags;\r
 \r
@@ -475,7 +481,7 @@ class EnabledModulesItem   : public ProjectTreeItemBase,
 public:\r
     EnabledModulesItem (Project& p)\r
         : project (p),\r
-          moduleListTree (p.getEnabledModules().state)\r
+          moduleListTree (project.getEnabledModules().getState())\r
     {\r
         moduleListTree.addListener (this);\r
 \r
@@ -618,7 +624,7 @@ public:
         }\r
         else if (resultCode > 0)\r
         {\r
-            std::vector<ModuleIDAndFolder> list;\r
+            std::vector<AvailableModuleList::ModuleIDAndFolder> list;\r
             int offset = -1;\r
 \r
             if (resultCode < 200)\r
index 0b2ef9f60a60967d9efb6268fdbbf8a05fbe38b8..d78f9c02b5ea42f738d43007d82d56e5da813470 100644 (file)
@@ -35,7 +35,7 @@ class ModulesInformationComponent  : public Component,
 public:\r
     ModulesInformationComponent (Project& p)\r
         : project (p),\r
-          modulesValueTree (p.getEnabledModules().state)\r
+          modulesValueTree (project.getEnabledModules().getState())\r
     {\r
         listHeader = new ListBoxHeader ( { "Module", "Version", "Make Local Copy", "Paths" },\r
                                         { 0.25f, 0.2f, 0.2f, 0.35f } );\r
@@ -135,9 +135,8 @@ public:
         g.drawFittedText (version, bounds.removeFromLeft (roundToInt (listHeader->getProportionAtIndex (1) * width)), Justification::centredLeft, 1);\r
 \r
         //==============================================================================\r
-        auto copyLocally = project.getEnabledModules().shouldCopyModuleFilesLocally (moduleID).getValue() ? "Yes" : "No";\r
-\r
-        g.drawFittedText (copyLocally, bounds.removeFromLeft (roundToInt (listHeader->getProportionAtIndex (2) * width)), Justification::centredLeft, 1);\r
+        g.drawFittedText (String (project.getEnabledModules().shouldCopyModuleFilesLocally (moduleID) ? "Yes" : "No"),\r
+                          bounds.removeFromLeft (roundToInt (listHeader->getProportionAtIndex (2) * width)), Justification::centredLeft, 1);\r
 \r
         //==============================================================================\r
         String pathText;\r
@@ -215,33 +214,41 @@ private:
         repaint();\r
     }\r
 \r
+    static void setLocalCopyModeForAllModules (Project& project, bool copyLocally)\r
+    {\r
+        auto& modules = project.getEnabledModules();\r
+\r
+        for (auto i = modules.getNumModules(); --i >= 0;)\r
+           modules.shouldCopyModuleFilesLocallyValue (modules.getModuleID (i)) = copyLocally;\r
+    }\r
+\r
     void showCopyModeMenu()\r
     {\r
         PopupMenu m;\r
 \r
         m.addItem (PopupMenu::Item ("Set all modules to copy locally")\r
-                     .setAction ([&] { project.getEnabledModules().setLocalCopyModeForAllModules (true); }));\r
+                     .setAction ([&] { setLocalCopyModeForAllModules (project, true); }));\r
 \r
         m.addItem (PopupMenu::Item ("Set all modules to not copy locally")\r
-                     .setAction ([&] { project.getEnabledModules().setLocalCopyModeForAllModules (false); }));\r
+                     .setAction ([&] { setLocalCopyModeForAllModules (project, false); }));\r
 \r
         m.showMenuAsync (PopupMenu::Options().withTargetComponent (setCopyModeButton));\r
     }\r
 \r
     static void setAllModulesToUseGlobalPaths (Project& project, bool useGlobal)\r
     {\r
-        auto& moduleList = project.getEnabledModules();\r
+        auto& modules = project.getEnabledModules();\r
 \r
-        for (auto id : moduleList.getAllModules())\r
-            moduleList.getShouldUseGlobalPathValue (id).setValue (useGlobal);\r
+        for (auto moduleID : modules.getAllModules())\r
+            modules.shouldUseGlobalPathValue (moduleID) = useGlobal;\r
     }\r
 \r
     static void setSelectedModulesToUseGlobalPaths (Project& project, SparseSet<int> selected, bool useGlobal)\r
     {\r
-        auto& moduleList = project.getEnabledModules();\r
+        auto& modules = project.getEnabledModules();\r
 \r
         for (int i = 0; i < selected.size(); ++i)\r
-            moduleList.getShouldUseGlobalPathValue (moduleList.getModuleID (selected[i])).setValue (useGlobal);\r
+            modules.shouldUseGlobalPathValue (modules.getModuleID (selected[i])) = useGlobal;\r
     }\r
 \r
     void showGlobalPathsMenu()\r
index a81d322ce3df52e27c41b95e255b29fbbe337d8d..f5ea011bbe6aa0bf481f9dcf30e6b406702ebdca 100644 (file)
@@ -40,7 +40,7 @@ File ModuleDescription::getHeader() const
 {\r
     if (moduleFolder != File())\r
     {\r
-        const char* extensions[] = { ".h", ".hpp", ".hxx" };\r
+        static const char* extensions[] = { ".h", ".hpp", ".hxx" };\r
 \r
         for (auto e : extensions)\r
         {\r
@@ -56,14 +56,15 @@ File ModuleDescription::getHeader() const
 \r
 StringArray ModuleDescription::getDependencies() const\r
 {\r
-    auto deps = StringArray::fromTokens (moduleInfo ["dependencies"].toString(), " \t;,", "\"'");\r
-    deps.trim();\r
-    deps.removeEmptyStrings();\r
-    return deps;\r
+    auto moduleDependencies = StringArray::fromTokens (moduleInfo ["dependencies"].toString(), " \t;,", "\"'");\r
+    moduleDependencies.trim();\r
+    moduleDependencies.removeEmptyStrings();\r
+\r
+    return moduleDependencies;\r
 }\r
 \r
 //==============================================================================\r
-static bool tryToAddModuleFromFolder (const File& path, ModuleIDAndFolderList& list)\r
+static bool tryToAddModuleFromFolder (const File& path, AvailableModuleList::ModuleIDAndFolderList& list)\r
 {\r
     ModuleDescription m (path);\r
 \r
@@ -76,7 +77,7 @@ static bool tryToAddModuleFromFolder (const File& path, ModuleIDAndFolderList& l
     return false;\r
 }\r
 \r
-static void addAllModulesInSubfoldersRecursively (const File& path, int depth, ModuleIDAndFolderList& list)\r
+static void addAllModulesInSubfoldersRecursively (const File& path, int depth, AvailableModuleList::ModuleIDAndFolderList& list)\r
 {\r
     if (depth > 0)\r
     {\r
@@ -94,27 +95,19 @@ static void addAllModulesInSubfoldersRecursively (const File& path, int depth, M
     }\r
 }\r
 \r
-static void addAllModulesInFolder (const File& path, ModuleIDAndFolderList& list)\r
+static void addAllModulesInFolder (const File& path, AvailableModuleList::ModuleIDAndFolderList& list)\r
 {\r
     if (! tryToAddModuleFromFolder (path, list))\r
     {\r
-        int subfolders = 3;\r
+        static constexpr int subfolders = 3;\r
         addAllModulesInSubfoldersRecursively (path, subfolders, list);\r
     }\r
 }\r
 \r
-static void sort (ModuleIDAndFolderList& listToSort)\r
-{\r
-    std::sort (listToSort.begin(), listToSort.end(), [] (const ModuleIDAndFolder& m1, const ModuleIDAndFolder& m2)\r
-                                                     {\r
-                                                         return m1.first.compareIgnoreCase (m2.first) < 0;\r
-                                                     });\r
-}\r
-\r
-//==============================================================================\r
-struct ModuleScannerJob    : public ThreadPoolJob\r
+struct ModuleScannerJob  : public ThreadPoolJob\r
 {\r
-    ModuleScannerJob (const Array<File>& paths, std::function<void (const ModuleIDAndFolderList&)>&& callback)\r
+    ModuleScannerJob (const Array<File>& paths,\r
+                      std::function<void (const AvailableModuleList::ModuleIDAndFolderList&)>&& callback)\r
         : ThreadPoolJob ("ModuleScannerJob"),\r
           pathsToScan (paths),\r
           completionCallback (std::move (callback))\r
@@ -123,14 +116,19 @@ struct ModuleScannerJob    : public ThreadPoolJob
 \r
     JobStatus runJob() override\r
     {\r
-        ModuleIDAndFolderList list;\r
+        AvailableModuleList::ModuleIDAndFolderList list;\r
 \r
         for (auto& p : pathsToScan)\r
             addAllModulesInFolder (p, list);\r
 \r
         if (! shouldExit())\r
         {\r
-            sort (list);\r
+            std::sort (list.begin(), list.end(), [] (const AvailableModuleList::ModuleIDAndFolder& m1,\r
+                                                     const AvailableModuleList::ModuleIDAndFolder& m2)\r
+            {\r
+                return m1.first.compareIgnoreCase (m2.first) < 0;\r
+            });\r
+\r
             completionCallback (list);\r
         }\r
 \r
@@ -138,16 +136,12 @@ struct ModuleScannerJob    : public ThreadPoolJob
     }\r
 \r
     Array<File> pathsToScan;\r
-    std::function<void (const ModuleIDAndFolderList&)> completionCallback;\r
+    std::function<void (const AvailableModuleList::ModuleIDAndFolderList&)> completionCallback;\r
 };\r
 \r
-AvailableModuleList::AvailableModuleList()\r
-{\r
-}\r
-\r
 ThreadPoolJob* AvailableModuleList::createScannerJob (const Array<File>& paths)\r
 {\r
-    return new ModuleScannerJob (paths, [this] (ModuleIDAndFolderList scannedModuleList)\r
+    return new ModuleScannerJob (paths, [this] (AvailableModuleList::ModuleIDAndFolderList scannedModuleList)\r
                                         {\r
                                             {\r
                                                 const ScopedLock swapLock (lock);\r
@@ -177,14 +171,13 @@ void AvailableModuleList::scanPathsAsync (const Array<File>& paths)
     removePendingAndAddJob (createScannerJob (paths));\r
 }\r
 \r
-ModuleIDAndFolderList AvailableModuleList::getAllModules() const\r
+AvailableModuleList::ModuleIDAndFolderList AvailableModuleList::getAllModules() const\r
 {\r
     const ScopedLock readLock (lock);\r
-\r
     return moduleList;\r
 }\r
 \r
-ModuleIDAndFolder AvailableModuleList::getModuleWithID (const String& id) const\r
+AvailableModuleList::ModuleIDAndFolder AvailableModuleList::getModuleWithID (const String& id) const\r
 {\r
     const ScopedLock readLock (lock);\r
 \r
@@ -214,19 +207,18 @@ LibraryModule::LibraryModule (const ModuleDescription& d)
 {\r
 }\r
 \r
-//==============================================================================\r
 void LibraryModule::writeIncludes (ProjectSaver& projectSaver, OutputStream& out)\r
 {\r
     auto& project = projectSaver.project;\r
     auto& modules = project.getEnabledModules();\r
 \r
-    auto id = getID();\r
+    auto moduleID = getID();\r
 \r
-    if (modules.shouldCopyModuleFilesLocally (id).getValue())\r
+    if (modules.shouldCopyModuleFilesLocally (moduleID))\r
     {\r
         auto juceModuleFolder = moduleInfo.getFolder();\r
 \r
-        auto localModuleFolder = project.getLocalModuleFolder (id);\r
+        auto localModuleFolder = project.getLocalModuleFolder (moduleID);\r
         localModuleFolder.createDirectory();\r
         projectSaver.copyFolder (juceModuleFolder, localModuleFolder);\r
     }\r
@@ -236,23 +228,14 @@ void LibraryModule::writeIncludes (ProjectSaver& projectSaver, OutputStream& out
         << ">" << newLine;\r
 }\r
 \r
-//==============================================================================\r
-static void parseAndAddLibs (StringArray& libList, const String& libs)\r
-{\r
-    libList.addTokens (libs, ", ", {});\r
-    libList.trim();\r
-    libList.removeDuplicates (false);\r
-}\r
-\r
-void LibraryModule::addSettingsForModuleToExporter (ProjectExporter& exporter, ProjectSaver& projectSaver) const\r
+void LibraryModule::addSearchPathsToExporter (ProjectExporter& exporter) const\r
 {\r
-    auto& project = exporter.getProject();\r
-\r
     auto moduleRelativePath = exporter.getModuleFolderRelativeToProject (getID());\r
 \r
     exporter.addToExtraSearchPaths (moduleRelativePath.getParentDirectory());\r
 \r
     String libDirPlatform;\r
+\r
     if (exporter.isLinux())\r
         libDirPlatform = "Linux";\r
     else if (exporter.isCodeBlocks() && exporter.isWindows())\r
@@ -261,7 +244,7 @@ void LibraryModule::addSettingsForModuleToExporter (ProjectExporter& exporter, P
         libDirPlatform = exporter.getTargetFolder().getFileName();\r
 \r
     auto libSubdirPath = moduleRelativePath.toUnixStyle() + "/libs/" + libDirPlatform;\r
-    auto moduleLibDir = File (project.getProjectFolder().getFullPathName() + "/" + libSubdirPath);\r
+    auto moduleLibDir = File (exporter.getProject().getProjectFolder().getFullPathName() + "/" + libSubdirPath);\r
 \r
     if (moduleLibDir.exists())\r
         exporter.addToModuleLibPaths ({ libSubdirPath, moduleRelativePath.getRoot() });\r
@@ -275,27 +258,43 @@ void LibraryModule::addSettingsForModuleToExporter (ProjectExporter& exporter, P
         for (auto& path : paths)\r
             exporter.addToExtraSearchPaths (moduleRelativePath.getChildFile (path.unquoted()));\r
     }\r
+}\r
 \r
-    {\r
-        auto extraDefs = moduleInfo.getPreprocessorDefs().trim();\r
+void LibraryModule::addDefinesToExporter (ProjectExporter& exporter) const\r
+{\r
+    auto extraDefs = moduleInfo.getPreprocessorDefs().trim();\r
 \r
-        if (extraDefs.isNotEmpty())\r
-            exporter.getExporterPreprocessorDefsValue() = exporter.getExporterPreprocessorDefsString() + "\n" + extraDefs;\r
-    }\r
+    if (extraDefs.isNotEmpty())\r
+        exporter.getExporterPreprocessorDefsValue() = exporter.getExporterPreprocessorDefsString() + "\n" + extraDefs;\r
+}\r
 \r
-    {\r
-        Array<File> compiled;\r
-        auto& modules = project.getEnabledModules();\r
-        auto id = getID();\r
+void LibraryModule::addCompileUnitsToExporter (ProjectExporter& exporter, ProjectSaver& projectSaver) const\r
+{\r
+    auto& project = exporter.getProject();\r
+    auto& modules = project.getEnabledModules();\r
 \r
-        auto localModuleFolder = modules.shouldCopyModuleFilesLocally (id).getValue() ? project.getLocalModuleFolder (id)\r
-                                                                                      : moduleInfo.getFolder();\r
+    auto moduleID = getID();\r
 \r
-        findAndAddCompiledUnits (exporter, &projectSaver, compiled);\r
+    auto localModuleFolder = modules.shouldCopyModuleFilesLocally (moduleID) ? project.getLocalModuleFolder (moduleID)\r
+                                                                             : moduleInfo.getFolder();\r
 \r
-        if (modules.shouldShowAllModuleFilesInProject (id).getValue())\r
-            addBrowseableCode (exporter, compiled, localModuleFolder);\r
-    }\r
+    Array<File> compiled;\r
+    findAndAddCompiledUnits (exporter, &projectSaver, compiled);\r
+\r
+    if (modules.shouldShowAllModuleFilesInProject (moduleID))\r
+        addBrowseableCode (exporter, compiled, localModuleFolder);\r
+}\r
+\r
+void LibraryModule::addLibsToExporter (ProjectExporter& exporter) const\r
+{\r
+    auto parseAndAddLibsToList = [] (StringArray& libList, const String& libs)\r
+    {\r
+        libList.addTokens (libs, ", ", {});\r
+        libList.trim();\r
+        libList.removeDuplicates (false);\r
+    };\r
+\r
+    auto& project = exporter.getProject();\r
 \r
     if (exporter.isXcode())\r
     {\r
@@ -312,26 +311,34 @@ void LibraryModule::addSettingsForModuleToExporter (ProjectExporter& exporter, P
         auto frameworks = moduleInfo.moduleInfo [xcodeExporter.isOSX() ? "OSXFrameworks" : "iOSFrameworks"].toString();\r
         xcodeExporter.xcodeFrameworks.addTokens (frameworks, ", ", {});\r
 \r
-        parseAndAddLibs (xcodeExporter.xcodeLibs, moduleInfo.moduleInfo [exporter.isOSX() ? "OSXLibs" : "iOSLibs"].toString());\r
+        parseAndAddLibsToList (xcodeExporter.xcodeLibs, moduleInfo.moduleInfo [exporter.isOSX() ? "OSXLibs" : "iOSLibs"].toString());\r
     }\r
     else if (exporter.isLinux())\r
     {\r
-        parseAndAddLibs (exporter.linuxLibs, moduleInfo.moduleInfo ["linuxLibs"].toString());\r
-        parseAndAddLibs (exporter.linuxPackages, moduleInfo.moduleInfo ["linuxPackages"].toString());\r
+        parseAndAddLibsToList (exporter.linuxLibs, moduleInfo.moduleInfo ["linuxLibs"].toString());\r
+        parseAndAddLibsToList (exporter.linuxPackages, moduleInfo.moduleInfo ["linuxPackages"].toString());\r
     }\r
     else if (exporter.isWindows())\r
     {\r
         if (exporter.isCodeBlocks())\r
-            parseAndAddLibs (exporter.mingwLibs, moduleInfo.moduleInfo ["mingwLibs"].toString());\r
+            parseAndAddLibsToList (exporter.mingwLibs, moduleInfo.moduleInfo ["mingwLibs"].toString());\r
         else\r
-            parseAndAddLibs (exporter.windowsLibs, moduleInfo.moduleInfo ["windowsLibs"].toString());\r
+            parseAndAddLibsToList (exporter.windowsLibs, moduleInfo.moduleInfo ["windowsLibs"].toString());\r
     }\r
     else if (exporter.isAndroid())\r
     {\r
-        parseAndAddLibs (exporter.androidLibs, moduleInfo.moduleInfo ["androidLibs"].toString());\r
+        parseAndAddLibsToList (exporter.androidLibs, moduleInfo.moduleInfo ["androidLibs"].toString());\r
     }\r
 }\r
 \r
+void LibraryModule::addSettingsForModuleToExporter (ProjectExporter& exporter, ProjectSaver& projectSaver) const\r
+{\r
+    addSearchPathsToExporter (exporter);\r
+    addDefinesToExporter (exporter);\r
+    addCompileUnitsToExporter (exporter, projectSaver);\r
+    addLibsToExporter (exporter);\r
+}\r
+\r
 void LibraryModule::getConfigFlags (Project& project, OwnedArray<Project::ConfigFlag>& flags) const\r
 {\r
     auto header = moduleInfo.getHeader();\r
@@ -384,7 +391,25 @@ void LibraryModule::getConfigFlags (Project& project, OwnedArray<Project::Config
     }\r
 }\r
 \r
-//==============================================================================\r
+static void addFileWithGroups (Project::Item& group, const RelativePath& file, const String& path)\r
+{\r
+    auto slash = path.indexOfChar (File::getSeparatorChar());\r
+\r
+    if (slash >= 0)\r
+    {\r
+        auto topLevelGroup = path.substring (0, slash);\r
+        auto remainingPath = path.substring (slash + 1);\r
+\r
+        auto newGroup = group.getOrCreateSubGroup (topLevelGroup);\r
+        addFileWithGroups (newGroup, file, remainingPath);\r
+    }\r
+    else\r
+    {\r
+        if (! group.containsChildForFile (file))\r
+            group.addRelativeFile (file, -1, false);\r
+    }\r
+}\r
+\r
 struct FileSorter\r
 {\r
     static int compareElements (const File& f1, const File& f2)\r
@@ -393,16 +418,19 @@ struct FileSorter
     }\r
 };\r
 \r
-bool LibraryModule::CompileUnit::hasSuffix (const File& f, const char* suffix)\r
+void LibraryModule::findBrowseableFiles (const File& folder, Array<File>& filesFound) const\r
 {\r
-    auto fileWithoutSuffix = f.getFileNameWithoutExtension() + ".";\r
+    Array<File> tempList;\r
+    FileSorter sorter;\r
 \r
-    return fileWithoutSuffix.containsIgnoreCase (suffix + String ("."))\r
-             || fileWithoutSuffix.containsIgnoreCase (suffix + String ("_"));\r
-}\r
+    DirectoryIterator iter (folder, true, "*", File::findFiles);\r
+    bool isHiddenFile;\r
 \r
-void LibraryModule::CompileUnit::writeInclude (MemoryOutputStream&) const\r
-{\r
+    while (iter.next (nullptr, &isHiddenFile, nullptr, nullptr, nullptr, nullptr))\r
+        if (! isHiddenFile && iter.getFile().hasFileExtension (browseableFileExtensions))\r
+            tempList.addSorted (sorter, iter.getFile());\r
+\r
+    filesFound.addArray (tempList);\r
 }\r
 \r
 bool LibraryModule::CompileUnit::isNeededForExporter (ProjectExporter& exporter) const\r
@@ -428,6 +456,14 @@ String LibraryModule::CompileUnit::getFilenameForProxyFile() const
     return "include_" + file.getFileName();\r
 }\r
 \r
+bool LibraryModule::CompileUnit::hasSuffix (const File& f, const char* suffix)\r
+{\r
+    auto fileWithoutSuffix = f.getFileNameWithoutExtension() + ".";\r
+\r
+    return fileWithoutSuffix.containsIgnoreCase (suffix + String ("."))\r
+             || fileWithoutSuffix.containsIgnoreCase (suffix + String ("_"));\r
+}\r
+\r
 Array<LibraryModule::CompileUnit> LibraryModule::getAllCompileUnits (ProjectType::Target::Type forTarget) const\r
 {\r
     auto files = getFolder().findChildFiles (File::findFiles, false);\r
@@ -486,40 +522,6 @@ void LibraryModule::findAndAddCompiledUnits (ProjectExporter& exporter,
     }\r
 }\r
 \r
-static void addFileWithGroups (Project::Item& group, const RelativePath& file, const String& path)\r
-{\r
-    auto slash = path.indexOfChar (File::getSeparatorChar());\r
-\r
-    if (slash >= 0)\r
-    {\r
-        auto topLevelGroup = path.substring (0, slash);\r
-        auto remainingPath = path.substring (slash + 1);\r
-\r
-        auto newGroup = group.getOrCreateSubGroup (topLevelGroup);\r
-        addFileWithGroups (newGroup, file, remainingPath);\r
-    }\r
-    else\r
-    {\r
-        if (! group.containsChildForFile (file))\r
-            group.addRelativeFile (file, -1, false);\r
-    }\r
-}\r
-\r
-void LibraryModule::findBrowseableFiles (const File& folder, Array<File>& filesFound) const\r
-{\r
-    Array<File> tempList;\r
-    FileSorter sorter;\r
-\r
-    DirectoryIterator iter (folder, true, "*", File::findFiles);\r
-    bool isHiddenFile;\r
-\r
-    while (iter.next (nullptr, &isHiddenFile, nullptr, nullptr, nullptr, nullptr))\r
-        if (! isHiddenFile && iter.getFile().hasFileExtension (browseableFileExtensions))\r
-            tempList.addSorted (sorter, iter.getFile());\r
-\r
-    filesFound.addArray (tempList);\r
-}\r
-\r
 void LibraryModule::addBrowseableCode (ProjectExporter& exporter, const Array<File>& compiled, const File& localModuleFolder) const\r
 {\r
     if (sourceFiles.isEmpty())\r
@@ -531,7 +533,7 @@ void LibraryModule::addBrowseableCode (ProjectExporter& exporter, const Array<Fi
 \r
     auto& project = exporter.getProject();\r
 \r
-    if (project.getEnabledModules().shouldCopyModuleFilesLocally (getID()).getValue())\r
+    if (project.getEnabledModules().shouldCopyModuleFilesLocally (getID()))\r
         moduleHeader = project.getLocalModuleFolder (getID()).getChildFile (moduleHeader.getFileName());\r
 \r
     auto isModuleHeader = [&] (const File& f)  { return f.getFileName() == moduleHeader.getFileName(); };\r
@@ -552,131 +554,68 @@ void LibraryModule::addBrowseableCode (ProjectExporter& exporter, const Array<Fi
     exporter.getModulesGroup().state.appendChild (sourceGroup.state.createCopy(), nullptr);\r
 }\r
 \r
-\r
 //==============================================================================\r
 EnabledModuleList::EnabledModuleList (Project& p, const ValueTree& s)\r
     : project (p), state (s)\r
 {\r
 }\r
 \r
-ModuleDescription EnabledModuleList::getModuleInfo (const String& moduleID)\r
-{\r
-    return ModuleDescription (project.getModuleWithID (moduleID).second);\r
-}\r
-\r
-bool EnabledModuleList::isModuleEnabled (const String& moduleID) const\r
-{\r
-    return state.getChildWithProperty (Ids::ID, moduleID).isValid();\r
-}\r
-\r
-bool EnabledModuleList::isAudioPluginModuleMissing() const\r
+StringArray EnabledModuleList::getAllModules() const\r
 {\r
-    return project.isAudioPluginProject()\r
-            && ! isModuleEnabled ("juce_audio_plugin_client");\r
-}\r
+    StringArray moduleIDs;\r
 \r
-bool EnabledModuleList::shouldUseGlobalPath (const String& moduleID) const\r
-{\r
-    return static_cast<bool> (state.getChildWithProperty (Ids::ID, moduleID)\r
-                                   .getProperty (Ids::useGlobalPath));\r
-}\r
+    for (int i = 0; i < getNumModules(); ++i)\r
+        moduleIDs.add (getModuleID (i));\r
 \r
-Value EnabledModuleList::getShouldUseGlobalPathValue (const String& moduleID) const\r
-{\r
-    return state.getChildWithProperty (Ids::ID, moduleID)\r
-                .getPropertyAsValue (Ids::useGlobalPath, getUndoManager());\r
+    return moduleIDs;\r
 }\r
 \r
-Value EnabledModuleList::shouldShowAllModuleFilesInProject (const String& moduleID)\r
+void EnabledModuleList::createRequiredModules (OwnedArray<LibraryModule>& modules)\r
 {\r
-    return state.getChildWithProperty (Ids::ID, moduleID)\r
-                .getPropertyAsValue (Ids::showAllCode, getUndoManager());\r
+    for (int i = 0; i < getNumModules(); ++i)\r
+        modules.add (new LibraryModule (getModuleInfo (getModuleID (i))));\r
 }\r
 \r
-struct ModuleTreeSorter\r
+void EnabledModuleList::sortAlphabetically()\r
 {\r
-    static int compareElements (const ValueTree& m1, const ValueTree& m2)\r
+    struct ModuleTreeSorter\r
     {\r
-        return m1[Ids::ID].toString().compareIgnoreCase (m2[Ids::ID]);\r
-    }\r
-};\r
+        static int compareElements (const ValueTree& m1, const ValueTree& m2)\r
+        {\r
+            return m1[Ids::ID].toString().compareIgnoreCase (m2[Ids::ID]);\r
+        }\r
+    };\r
 \r
-void EnabledModuleList::sortAlphabetically()\r
-{\r
     ModuleTreeSorter sorter;\r
     state.sort (sorter, getUndoManager(), false);\r
 }\r
 \r
-Value EnabledModuleList::shouldCopyModuleFilesLocally (const String& moduleID) const\r
+File EnabledModuleList::getDefaultModulesFolder() const\r
 {\r
-    return state.getChildWithProperty (Ids::ID, moduleID)\r
-                .getPropertyAsValue (Ids::useLocalCopy, getUndoManager());\r
-}\r
+    File globalPath (getAppSettings().getStoredPath (Ids::defaultJuceModulePath, TargetOS::getThisOS()).get().toString());\r
 \r
-void EnabledModuleList::addModule (const File& moduleFolder, bool copyLocally, bool useGlobalPath, bool sendAnalyticsEvent)\r
-{\r
-    ModuleDescription info (moduleFolder);\r
+    if (globalPath.exists())\r
+        return globalPath;\r
 \r
-    if (info.isValid())\r
+    for (auto& exporterPathModule : project.getExporterPathsModuleList().getAllModules())\r
     {\r
-        auto moduleID = info.getID();\r
-\r
-        if (! isModuleEnabled (moduleID))\r
-        {\r
-            ValueTree module (Ids::MODULE);\r
-            module.setProperty (Ids::ID, moduleID, getUndoManager());\r
-\r
-            state.appendChild (module, getUndoManager());\r
-            sortAlphabetically();\r
-\r
-            shouldShowAllModuleFilesInProject (moduleID) = true;\r
-            shouldCopyModuleFilesLocally (moduleID) = copyLocally;\r
-            getShouldUseGlobalPathValue (moduleID) = useGlobalPath;\r
-\r
-            RelativePath path (moduleFolder.getParentDirectory(),\r
-                               project.getProjectFolder(), RelativePath::projectFolder);\r
-\r
-            for (Project::ExporterIterator exporter (project); exporter.next();)\r
-                exporter->getPathForModuleValue (moduleID) = path.toUnixStyle();\r
-\r
-            if (! useGlobalPath)\r
-                project.rescanExporterPathModules (false);\r
-\r
-            if (sendAnalyticsEvent)\r
-            {\r
-                StringPairArray data;\r
-                data.set ("label", moduleID);\r
+        auto f = exporterPathModule.second;\r
 \r
-                Analytics::getInstance()->logEvent ("Module Added", data, ProjucerAnalyticsEvent::projectEvent);\r
-            }\r
-        }\r
+        if (f.isDirectory())\r
+            return f.getParentDirectory();\r
     }\r
-}\r
-\r
-void EnabledModuleList::removeModule (String moduleID) // must be pass-by-value, and not a const ref!\r
-{\r
-    for (auto i = state.getNumChildren(); --i >= 0;)\r
-        if (state.getChild(i) [Ids::ID] == moduleID)\r
-            state.removeChild (i, getUndoManager());\r
 \r
-    for (Project::ExporterIterator exporter (project); exporter.next();)\r
-        exporter->removePathForModule (moduleID);\r
+    return File::getCurrentWorkingDirectory();\r
 }\r
 \r
-void EnabledModuleList::createRequiredModules (OwnedArray<LibraryModule>& modules)\r
+ModuleDescription EnabledModuleList::getModuleInfo (const String& moduleID)\r
 {\r
-    for (int i = 0; i < getNumModules(); ++i)\r
-        modules.add (new LibraryModule (getModuleInfo (getModuleID (i))));\r
+    return ModuleDescription (project.getModuleWithID (moduleID).second);\r
 }\r
 \r
-StringArray EnabledModuleList::getAllModules() const\r
+bool EnabledModuleList::isModuleEnabled (const String& moduleID) const\r
 {\r
-    StringArray moduleIDs;\r
-\r
-    for (int i = 0; i < getNumModules(); ++i)\r
-        moduleIDs.add (getModuleID (i));\r
-\r
-    return moduleIDs;\r
+    return state.getChildWithProperty (Ids::ID, moduleID).isValid();\r
 }\r
 \r
 static void getDependencies (Project& project, const String& moduleID, StringArray& dependencies)\r
@@ -717,6 +656,39 @@ bool EnabledModuleList::doesModuleHaveHigherCppStandardThanProject (const String
     return (moduleCppStandard.getIntValue() > projectCppStandard.getIntValue());\r
 }\r
 \r
+bool EnabledModuleList::shouldUseGlobalPath (const String& moduleID) const\r
+{\r
+    return (bool) shouldUseGlobalPathValue (moduleID).getValue();\r
+}\r
+\r
+Value EnabledModuleList::shouldUseGlobalPathValue (const String& moduleID) const\r
+{\r
+    return state.getChildWithProperty (Ids::ID, moduleID)\r
+                .getPropertyAsValue (Ids::useGlobalPath, getUndoManager());\r
+}\r
+\r
+bool EnabledModuleList::shouldShowAllModuleFilesInProject (const String& moduleID) const\r
+{\r
+    return (bool) shouldShowAllModuleFilesInProjectValue (moduleID).getValue();\r
+}\r
+\r
+Value EnabledModuleList::shouldShowAllModuleFilesInProjectValue (const String& moduleID) const\r
+{\r
+    return state.getChildWithProperty (Ids::ID, moduleID)\r
+                .getPropertyAsValue (Ids::showAllCode, getUndoManager());\r
+}\r
+\r
+bool EnabledModuleList::shouldCopyModuleFilesLocally (const String& moduleID) const\r
+{\r
+    return (bool) shouldCopyModuleFilesLocallyValue (moduleID).getValue();\r
+}\r
+\r
+Value EnabledModuleList::shouldCopyModuleFilesLocallyValue (const String& moduleID) const\r
+{\r
+    return state.getChildWithProperty (Ids::ID, moduleID)\r
+                .getPropertyAsValue (Ids::useLocalCopy, getUndoManager());\r
+}\r
+\r
 bool EnabledModuleList::areMostModulesUsingGlobalPath() const\r
 {\r
     int numYes = 0, numNo = 0;\r
@@ -738,7 +710,7 @@ bool EnabledModuleList::areMostModulesCopiedLocally() const
 \r
     for (auto i = getNumModules(); --i >= 0;)\r
     {\r
-        if (shouldCopyModuleFilesLocally (getModuleID (i)).getValue())\r
+        if (shouldCopyModuleFilesLocally (getModuleID (i)))\r
             ++numYes;\r
         else\r
             ++numNo;\r
@@ -747,40 +719,43 @@ bool EnabledModuleList::areMostModulesCopiedLocally() const
     return numYes > numNo;\r
 }\r
 \r
-void EnabledModuleList::setLocalCopyModeForAllModules (bool copyLocally)\r
+void EnabledModuleList::addModule (const File& moduleFolder, bool copyLocally, bool useGlobalPath, bool sendAnalyticsEvent)\r
 {\r
-    for (auto i = getNumModules(); --i >= 0;)\r
-        shouldCopyModuleFilesLocally (project.getEnabledModules().getModuleID (i)) = copyLocally;\r
-}\r
+    ModuleDescription info (moduleFolder);\r
 \r
-File EnabledModuleList::findDefaultModulesFolder (Project& project)\r
-{\r
-    File globalPath (getAppSettings().getStoredPath (Ids::defaultJuceModulePath, TargetOS::getThisOS()).get().toString());\r
+    if (info.isValid())\r
+    {\r
+        auto moduleID = info.getID();\r
 \r
-    if (globalPath.exists())\r
-        return globalPath;\r
+        if (! isModuleEnabled (moduleID))\r
+        {\r
+            ValueTree module (Ids::MODULE);\r
+            module.setProperty (Ids::ID, moduleID, getUndoManager());\r
 \r
-    for (auto& exporterPathModule : project.getExporterPathsModuleList().getAllModules())\r
-    {\r
-        auto f = exporterPathModule.second;\r
+            state.appendChild (module, getUndoManager());\r
+            sortAlphabetically();\r
 \r
-        if (f.isDirectory())\r
-            return f.getParentDirectory();\r
-    }\r
+            shouldShowAllModuleFilesInProjectValue (moduleID) = true;\r
+            shouldCopyModuleFilesLocallyValue (moduleID) = copyLocally;\r
+            shouldUseGlobalPathValue (moduleID) = useGlobalPath;\r
 \r
-    return File::getCurrentWorkingDirectory();\r
-}\r
+            RelativePath path (moduleFolder.getParentDirectory(),\r
+                               project.getProjectFolder(), RelativePath::projectFolder);\r
 \r
-void EnabledModuleList::addModuleFromUserSelectedFile()\r
-{\r
-    static auto lastLocation = findDefaultModulesFolder (project);\r
+            for (Project::ExporterIterator exporter (project); exporter.next();)\r
+                exporter->getPathForModuleValue (moduleID) = path.toUnixStyle();\r
 \r
-    FileChooser fc ("Select a module to add...", lastLocation, {});\r
+            if (! useGlobalPath)\r
+                project.rescanExporterPathModules (false);\r
 \r
-    if (fc.browseForDirectory())\r
-    {\r
-        lastLocation = fc.getResult();\r
-        addModuleOfferingToCopy (lastLocation, true);\r
+            if (sendAnalyticsEvent)\r
+            {\r
+                StringPairArray data;\r
+                data.set ("label", moduleID);\r
+\r
+                Analytics::getInstance()->logEvent ("Module Added", data, ProjucerAnalyticsEvent::projectEvent);\r
+            }\r
+        }\r
     }\r
 }\r
 \r
@@ -797,6 +772,19 @@ void EnabledModuleList::addModuleInteractive (const String& moduleID)
     addModuleFromUserSelectedFile();\r
 }\r
 \r
+void EnabledModuleList::addModuleFromUserSelectedFile()\r
+{\r
+    auto lastLocation = getDefaultModulesFolder();\r
+\r
+    FileChooser fc ("Select a module to add...", lastLocation, {});\r
+\r
+    if (fc.browseForDirectory())\r
+    {\r
+        lastLocation = fc.getResult();\r
+        addModuleOfferingToCopy (lastLocation, true);\r
+    }\r
+}\r
+\r
 void EnabledModuleList::addModuleOfferingToCopy (const File& f, bool isFromUserSpecifiedFolder)\r
 {\r
     ModuleDescription m (f);\r
@@ -820,12 +808,12 @@ void EnabledModuleList::addModuleOfferingToCopy (const File& f, bool isFromUserS
                true);\r
 }\r
 \r
-bool isJUCEFolder (const File& f)\r
+void EnabledModuleList::removeModule (String moduleID) // must be pass-by-value, and not a const ref!\r
 {\r
-    return isJUCEModulesFolder (f.getChildFile ("modules"));\r
-}\r
+    for (auto i = state.getNumChildren(); --i >= 0;)\r
+        if (state.getChild(i) [Ids::ID] == moduleID)\r
+            state.removeChild (i, getUndoManager());\r
 \r
-bool isJUCEModulesFolder (const File& f)\r
-{\r
-    return f.isDirectory() && f.getChildFile ("juce_core").isDirectory();\r
+    for (Project::ExporterIterator exporter (project); exporter.next();)\r
+        exporter->removePathForModule (moduleID);\r
 }\r
index ba216b335ab07253284ec97463877fd9343acea6..66b986f06567c521b1bb8262c3b5eaf88507db95 100644 (file)
 class ProjectExporter;\r
 class ProjectSaver;\r
 \r
-//==============================================================================\r
-bool isJUCEModulesFolder (const File&);\r
-bool isJUCEFolder (const File&);\r
-\r
 //==============================================================================\r
 struct ModuleDescription\r
 {\r
-    ModuleDescription() {}\r
+    ModuleDescription() = default;\r
     ModuleDescription (const File& folder);\r
-    ModuleDescription (const var& info) : moduleInfo (info) {}\r
 \r
     bool isValid() const                    { return getID().isNotEmpty(); }\r
 \r
@@ -57,8 +52,6 @@ struct ModuleDescription
     File getFolder() const                  { jassert (moduleFolder != File()); return moduleFolder; }\r
     File getHeader() const;\r
 \r
-    bool isPluginClient() const             { return getID() == "juce_audio_plugin_client"; }\r
-\r
     File moduleFolder;\r
     var moduleInfo;\r
     URL url;\r
@@ -91,7 +84,6 @@ public:
         File file;\r
         bool isCompiledForObjC, isCompiledForNonObjC;\r
 \r
-        void writeInclude (MemoryOutputStream&) const;\r
         bool isNeededForExporter (ProjectExporter&) const;\r
         String getFilenameForProxyFile() const;\r
         static bool hasSuffix (const File&, const char*);\r
@@ -104,20 +96,25 @@ public:
     ModuleDescription moduleInfo;\r
 \r
 private:\r
-    mutable Array<File> sourceFiles;\r
-    OwnedArray<Project::ConfigFlag> configFlags;\r
+    void addSearchPathsToExporter (ProjectExporter&) const;\r
+    void addDefinesToExporter (ProjectExporter&) const;\r
+    void addCompileUnitsToExporter (ProjectExporter&, ProjectSaver&) const;\r
+    void addLibsToExporter (ProjectExporter&) const;\r
 \r
     void addBrowseableCode (ProjectExporter&, const Array<File>& compiled, const File& localModuleFolder) const;\r
+\r
+    mutable Array<File> sourceFiles;\r
+    OwnedArray<Project::ConfigFlag> configFlags;\r
 };\r
 \r
 //==============================================================================\r
-using ModuleIDAndFolder     = std::pair<String, File>;\r
-using ModuleIDAndFolderList = std::vector<ModuleIDAndFolder>;\r
-\r
 class AvailableModuleList\r
 {\r
 public:\r
-    AvailableModuleList();\r
+    using ModuleIDAndFolder     = std::pair<String, File>;\r
+    using ModuleIDAndFolderList = std::vector<ModuleIDAndFolder>;\r
+\r
+    AvailableModuleList() = default;\r
 \r
     void scanPaths      (const Array<File>&);\r
     void scanPathsAsync (const Array<File>&);\r
@@ -157,46 +154,49 @@ class EnabledModuleList
 public:\r
     EnabledModuleList (Project&, const ValueTree&);\r
 \r
-    static File findDefaultModulesFolder (Project&);\r
-\r
-    bool isModuleEnabled (const String& moduleID) const;\r
+    //==============================================================================\r
+    ValueTree getState() const              { return state; }\r
 \r
-    bool shouldUseGlobalPath (const String& moduleID) const;\r
-    Value getShouldUseGlobalPathValue (const String& moduleID) const;\r
+    StringArray getAllModules() const;\r
+    void createRequiredModules (OwnedArray<LibraryModule>& modules);\r
+    void sortAlphabetically();\r
 \r
-    Value shouldShowAllModuleFilesInProject (const String& moduleID);\r
-    Value shouldCopyModuleFilesLocally (const String& moduleID) const;\r
+    File getDefaultModulesFolder() const;\r
 \r
-    void removeModule (String moduleID);\r
-    bool isAudioPluginModuleMissing() const;\r
+    int getNumModules() const               { return state.getNumChildren(); }\r
+    String getModuleID (int index) const    { return state.getChild (index) [Ids::ID].toString(); }\r
 \r
     ModuleDescription getModuleInfo (const String& moduleID);\r
 \r
-    void addModule (const File& moduleManifestFile, bool copyLocally, bool useGlobalPath, bool sendAnalyticsEvent);\r
-    void addModuleInteractive (const String& moduleID);\r
-    void addModuleFromUserSelectedFile();\r
-    void addModuleOfferingToCopy (const File&, bool isFromUserSpecifiedFolder);\r
-\r
-    StringArray getAllModules() const;\r
+    bool isModuleEnabled (const String& moduleID) const;\r
     StringArray getExtraDependenciesNeeded (const String& moduleID) const;\r
     bool doesModuleHaveHigherCppStandardThanProject (const String& moduleID);\r
-    void createRequiredModules (OwnedArray<LibraryModule>& modules);\r
 \r
-    int getNumModules() const               { return state.getNumChildren(); }\r
-    String getModuleID (int index) const    { return state.getChild (index) [Ids::ID].toString(); }\r
+    bool shouldUseGlobalPath (const String& moduleID) const;\r
+    Value shouldUseGlobalPathValue (const String& moduleID) const;\r
+\r
+    bool shouldShowAllModuleFilesInProject (const String& moduleID) const;\r
+    Value shouldShowAllModuleFilesInProjectValue (const String& moduleID) const;\r
+\r
+    bool shouldCopyModuleFilesLocally (const String& moduleID) const;\r
+    Value shouldCopyModuleFilesLocallyValue (const String& moduleID) const;\r
 \r
     bool areMostModulesUsingGlobalPath() const;\r
     bool areMostModulesCopiedLocally() const;\r
 \r
-    void setLocalCopyModeForAllModules (bool copyLocally);\r
-\r
-    void sortAlphabetically();\r
+    //==============================================================================\r
+    void addModule (const File& moduleManifestFile, bool copyLocally, bool useGlobalPath, bool sendAnalyticsEvent);\r
+    void addModuleInteractive (const String& moduleID);\r
+    void addModuleFromUserSelectedFile();\r
+    void addModuleOfferingToCopy (const File&, bool isFromUserSpecifiedFolder);\r
 \r
-    Project& project;\r
-    ValueTree state;\r
+    void removeModule (String moduleID);\r
 \r
 private:\r
     UndoManager* getUndoManager() const     { return project.getUndoManagerFor (state); }\r
 \r
+    Project& project;\r
+    ValueTree state;\r
+\r
     JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (EnabledModuleList)\r
 };\r
index 9d760505d3f41985accfa296bb6f303a30492e84..24d48f840b1e4b4312fd945c665f063f253ea63d 100644 (file)
@@ -2100,7 +2100,7 @@ void Project::rescanExporterPathModules (bool async)
         exporterPathsModuleList->scanPaths (getExporterModulePathsToScan (*this));\r
 }\r
 \r
-ModuleIDAndFolder Project::getModuleWithID (const String& id)\r
+AvailableModuleList::ModuleIDAndFolder Project::getModuleWithID (const String& id)\r
 {\r
     if (! getEnabledModules().shouldUseGlobalPath (id))\r
     {\r
index 02e4b223ab54f17c9b57f8f932a12ef67df52167..515c50ee6cf7f10534c58a6745edcb0a200c4d4b 100644 (file)
@@ -37,7 +37,7 @@ protected:
     public:\r
         MakeBuildConfiguration (Project& p, const ValueTree& settings, const ProjectExporter& e)\r
             : BuildConfiguration (p, settings, e),\r
-              architectureTypeValue (config, Ids::linuxArchitecture, getUndoManager(), "-march=native")\r
+              architectureTypeValue (config, Ids::linuxArchitecture, getUndoManager(), String())\r
         {\r
             linkTimeOptimisationValue.setDefault (false);\r
             optimisationLevelValue.setDefault (isDebug() ? gccO0 : gccO3);\r
index 1331222d60a6f75c0fd05024f89ebfb703d27da0..a9c9cde94efa3a044dc040d9e9558c5920eabe6d 100644 (file)
@@ -2152,7 +2152,8 @@ private:
     void addFilesAndGroupsToProject (StringArray& topLevelGroupIDs) const\r
     {\r
         for (auto* target : targets)\r
-            addEntitlementsFile (*target);\r
+            if (target->shouldAddEntitlements())\r
+                addEntitlementsFile (*target);\r
 \r
         for (auto& group : getAllGroups())\r
         {\r
@@ -3186,29 +3187,26 @@ private:
 \r
     void addEntitlementsFile (XcodeTarget& target) const\r
     {\r
-        auto entitlements = getEntitlements (target);\r
+        String content =\r
+            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"\r
+            "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"\r
+            "<plist version=\"1.0\">\n"\r
+            "<dict>\n";\r
 \r
-        if (entitlements.size() > 0)\r
-        {\r
-            String content =\r
-                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"\r
-                "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"\r
-                "<plist version=\"1.0\">\n"\r
-                "<dict>\n";\r
+        auto entitlements = getEntitlements (target);\r
 \r
-            for (auto& key : entitlements.getAllKeys())\r
-                content += "\t<key>" + key + "</key>\n"\r
-                           "\t" + entitlements[key] + "\n";\r
+        for (auto& key : entitlements.getAllKeys())\r
+            content += "\t<key>" + key + "</key>\n"\r
+                       "\t" + entitlements[key] + "\n";\r
 \r
-            content += "</dict>\n"\r
-                       "</plist>\n";\r
+        content += "</dict>\n"\r
+                   "</plist>\n";\r
 \r
-            auto entitlementsFile = getTargetFolder().getChildFile (target.getEntitlementsFilename());\r
-            overwriteFileIfDifferentOrThrow (entitlementsFile, content);\r
+        auto entitlementsFile = getTargetFolder().getChildFile (target.getEntitlementsFilename());\r
+        overwriteFileIfDifferentOrThrow (entitlementsFile, content);\r
 \r
-            RelativePath entitlementsPath (entitlementsFile, getTargetFolder(), RelativePath::buildTargetFolder);\r
-            addFile (entitlementsPath, false, false, false, false, nullptr, {});\r
-        }\r
+        RelativePath entitlementsPath (entitlementsFile, getTargetFolder(), RelativePath::buildTargetFolder);\r
+        addFile (entitlementsPath, false, false, false, false, nullptr, {});\r
     }\r
 \r
     String addProjectItem (const Project::Item& projectItem) const\r
index c90cd2d365c025a5c63ef721a6f08b511f095da7..4274dd6cbafa26771c5f3e4781c3cb7c73b8941c 100644 (file)
@@ -617,7 +617,7 @@ TargetOS::OS ProjectExporter::getTargetOSForExporter() const
 \r
 RelativePath ProjectExporter::getModuleFolderRelativeToProject (const String& moduleID) const\r
 {\r
-    if (project.getEnabledModules().shouldCopyModuleFilesLocally (moduleID).getValue())\r
+    if (project.getEnabledModules().shouldCopyModuleFilesLocally (moduleID))\r
         return RelativePath (project.getRelativePathForFile (project.getLocalModuleFolder (moduleID)),\r
                              RelativePath::projectFolder);\r
 \r
@@ -636,7 +636,7 @@ String ProjectExporter::getLegacyModulePath() const
 \r
 RelativePath ProjectExporter::getLegacyModulePath (const String& moduleID) const\r
 {\r
-    if (project.getEnabledModules().state.getChildWithProperty (Ids::ID, moduleID) ["useLocalCopy"])\r
+    if (project.getEnabledModules().shouldCopyModuleFilesLocally (moduleID))\r
         return RelativePath (project.getRelativePathForFile (project.getGeneratedCodeFolder()\r
                                                                 .getChildFile ("modules")\r
                                                                 .getChildFile (moduleID)), RelativePath::projectFolder);\r
index c8879ca9e0f12d0455ba519a45ad3eb5d9c8b544..a9bb75facda8857c972c377e3adb8b7c8f377204 100644 (file)
@@ -411,6 +411,16 @@ bool isValidJUCEExamplesDirectory (const File& directory) noexcept
     return directory.getChildFile ("Assets").getChildFile ("juce_icon.png").existsAsFile();\r
 }\r
 \r
+bool isJUCEFolder (const File& f)\r
+{\r
+    return isJUCEModulesFolder (f.getChildFile ("modules"));\r
+}\r
+\r
+bool isJUCEModulesFolder (const File& f)\r
+{\r
+    return f.isDirectory() && f.getChildFile ("juce_core").isDirectory();\r
+}\r
+\r
 //==============================================================================\r
 static var parseJUCEHeaderMetadata (const StringArray& lines)\r
 {\r
index f96b5ce18bf784b4f56878e1040ef397bdbe9883..db6742da30d2f6ae1ae4b905fa213b253cbf3652 100644 (file)
@@ -73,6 +73,9 @@ bool isPIPFile (const File&) noexcept;
 \r
 bool isValidJUCEExamplesDirectory (const File&) noexcept;\r
 \r
+bool isJUCEModulesFolder (const File&);\r
+bool isJUCEFolder (const File&);\r
+\r
 //==============================================================================\r
 int indexOfLineStartingWith (const StringArray& lines, const String& text, int startIndex);\r
 \r
index bda4a63a0a936c8a1bb58d316fdad97a788c50b8..7acd7ae4512825981db81e197fdf2b5555f75f26 100644 (file)
@@ -87,7 +87,6 @@ public:
 \r
     void filesDropped (const StringArray& selectedFiles, int, int) override\r
     {\r
-\r
         setTo (selectedFiles[0]);\r
 \r
         highlightForDragAndDrop = false;\r
index 7030e0c71399557511bf8eb3d6c9995e7161c0ea..091f7798a19d9a60fe209ffd35014bbe52713ba6 100644 (file)
@@ -32,7 +32,7 @@ ifeq ($(CONFIG),Debug)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
   JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DDEBUG=1 -D_DEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0 libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
@@ -53,7 +53,7 @@ ifeq ($(CONFIG),Release)
   JUCE_OUTDIR := build
 
   ifeq ($(TARGET_ARCH),)
-    TARGET_ARCH := -march=native
+    TARGET_ARCH := 
   endif
 
   JUCE_CPPFLAGS := $(DEPFLAGS) -DLINUX=1 -DNDEBUG=1 -DJUCE_UNIT_TESTS=1 -DJUCER_LINUX_MAKE_6D53C8B4=1 -DJUCE_APP_VERSION=1.0.0 -DJUCE_APP_VERSION_HEX=0x10000 $(shell pkg-config --cflags alsa x11 xinerama xext freetype2 webkit2gtk-4.0 gtk+-x11-3.0 libcurl) -pthread -I../../JuceLibraryCode -I../../../../modules $(CPPFLAGS)
index 87396c71b8e78257529344cd485bcf2a0ac79030..db8b0ac3f1cd55463f72f3f5530be7c326edbb94 100644 (file)
@@ -47,7 +47,7 @@
 \r
 #define JUCE_USE_DARK_SPLASH_SCREEN 1\r
 \r
-#define JUCE_PROJUCER_VERSION 0x50406\r
+#define JUCE_PROJUCER_VERSION 0x50407\r
 \r
 //==============================================================================\r
 #define JUCE_MODULE_AVAILABLE_juce_analytics              1\r
index d0f8dcb2882ec5b2fe6f1d96d2f423e576a76eaf..4e3f3afc209ebaaca765cf1346e086a2dfccd506 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 \r
 <JUCERPROJECT id="Z2Xzcp" name="UnitTestRunner" projectType="consoleapp" bundleIdentifier="com.roli.UnitTestRunner"\r
-              jucerVersion="5.4.6" defines="JUCE_UNIT_TESTS=1" displaySplashScreen="0"\r
+              jucerVersion="5.4.7" defines="JUCE_UNIT_TESTS=1" displaySplashScreen="0"\r
               reportAppUsage="0" companyName="ROLI Ltd." companyCopyright="ROLI Ltd.">\r
   <MAINGROUP id="GZdWCU" name="UnitTestRunner">\r
     <GROUP id="{22894462-E1A9-036F-ED94-B51A50C87552}" name="Source">\r
index 5a607cdb337cae64c4809008f81c9a8a45432169..fee59eb7ab24eb52239f9bd15516254bb10451d7 100644 (file)
@@ -47,7 +47,7 @@
 \r
 #define JUCE_USE_DARK_SPLASH_SCREEN 1\r
 \r
-#define JUCE_PROJUCER_VERSION 0x50406\r
+#define JUCE_PROJUCER_VERSION 0x50407\r
 \r
 //==============================================================================\r
 #define JUCE_MODULE_AVAILABLE_juce_audio_basics          1\r
index 6eda8d9fc0d7c478a9f55a69959d27ab4f96a03f..228a9bc6d5e8bc62a3117aea84bbd6166f2c8c36 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 \r
 <JUCERPROJECT id="IvabE4" name="WindowsDLL" projectType="library" juceLinkage="none"\r
-              bundleIdentifier="com.roli.jucedll" jucerVersion="5.4.6" defines="JUCE_DLL_BUILD=1"\r
+              bundleIdentifier="com.roli.jucedll" jucerVersion="5.4.7" defines="JUCE_DLL_BUILD=1"\r
               displaySplashScreen="0" reportAppUsage="0" companyName="ROLI Ltd."\r
               companyCopyright="ROLI Ltd.">\r
   <EXPORTFORMATS>\r
index aef59e71acaf6bb9f5d609986a7b4ddb9890cf46..36828075a053e0640fdccf3c199b2ea3d934face 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_analytics\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE analytics classes\r
   description:        Classes to collect analytics and send to destinations\r
   website:            http://www.juce.com/juce\r
index 53556a41adf232fc70ee9f341cfeb4538387fae5..93fd4c6510ba45dcf74cf171ec16655fccc8e107 100644 (file)
@@ -32,7 +32,7 @@
 \r
   ID:                 juce_audio_basics\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE audio and MIDI data classes\r
   description:        Classes for audio buffer manipulation, midi message handling, synthesis, etc.\r
   website:            http://www.juce.com/juce\r
index c39ab0f55f1a7785031a4fbf25caae62804e9d23..1209d3c85acced5dfaa0c6aa4f4793130c9f7d46 100644 (file)
@@ -32,7 +32,7 @@
 \r
   ID:                 juce_audio_devices\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE audio and MIDI I/O device classes\r
   description:        Classes to play and record from audio and MIDI I/O devices\r
   website:            http://www.juce.com/juce\r
index 34f30d7b6174c26052863e2340bcef23f38cd6c0..fb6e97f051d50f1a795d22146a18dbe6bc3c2403 100644 (file)
@@ -514,7 +514,6 @@ private:
     IDirectSoundBuffer* pOutputBuffer;\r
     DWORD writeOffset;\r
     int totalBytesPerBuffer, bytesPerBuffer;\r
-    unsigned int lastPlayCursor;\r
 \r
     bool firstPlayTime;\r
     int64 lastPlayTime, ticksPerBuffer;\r
@@ -1215,13 +1214,13 @@ public:
         initialiseDSoundFunctions();\r
     }\r
 \r
-    void scanForDevices()\r
+    void scanForDevices() override\r
     {\r
         hasScanned = true;\r
         deviceList.scan();\r
     }\r
 \r
-    StringArray getDeviceNames (bool wantInputNames) const\r
+    StringArray getDeviceNames (bool wantInputNames) const override\r
     {\r
         jassert (hasScanned); // need to call scanForDevices() before doing this\r
 \r
@@ -1229,13 +1228,13 @@ public:
                               : deviceList.outputDeviceNames;\r
     }\r
 \r
-    int getDefaultDeviceIndex (bool /*forInput*/) const\r
+    int getDefaultDeviceIndex (bool /*forInput*/) const override\r
     {\r
         jassert (hasScanned); // need to call scanForDevices() before doing this\r
         return 0;\r
     }\r
 \r
-    int getIndexOfDevice (AudioIODevice* device, bool asInput) const\r
+    int getIndexOfDevice (AudioIODevice* device, bool asInput) const override\r
     {\r
         jassert (hasScanned); // need to call scanForDevices() before doing this\r
 \r
@@ -1246,10 +1245,10 @@ public:
         return -1;\r
     }\r
 \r
-    bool hasSeparateInputsAndOutputs() const    { return true; }\r
+    bool hasSeparateInputsAndOutputs() const override   { return true; }\r
 \r
     AudioIODevice* createDevice (const String& outputDeviceName,\r
-                                 const String& inputDeviceName)\r
+                                 const String& inputDeviceName) override\r
     {\r
         jassert (hasScanned); // need to call scanForDevices() before doing this\r
 \r
index 3ac6f36e3b6267bc2d06b05c2a719ab31ad3c9cc..d7de74c42dbc12eac39100593248af292124ea9d 100644 (file)
@@ -1445,7 +1445,7 @@ public:
     }\r
 \r
     //==============================================================================\r
-    void scanForDevices()\r
+    void scanForDevices() override\r
     {\r
         hasScanned = true;\r
 \r
@@ -1458,7 +1458,7 @@ public:
               outputDeviceIds, inputDeviceIds);\r
     }\r
 \r
-    StringArray getDeviceNames (bool wantInputNames) const\r
+    StringArray getDeviceNames (bool wantInputNames) const override\r
     {\r
         jassert (hasScanned); // need to call scanForDevices() before doing this\r
 \r
@@ -1466,13 +1466,13 @@ public:
                               : outputDeviceNames;\r
     }\r
 \r
-    int getDefaultDeviceIndex (bool /*forInput*/) const\r
+    int getDefaultDeviceIndex (bool /*forInput*/) const override\r
     {\r
         jassert (hasScanned); // need to call scanForDevices() before doing this\r
         return 0;\r
     }\r
 \r
-    int getIndexOfDevice (AudioIODevice* device, bool asInput) const\r
+    int getIndexOfDevice (AudioIODevice* device, bool asInput) const override\r
     {\r
         jassert (hasScanned); // need to call scanForDevices() before doing this\r
 \r
@@ -1483,10 +1483,10 @@ public:
         return -1;\r
     }\r
 \r
-    bool hasSeparateInputsAndOutputs() const    { return true; }\r
+    bool hasSeparateInputsAndOutputs() const override    { return true; }\r
 \r
     AudioIODevice* createDevice (const String& outputDeviceName,\r
-                                 const String& inputDeviceName)\r
+                                 const String& inputDeviceName) override\r
     {\r
         jassert (hasScanned); // need to call scanForDevices() before doing this\r
 \r
index 54b307633c54b45ff4dd20a7635427dc582bd7d8..1247742ba05b7730ae40b61286619a9fdd90f818 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_audio_formats\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE audio file format codecs\r
   description:        Classes for reading and writing various audio file formats.\r
   website:            http://www.juce.com/juce\r
index 5cfe674e5c5c1c3f6a24b8c39ab7af164cfb8f71..a86daeee814d31de766f2d65941716af2924fa4f 100644 (file)
@@ -30,7 +30,7 @@
 //==============================================================================\r
 #define UNITY_AUDIO_PLUGIN_API_VERSION 0x010401\r
 \r
-#if JUCE_WINDOWS\r
+#if JUCE_MSVC\r
  #define UNITY_INTERFACE_API __stdcall\r
  #define UNITY_INTERFACE_EXPORT __declspec(dllexport)\r
 #else\r
index 879c9066b47fe2f6b0c22e3774abcce94566a1f6..7f63093c08239fce7beefcadbc681af14585e129 100644 (file)
@@ -835,17 +835,16 @@ public:
     void audioProcessorChanged (AudioProcessor*) override\r
     {\r
         vstEffect.initialDelay = processor->getLatencySamples();\r
-\r
-        if (hostCallback != nullptr)\r
-            hostCallback (&vstEffect, Vst2::audioMasterUpdateDisplay, 0, 0, nullptr, 0);\r
-\r
         triggerAsyncUpdate();\r
     }\r
 \r
     void handleAsyncUpdate() override\r
     {\r
         if (hostCallback != nullptr)\r
-            hostCallback (&vstEffect, Vst2::audioMasterIOChanged, 0, 0, nullptr, 0);\r
+        {\r
+            hostCallback (&vstEffect, Vst2::audioMasterUpdateDisplay, 0, 0, nullptr, 0);\r
+            hostCallback (&vstEffect, Vst2::audioMasterIOChanged,     0, 0, nullptr, 0);\r
+        }\r
     }\r
 \r
     bool getPinProperties (Vst2::VstPinProperties& properties, bool direction, int index) const\r
index 0947eb5f72484ef7e6be01bf95da0e7ca34f127c..e0aca9728496042fc1f617a4a1f9540fac57e8d6 100644 (file)
@@ -3175,7 +3175,7 @@ JUCE_EXPORTED_FUNCTION IPluginFactory* PLUGIN_API GetPluginFactory()
 {\r
     PluginHostType::jucePlugInClientCurrentWrapperType = AudioProcessor::wrapperType_VST3;\r
 \r
-   #if JUCE_WINDOWS\r
+   #if JUCE_MSVC\r
     // Cunning trick to force this function to be exported. Life's too short to\r
     // faff around creating .def files for this kind of thing.\r
     #pragma comment(linker, "/EXPORT:" __FUNCTION__ "=" __FUNCDNAME__)\r
index 95b70c234ce0577f64aa3f7285e778947a730d1e..5fce55a8ffd395c0988398062449fa162002799c 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_audio_plugin_client\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE audio plugin wrapper classes\r
   description:        Classes for building VST, VST3, AudioUnit, AAX and RTAS plugins.\r
   website:            http://www.juce.com/juce\r
index da0c178af6ae675f992daad646835551d96ed27e..2c0f1298480cbf0191924e99091801b496fd8b35 100644 (file)
@@ -31,7 +31,7 @@
  #define STRICT 1\r
  #include <windows.h>\r
  #include <float.h>\r
- #if ! JUCE_MINGW\r
+ #if JUCE_MSVC\r
   #pragma warning (disable : 4312 4355)\r
  #endif\r
  #ifdef __INTEL_COMPILER\r
index f2f4c73d187daf8e992a9ce3ab1d50005692fa26..972e60f0e428e952d43612622d637b63b01c2d1f 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_audio_processors\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE audio processor classes\r
   description:        Classes for loading and playing VST, AU, LADSPA, or internally-generated audio processors.\r
   website:            http://www.juce.com/juce\r
index 95f06f3a7c3fe1b4302e42df52099e5ec25d49f3..dd4f08dc869fc72845c9ff83ba9e55dfd90a6f37 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_audio_utils\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE extra audio utility classes\r
   description:        Classes for audio-related GUI and miscellaneous tasks.\r
   website:            http://www.juce.com/juce\r
index 41035250a9f0fcd99db058d006e74e3514f07926..2e58ee5330b6c3918ac91580dcb24f0ef1ab28d8 100644 (file)
@@ -32,7 +32,7 @@
 \r
   ID:                 juce_blocks_basics\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               Provides low-level control over ROLI BLOCKS devices\r
   description:        JUCE wrapper for low-level control over ROLI BLOCKS devices.\r
   website:            http://developer.roli.com\r
index f4310a6dd129edf103dbf1e2ef7b5804d95b965f..05c2153355045313aae7e29380bac8758865a217 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_box2d\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE wrapper for the Box2D physics engine\r
   description:        The Box2D physics engine and some utility classes.\r
   website:            http://www.juce.com/juce\r
index 1c58ba77325d05c2546ab72bf0d8310020dbe5a5..a6a2ef7665efb49716690213b8872017b5da0b24 100644 (file)
 #if JUCE_WINDOWS\r
  #include <ctime>\r
 \r
- #if ! JUCE_MINGW\r
+ #if JUCE_MINGW\r
+  #include <ws2spi.h>\r
+  #include <cstdio>\r
+  #include <locale.h>\r
+ #else\r
   #pragma warning (push)\r
   #pragma warning (disable: 4091)\r
   #include <Dbghelp.h>\r
   #endif\r
  #endif\r
 \r
- #if JUCE_MINGW\r
-  #include <ws2spi.h>\r
-  #include <cstdio>\r
-  #include <locale.h>\r
- #endif\r
-\r
 #else\r
  #if JUCE_LINUX || JUCE_ANDROID\r
   #include <sys/types.h>\r
index 3a88ff18ab20e87dd01371168a36933cb1a8244c..62d0dfa44b9c2b7271ef5ed0845bf561c382292a 100644 (file)
@@ -32,7 +32,7 @@
 \r
   ID:                 juce_core\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE core classes\r
   description:        The essential set of basic JUCE classes, as required by all the other JUCE modules. Includes text, container, memory, threading and i/o functionality.\r
   website:            http://www.juce.com/juce\r
 //==============================================================================\r
 /** Config: JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
 \r
-    In a Visual C++  build, this can be used to stop the required system libs being\r
+    In a Windows build, this can be used to stop the required system libs being\r
     automatically added to the link stage.\r
 */\r
 #ifndef JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
index f9281e1f9b5c6fa8cbf721b433811347bf1e5a61..9ec827f2fadc69c125ff7c82b1b3e1108924dc66 100644 (file)
   #pragma warning (4: 4511 4512 4100)\r
  #endif\r
 \r
- #if JUCE_MSVC && ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
+ #if ! JUCE_MINGW && ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
   #pragma comment (lib, "kernel32.lib")\r
   #pragma comment (lib, "user32.lib")\r
   #pragma comment (lib, "wininet.lib")\r
index 5c74c207e6869cb362248fc7a63dc727ca3de224..bbdd2586dcd00bc1fe1b401e553382c2479a8d5e 100644 (file)
@@ -23,7 +23,7 @@
 namespace juce\r
 {\r
 \r
-#if ! JUCE_MINGW\r
+#if JUCE_MSVC\r
  #pragma intrinsic (__cpuid)\r
  #pragma intrinsic (__rdtsc)\r
 #endif\r
@@ -41,7 +41,7 @@ void Logger::outputDebugString (const String& text)
 \r
 //==============================================================================\r
 \r
-#if JUCE_MINGW\r
+#if JUCE_MINGW || JUCE_CLANG\r
 static void callCPUID (int result[4], uint32 type)\r
 {\r
   uint32 la = result[0], lb = result[1], lc = result[2], ld = result[3];\r
index 68c81a03c959fef78c097374edd9cc0caea0949d..8149085443aacfc0c95e97f6b327b24ac8f27717 100644 (file)
@@ -29,7 +29,7 @@
 */\r
 #define JUCE_MAJOR_VERSION      5\r
 #define JUCE_MINOR_VERSION      4\r
-#define JUCE_BUILDNUMBER        6\r
+#define JUCE_BUILDNUMBER        7\r
 \r
 /** Current JUCE version number.\r
 \r
index 3ecee08229a27c28eb60ac5beac882c62601510b..f27c836923efae2b752f006f11a6701ef993e59a 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_cryptography\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE cryptography classes\r
   description:        Classes for various basic cryptography functions, including RSA, Blowfish, MD5, SHA, etc.\r
   website:            http://www.juce.com/juce\r
index e838b11e6a5572ef0e16455f9ada7742ecdde2fb..1def8be23bfcb7908eded171de9b94be74b04d94 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_data_structures\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE data model helper classes\r
   description:        Classes for undo/redo management, and smart data structures.\r
   website:            http://www.juce.com/juce\r
index 515fc153c57f8961e9c69cab598aa112a28030fe..84f68c963592715b25b76b56c937db0440d5689b 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_dsp\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE DSP classes\r
   description:        Classes for audio buffer manipulation, digital audio processing, filtering, oversampling, fast math functions etc.\r
   website:            http://www.juce.com/juce\r
index 316d90b667d7c7296dccc40841cece86360e63d3..07b3ef549ce6bee72dbc9820a59016c84b5328ec 100644 (file)
@@ -32,7 +32,7 @@
 \r
   ID:                 juce_events\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE message and event handling classes\r
   description:        Classes for running an application's main event loop and sending/receiving messages, timers, etc.\r
   website:            http://www.juce.com/juce\r
index 39d8ca46c4f9e1d8cd0004df6a1cf7be53d94201..054be147d35d5b8114ae3ab6da4f59c79488e21e 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_graphics\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE graphics classes\r
   description:        Classes for 2D vector graphics, image loading/saving, font handling, etc.\r
   website:            http://www.juce.com/juce\r
index 3f87574eaaed3f2ee3081cc8f73f955f9a6d103f..cfc2393209fdf003395bb6d49d055c461471a2e6 100644 (file)
@@ -60,11 +60,7 @@ public:
         CGColorSpaceRelease (colourSpace);\r
     }\r
 \r
-    ~CoreGraphicsPixelData() override\r
-    {\r
-        freeCachedImageRef();\r
-        CGContextRelease (context);\r
-    }\r
+    ~CoreGraphicsPixelData() override;\r
 \r
     std::unique_ptr<LowLevelGraphicsContext> createLowLevelContext() override\r
     {\r
@@ -189,6 +185,14 @@ private:
     JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (CoreGraphicsPixelData)\r
 };\r
 \r
+// The following implementation is outside of the class definition to avoid spurious\r
+// warning messages when dynamically loading libraries at runtime on macOS\r
+CoreGraphicsPixelData::~CoreGraphicsPixelData()\r
+{\r
+    freeCachedImageRef();\r
+    CGContextRelease (context);\r
+}\r
+\r
 ImagePixelData::Ptr NativeImageType::create (Image::PixelFormat format, int width, int height, bool clearImage) const\r
 {\r
     return *new CoreGraphicsPixelData (format == Image::RGB ? Image::ARGB : format, width, height, clearImage);\r
index 6e8facbcb0da04909de58a9fb8272a94649d6b9d..cc2b4f8a31538f15f43dd20a7de6cd91192b64d6 100644 (file)
@@ -48,13 +48,13 @@ namespace DirectWriteTypeLayout
             return ComBaseClassHelper<IDWriteTextRenderer>::QueryInterface (refId, result);\r
         }\r
 \r
-        JUCE_COMRESULT IsPixelSnappingDisabled (void* /*clientDrawingContext*/, BOOL* isDisabled) override\r
+        JUCE_COMRESULT IsPixelSnappingDisabled (void* /*clientDrawingContext*/, BOOL* isDisabled) noexcept override\r
         {\r
             *isDisabled = FALSE;\r
             return S_OK;\r
         }\r
 \r
-        JUCE_COMRESULT GetCurrentTransform (void*, DWRITE_MATRIX* matrix) override\r
+        JUCE_COMRESULT GetCurrentTransform (void*, DWRITE_MATRIX* matrix) noexcept override\r
         {\r
             matrix->m11 = 1.0f; matrix->m12 = 0.0f;\r
             matrix->m21 = 0.0f; matrix->m22 = 1.0f;\r
@@ -62,30 +62,30 @@ namespace DirectWriteTypeLayout
             return S_OK;\r
         }\r
 \r
-        JUCE_COMRESULT GetPixelsPerDip (void*, FLOAT* pixelsPerDip) override\r
+        JUCE_COMRESULT GetPixelsPerDip (void*, FLOAT* pixelsPerDip) noexcept override\r
         {\r
             *pixelsPerDip = 1.0f;\r
             return S_OK;\r
         }\r
 \r
-        JUCE_COMRESULT DrawUnderline (void*, FLOAT, FLOAT, DWRITE_UNDERLINE const*, IUnknown*) override\r
+        JUCE_COMRESULT DrawUnderline (void*, FLOAT, FLOAT, DWRITE_UNDERLINE const*, IUnknown*) noexcept override\r
         {\r
             return E_NOTIMPL;\r
         }\r
 \r
-        JUCE_COMRESULT DrawStrikethrough (void*, FLOAT, FLOAT, DWRITE_STRIKETHROUGH const*, IUnknown*) override\r
+        JUCE_COMRESULT DrawStrikethrough (void*, FLOAT, FLOAT, DWRITE_STRIKETHROUGH const*, IUnknown*) noexcept override\r
         {\r
             return E_NOTIMPL;\r
         }\r
 \r
-        JUCE_COMRESULT DrawInlineObject (void*, FLOAT, FLOAT, IDWriteInlineObject*, BOOL, BOOL, IUnknown*) override\r
+        JUCE_COMRESULT DrawInlineObject (void*, FLOAT, FLOAT, IDWriteInlineObject*, BOOL, BOOL, IUnknown*) noexcept override\r
         {\r
             return E_NOTIMPL;\r
         }\r
 \r
         JUCE_COMRESULT DrawGlyphRun (void* clientDrawingContext, FLOAT baselineOriginX, FLOAT baselineOriginY, DWRITE_MEASURING_MODE,\r
                                      DWRITE_GLYPH_RUN const* glyphRun, DWRITE_GLYPH_RUN_DESCRIPTION const* runDescription,\r
-                                     IUnknown* clientDrawingEffect) override\r
+                                     IUnknown* clientDrawingEffect) noexcept override\r
         {\r
             auto layout = static_cast<TextLayout*> (clientDrawingContext);\r
 \r
@@ -207,7 +207,7 @@ namespace DirectWriteTypeLayout
         DWRITE_FONT_METRICS dwFontMetrics;\r
         dwFontFace->GetMetrics (&dwFontMetrics);\r
 \r
-        const float totalHeight = (float) (std::abs (dwFontMetrics.ascent) + std::abs (dwFontMetrics.descent));\r
+        const float totalHeight = (float) (dwFontMetrics.ascent + dwFontMetrics.descent);\r
         return dwFontMetrics.designUnitsPerEm / totalHeight;\r
     }\r
 \r
index b4d53b44b3cc03bcf193061a5e7a7cf9742fbd93..7ffea03a560ae8d7d4deea7e968754d09296aa96 100644 (file)
@@ -285,7 +285,7 @@ private:
     {\r
         PathGeometrySink() : ComBaseClassHelper<IDWriteGeometrySink> (0) {}\r
 \r
-        void __stdcall AddBeziers (const D2D1_BEZIER_SEGMENT* beziers, UINT beziersCount) override\r
+        void __stdcall AddBeziers (const D2D1_BEZIER_SEGMENT* beziers, UINT beziersCount) noexcept override\r
         {\r
             for (UINT i = 0; i < beziersCount; ++i)\r
                 path.cubicTo (convertPoint (beziers[i].point1),\r
@@ -293,30 +293,30 @@ private:
                               convertPoint (beziers[i].point3));\r
         }\r
 \r
-        void __stdcall AddLines (const D2D1_POINT_2F* points, UINT pointsCount) override\r
+        void __stdcall AddLines (const D2D1_POINT_2F* points, UINT pointsCount) noexcept override\r
         {\r
             for (UINT i = 0; i < pointsCount; ++i)\r
                 path.lineTo (convertPoint (points[i]));\r
         }\r
 \r
-        void __stdcall BeginFigure (D2D1_POINT_2F startPoint, D2D1_FIGURE_BEGIN) override\r
+        void __stdcall BeginFigure (D2D1_POINT_2F startPoint, D2D1_FIGURE_BEGIN) noexcept override\r
         {\r
             path.startNewSubPath (convertPoint (startPoint));\r
         }\r
 \r
-        void __stdcall EndFigure (D2D1_FIGURE_END figureEnd) override\r
+        void __stdcall EndFigure (D2D1_FIGURE_END figureEnd) noexcept override\r
         {\r
             if (figureEnd == D2D1_FIGURE_END_CLOSED)\r
                 path.closeSubPath();\r
         }\r
 \r
-        void __stdcall SetFillMode (D2D1_FILL_MODE fillMode) override\r
+        void __stdcall SetFillMode (D2D1_FILL_MODE fillMode) noexcept override\r
         {\r
             path.setUsingNonZeroWinding (fillMode == D2D1_FILL_MODE_WINDING);\r
         }\r
 \r
-        void __stdcall SetSegmentFlags (D2D1_PATH_SEGMENT) override {}\r
-        JUCE_COMRESULT Close() override  { return S_OK; }\r
+        void __stdcall SetSegmentFlags (D2D1_PATH_SEGMENT) noexcept override {}\r
+        JUCE_COMRESULT Close() noexcept override  { return S_OK; }\r
 \r
         Path path;\r
 \r
index 478dd37f7a2e107809875642b8842159f65b6638..9143cec5aefe01f607668681c8f16e5044cb2576 100644 (file)
   #include <exdispid.h>\r
  #endif\r
 \r
- #if JUCE_MSVC && ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
+ #if JUCE_MINGW\r
+  #include <imm.h>\r
+ #elif ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
   #pragma comment(lib, "vfw32.lib")\r
   #pragma comment(lib, "imm32.lib")\r
- #endif\r
 \r
- #if JUCE_OPENGL\r
-  #if JUCE_MSVC && ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
+  #if JUCE_OPENGL\r
    #pragma comment(lib, "OpenGL32.Lib")\r
    #pragma comment(lib, "GlU32.Lib")\r
   #endif\r
- #endif\r
 \r
- #if JUCE_DIRECT2D && JUCE_MSVC && ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
-  #pragma comment (lib, "Dwrite.lib")\r
-  #pragma comment (lib, "D2d1.lib")\r
- #endif\r
-\r
- #if JUCE_MINGW\r
-  #include <imm.h>\r
+  #if JUCE_DIRECT2D\r
+   #pragma comment (lib, "Dwrite.lib")\r
+   #pragma comment (lib, "D2d1.lib")\r
+  #endif\r
  #endif\r
 \r
 //==============================================================================\r
index 304cf049d4bf9cb9c42c7cdb1e5f6e1634a60a1b..dbe42b2817cb61d45bbb05cc4da881aa43953807 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_gui_basics\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE GUI core classes\r
   description:        Basic user-interface components and related classes.\r
   website:            http://www.juce.com/juce\r
index 4f7c30c907fbe091e6f712dfb1de50471b67de96..1f89d788e2e99ca272f80a9dc2e56d4f7b70c786 100644 (file)
@@ -997,7 +997,7 @@ public:
     }\r
 \r
     //==============================================================================\r
-    bool sendModalInputAttemptIfBlocked()\r
+    bool isBlockedByModalComponent()\r
     {\r
         if (auto* modal = Component::getCurrentlyModalComponent())\r
         {\r
@@ -1005,7 +1005,6 @@ public:
                  && (! getComponent().isParentOf (modal))\r
                  && getComponent().isCurrentlyBlockedByAnotherModalComponent())\r
             {\r
-                modal->inputAttemptWhenModal();\r
                 return true;\r
             }\r
         }\r
@@ -1013,6 +1012,13 @@ public:
         return false;\r
     }\r
 \r
+    void sendModalInputAttemptIfBlocked()\r
+    {\r
+        if (isBlockedByModalComponent())\r
+            if (auto* modal = Component::getCurrentlyModalComponent())\r
+                modal->inputAttemptWhenModal();\r
+    }\r
+\r
     bool canBecomeKeyWindow()\r
     {\r
         return component.isVisible() && (getStyleFlags() & juce::ComponentPeer::windowIgnoresKeyPresses) == 0;\r
@@ -1881,15 +1887,9 @@ private:
     static BOOL becomeFirstResponder (id self, SEL)\r
     {\r
         if (auto* owner = getOwner (self))\r
-        {\r
-            if (owner->canBecomeKeyWindow())\r
-            {\r
-                owner->viewFocusGain();\r
-                return YES;\r
-            }\r
-        }\r
+            owner->viewFocusGain();\r
 \r
-        return NO;\r
+        return YES;\r
     }\r
 \r
     static BOOL resignFirstResponder (id self, SEL)\r
@@ -1988,7 +1988,7 @@ private:
 \r
         return owner != nullptr\r
                 && owner->canBecomeKeyWindow()\r
-                && ! owner->sendModalInputAttemptIfBlocked();\r
+                && ! owner->isBlockedByModalComponent();\r
     }\r
 \r
     static BOOL canBecomeMainWindow (id self, SEL)\r
@@ -1997,7 +1997,7 @@ private:
 \r
         return owner != nullptr\r
                 && owner->canBecomeMainWindow()\r
-                && ! owner->sendModalInputAttemptIfBlocked();\r
+                && ! owner->isBlockedByModalComponent();\r
     }\r
 \r
     static void becomeKeyWindow (id self, SEL)\r
index 46d0778978f7c9a14989811b3f9e4402e3ce27bc..1b0ff1e621345126aeca3f2f60d276a1fbfd49c1 100644 (file)
@@ -125,8 +125,8 @@ namespace DragAndDropHelpers
     class JuceDataObject  : public ComBaseClassHelper <IDataObject>\r
     {\r
     public:\r
-        JuceDataObject (JuceDropSource* s, const FORMATETC* f, const STGMEDIUM* m)\r
-            : dropSource (s), format (f), medium (m)\r
+        JuceDataObject (const FORMATETC* f, const STGMEDIUM* m)\r
+            : format (f), medium (m)\r
         {\r
         }\r
 \r
@@ -203,7 +203,6 @@ namespace DragAndDropHelpers
         JUCE_COMRESULT EnumDAdvise (IEnumSTATDATA**)                         { return OLE_E_ADVISENOTSUPPORTED; }\r
 \r
     private:\r
-        JuceDropSource* const dropSource;\r
         const FORMATETC* const format;\r
         const STGMEDIUM* const medium;\r
 \r
@@ -255,7 +254,7 @@ namespace DragAndDropHelpers
             OleInitialize (0);\r
 \r
             auto source = new JuceDropSource();\r
-            auto data = new JuceDataObject (source, &format, &medium);\r
+            auto data = new JuceDataObject (&format, &medium);\r
 \r
             DWORD effect;\r
             DoDragDrop (data, source, whatToDo, &effect);\r
index b9c217e8a589eca8ac1e74da85d8ab7380896b06..80f1556429cb353e9a658d8b41d36df82a5b9a73 100644 (file)
@@ -2241,7 +2241,7 @@ private:
         }\r
     }\r
 \r
-    void setIcon (const Image& newIcon)\r
+    void setIcon (const Image& newIcon) override\r
     {\r
         if (auto hicon = IconConverters::createHICONFromImage (newIcon, TRUE, 0, 0))\r
         {\r
index 75c4545ddf7fa073d85d754a3c9dca59b9adfad1..7d7a9833f6ed55f1a570ed68f913e00cd3136511 100644 (file)
@@ -723,7 +723,7 @@ bool ListBox::keyPressed (const KeyPress& key)
         if (multiple)\r
             selectRangeOfRows (lastRowSelected, lastRowSelected + 1);\r
         else\r
-            selectRow (jmin (totalItems - 1, jmax (0, lastRowSelected) + 1));\r
+            selectRow (jmin (totalItems - 1, jmax (0, lastRowSelected + 1)));\r
     }\r
     else if (key.isKeyCode (KeyPress::pageUpKey))\r
     {\r
index 705bff9062ed61100fe38bb73de52159b68a539e..7aaf5555f846f69eeab0205f3c37c3088bdf7335 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_gui_extra\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE extended GUI classes\r
   description:        Miscellaneous GUI classes for specialised tasks.\r
   website:            http://www.juce.com/juce\r
index afdc0b634a018e2419193fb45f5ee6c7c03c780f..8e01c6964636bd7581a91d1df316bf7b789d101d 100644 (file)
@@ -153,12 +153,12 @@ private:
     {\r
         EventHandler (WebBrowserComponent& w)  : ComponentMovementWatcher (&w), owner (w) {}\r
 \r
-        JUCE_COMRESULT GetTypeInfoCount (UINT*)                                  { return E_NOTIMPL; }\r
-        JUCE_COMRESULT GetTypeInfo (UINT, LCID, ITypeInfo**)                     { return E_NOTIMPL; }\r
-        JUCE_COMRESULT GetIDsOfNames (REFIID, LPOLESTR*, UINT, LCID, DISPID*)    { return E_NOTIMPL; }\r
+        JUCE_COMRESULT GetTypeInfoCount (UINT*) override                                 { return E_NOTIMPL; }\r
+        JUCE_COMRESULT GetTypeInfo (UINT, LCID, ITypeInfo**) override                    { return E_NOTIMPL; }\r
+        JUCE_COMRESULT GetIDsOfNames (REFIID, LPOLESTR*, UINT, LCID, DISPID*) override   { return E_NOTIMPL; }\r
 \r
         JUCE_COMRESULT Invoke (DISPID dispIdMember, REFIID /*riid*/, LCID /*lcid*/, WORD /*wFlags*/, DISPPARAMS* pDispParams,\r
-                               VARIANT* /*pVarResult*/, EXCEPINFO* /*pExcepInfo*/, UINT* /*puArgErr*/)\r
+                               VARIANT* /*pVarResult*/, EXCEPINFO* /*pExcepInfo*/, UINT* /*puArgErr*/) override\r
         {\r
             if (dispIdMember == DISPID_BEFORENAVIGATE2)\r
             {\r
index e3e96e8cda06092f26dac93c9907cebec4280d52..b9ad3502d0088eb3377ea46a7886f63647570ce4 100644 (file)
@@ -48,7 +48,7 @@
 #elif JUCE_WINDOWS\r
  #include <windowsx.h>\r
 \r
- #if JUCE_MSVC && ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
+ #if ! JUCE_MINGW && ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
   #pragma comment(lib, "OpenGL32.Lib")\r
  #endif\r
 \r
index 97e73b1ffba43271d1e9895e3fae120f90f432db..f056ceb861385da206ebf08c501efa88013034eb 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_opengl\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE OpenGL classes\r
   description:        Classes for rendering OpenGL in a JUCE window.\r
   website:            http://www.juce.com/juce\r
index a6d75eae882d7b0c868f70548341c5bd2d25127c..4372e1eccc642be08f246d8372143f13fa2d5fb5 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_osc\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE OSC classes\r
   description:        Open Sound Control implementation.\r
   website:            http://www.juce.com/juce\r
index a569da7ae03fadfbccb5c4dd65747bbaa106f33f..23ed8d04b9058c5b00096fcf905c057a97600261 100644 (file)
@@ -64,7 +64,7 @@ public:
 \r
         An OSCBundle Element contains either one OSCMessage or one OSCBundle.\r
      */\r
-    class Element\r
+    class JUCE_API  Element\r
     {\r
     public:\r
         //==============================================================================\r
index 4cd5270b134471e23cb1cb5409a3db40230733b9..9de315160ab401b2fb0e98994d0dc887bc71f62b 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_product_unlocking\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE Online marketplace support\r
   description:        Classes for online product authentication\r
   website:            http://www.juce.com/juce\r
index ad63f5ba6e2e41dccbd6c4bb4781cd14e826a394..c3e13454a2e3fcc5b17f9efbc0a2af981c094b39 100644 (file)
@@ -2,7 +2,7 @@ package com.roli.juce;
 \r
 import com.android.billingclient.api.*;\r
 \r
-public class JuceBillingClient implements PurchasesUpdatedListener {\r
+public class JuceBillingClient implements PurchasesUpdatedListener, BillingClientStateListener {\r
     private native void skuDetailsQueryCallback(long host, java.util.List<SkuDetails> skuDetails);\r
     private native void purchasesListQueryCallback(long host, java.util.List<Purchase> purchases);\r
     private native void purchaseCompletedCallback(long host, Purchase purchase, int responseCode);\r
@@ -16,7 +16,7 @@ public class JuceBillingClient implements PurchasesUpdatedListener {
                 .setListener(this)\r
                 .build();\r
 \r
-        billingClient.startConnection(null);\r
+        billingClient.startConnection(this);\r
     }\r
 \r
     public void endConnection() {\r
@@ -127,6 +127,18 @@ public class JuceBillingClient implements PurchasesUpdatedListener {
         }\r
     }\r
 \r
+    @Override\r
+    public void onBillingServiceDisconnected()\r
+    {\r
+\r
+    }\r
+\r
+    @Override\r
+    public void onBillingSetupFinished(BillingResult billingResult)\r
+    {\r
+\r
+    }\r
+\r
     private void executeOnBillingClientConnection(Runnable runnable) {\r
         if (billingClient.isReady()) {\r
             runnable.run();\r
@@ -162,7 +174,12 @@ public class JuceBillingClient implements PurchasesUpdatedListener {
                 @Override\r
                 public void run() {\r
                     AcknowledgePurchaseParams acknowledgePurchaseParams = AcknowledgePurchaseParams.newBuilder().setPurchaseToken(purchase.getPurchaseToken()).build();\r
-                    billingClient.acknowledgePurchase(acknowledgePurchaseParams, null);\r
+                    billingClient.acknowledgePurchase(acknowledgePurchaseParams, new AcknowledgePurchaseResponseListener() {\r
+                        @Override\r
+                        public void onAcknowledgePurchaseResponse(BillingResult billingResult) {\r
+\r
+                        }\r
+                    });\r
                 }\r
             });\r
         }\r
index bec17ed285ea97b77d64547a75eab422a7a60b84..c3f89fc16f659f667be3c7070de4306f58b8dc14 100644 (file)
  #import <AVKit/AVKit.h>\r
 \r
 //==============================================================================\r
-#elif JUCE_MSVC\r
+#elif JUCE_WINDOWS && ! JUCE_MINGW\r
  /* If you're using the camera classes, you'll need access to a few DirectShow headers.\r
      These files are provided in the normal Windows SDK. */\r
  #include <dshow.h>\r
  #include <dshowasf.h>\r
  #include <evr.h>\r
 \r
- #if JUCE_USE_CAMERA && JUCE_MSVC && ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
-  #pragma comment (lib, "Strmiids.lib")\r
-  #pragma comment (lib, "wmvcore.lib")\r
- #endif\r
+ #if ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
+  #pragma comment (lib, "strmiids.lib")\r
 \r
- #if JUCE_MEDIAFOUNDATION && JUCE_MSVC && ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
-  #pragma comment (lib, "mfuuid.lib")\r
- #endif\r
+  #if JUCE_USE_CAMERA\r
+   #pragma comment (lib, "Strmiids.lib")\r
+   #pragma comment (lib, "wmvcore.lib")\r
+  #endif\r
 \r
- #if JUCE_MSVC && ! JUCE_DONT_AUTOLINK_TO_WIN32_LIBRARIES\r
-  #pragma comment (lib, "strmiids.lib")\r
+  #if JUCE_MEDIAFOUNDATION\r
+   #pragma comment (lib, "mfuuid.lib")\r
+  #endif\r
  #endif\r
 #endif\r
 \r
index 499c080ab8e3635ae257a724efeec8e2beac16c9..a871101322d48c86c7b0cced11b9894ea4adde7c 100644 (file)
@@ -36,7 +36,7 @@
 \r
   ID:                 juce_video\r
   vendor:             juce\r
-  version:            5.4.6\r
+  version:            5.4.7\r
   name:               JUCE video playback and capture classes\r
   description:        Classes for playing video and capturing camera input.\r
   website:            http://www.juce.com/juce\r