| @@ -83,7 +83,6 @@ OBJECTS := \ | |||
| $(OBJDIR)/juce_VSTPluginFormat_af341d6.o \ | |||
| $(OBJDIR)/juce_AudioPluginFormat_5dc1eec2.o \ | |||
| $(OBJDIR)/juce_AudioPluginFormatManager_c336c715.o \ | |||
| $(OBJDIR)/juce_AudioPluginInstance_96637ee0.o \ | |||
| $(OBJDIR)/juce_KnownPluginList_cadece16.o \ | |||
| $(OBJDIR)/juce_PluginDescription_d9c0f10b.o \ | |||
| $(OBJDIR)/juce_PluginDirectoryScanner_c7652cec.o \ | |||
| @@ -607,11 +606,6 @@ $(OBJDIR)/juce_AudioPluginFormatManager_c336c715.o: ../../src/audio/plugin_host/ | |||
| @echo "Compiling juce_AudioPluginFormatManager.cpp" | |||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||
| $(OBJDIR)/juce_AudioPluginInstance_96637ee0.o: ../../src/audio/plugin_host/juce_AudioPluginInstance.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @echo "Compiling juce_AudioPluginInstance.cpp" | |||
| @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" | |||
| $(OBJDIR)/juce_KnownPluginList_cadece16.o: ../../src/audio/plugin_host/juce_KnownPluginList.cpp | |||
| -@mkdir -p $(OBJDIR) | |||
| @echo "Compiling juce_KnownPluginList.cpp" | |||
| @@ -52,7 +52,6 @@ | |||
| D71FEEEA440682B04E024BB7 = { isa = PBXBuildFile; fileRef = 2EBF36FAAF019B6F811D1C84; }; | |||
| B331EE2C23176373F2D52C1E = { isa = PBXBuildFile; fileRef = 1C8211DFB558D740EF4B173A; }; | |||
| 79D8E372BA77018BDA956D92 = { isa = PBXBuildFile; fileRef = DA4820727D6DDC75561A262C; }; | |||
| 21005408DDA892A5B8B4F78D = { isa = PBXBuildFile; fileRef = C96D4FE222A8704A8F3BEDD8; }; | |||
| 3688819F98EFF0AABDD79029 = { isa = PBXBuildFile; fileRef = 3110B983ACE956D6A24F8C8C; }; | |||
| 84F9FCAE9DF003DC6FC3C941 = { isa = PBXBuildFile; fileRef = B6E20AE45813C0CA9B1014DD; }; | |||
| E1046147432EB115A68D6C43 = { isa = PBXBuildFile; fileRef = AF47BC3796A74CC15A192E8B; }; | |||
| @@ -483,7 +482,6 @@ | |||
| 28534632DF76A1EA837BD0D7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormat.h"; path = "../../src/audio/plugin_host/juce_AudioPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| DA4820727D6DDC75561A262C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioPluginFormatManager.cpp"; path = "../../src/audio/plugin_host/juce_AudioPluginFormatManager.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| A6415104D1E3E5CE7031C0C1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormatManager.h"; path = "../../src/audio/plugin_host/juce_AudioPluginFormatManager.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| C96D4FE222A8704A8F3BEDD8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioPluginInstance.cpp"; path = "../../src/audio/plugin_host/juce_AudioPluginInstance.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E5BA7B8913271E935A1DA487 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginInstance.h"; path = "../../src/audio/plugin_host/juce_AudioPluginInstance.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| 3110B983ACE956D6A24F8C8C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KnownPluginList.cpp"; path = "../../src/audio/plugin_host/juce_KnownPluginList.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| A3FE51C7DD706F536273AB0E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KnownPluginList.h"; path = "../../src/audio/plugin_host/juce_KnownPluginList.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| @@ -1024,6 +1022,7 @@ | |||
| DCD09B6EF4A4A109DE01F152 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_FileChooser.cpp"; path = "../../src/native/windows/juce_win32_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 7527A5E8F4F39581159D3E5B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Files.cpp"; path = "../../src/native/windows/juce_win32_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 1DBF9DAAD0690CB2CA4E9960 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Fonts.cpp"; path = "../../src/native/windows/juce_win32_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E9B203E963EB1AB566061AC1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_HiddenMessageWindow.h"; path = "../../src/native/windows/juce_win32_HiddenMessageWindow.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| BA561E64C6400CFB1DE013F6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../src/native/windows/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 061B492EABD6B1C995D581A8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Midi.cpp"; path = "../../src/native/windows/juce_win32_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 519B519B76E2EEEAB49C62DF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Misc.cpp"; path = "../../src/native/windows/juce_win32_Misc.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| @@ -1249,7 +1248,6 @@ | |||
| 28534632DF76A1EA837BD0D7, | |||
| DA4820727D6DDC75561A262C, | |||
| A6415104D1E3E5CE7031C0C1, | |||
| C96D4FE222A8704A8F3BEDD8, | |||
| E5BA7B8913271E935A1DA487, | |||
| 3110B983ACE956D6A24F8C8C, | |||
| A3FE51C7DD706F536273AB0E, | |||
| @@ -1866,6 +1864,7 @@ | |||
| DCD09B6EF4A4A109DE01F152, | |||
| 7527A5E8F4F39581159D3E5B, | |||
| 1DBF9DAAD0690CB2CA4E9960, | |||
| E9B203E963EB1AB566061AC1, | |||
| BA561E64C6400CFB1DE013F6, | |||
| 061B492EABD6B1C995D581A8, | |||
| 519B519B76E2EEEAB49C62DF, | |||
| @@ -2112,7 +2111,6 @@ | |||
| D71FEEEA440682B04E024BB7, | |||
| B331EE2C23176373F2D52C1E, | |||
| 79D8E372BA77018BDA956D92, | |||
| 21005408DDA892A5B8B4F78D, | |||
| 3688819F98EFF0AABDD79029, | |||
| 84F9FCAE9DF003DC6FC3C941, | |||
| E1046147432EB115A68D6C43, | |||
| @@ -305,7 +305,6 @@ | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginFormat.h"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginFormatManager.cpp"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginFormatManager.h"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginInstance.cpp"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginInstance.h"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_KnownPluginList.cpp"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_KnownPluginList.h"/> | |||
| @@ -928,6 +927,7 @@ | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_FileChooser.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Files.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Fonts.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_HiddenMessageWindow.h"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Messaging.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Midi.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Misc.cpp"/> | |||
| @@ -305,7 +305,6 @@ | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginFormat.h"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginFormatManager.cpp"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginFormatManager.h"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginInstance.cpp"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginInstance.h"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_KnownPluginList.cpp"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_KnownPluginList.h"/> | |||
| @@ -928,6 +927,7 @@ | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_FileChooser.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Files.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Fonts.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_HiddenMessageWindow.h"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Messaging.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Midi.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Misc.cpp"/> | |||
| @@ -307,7 +307,6 @@ | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginFormat.h"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginFormatManager.cpp"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginFormatManager.h"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginInstance.cpp"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_AudioPluginInstance.h"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_KnownPluginList.cpp"/> | |||
| <File RelativePath="..\..\src\audio\plugin_host\juce_KnownPluginList.h"/> | |||
| @@ -930,6 +929,7 @@ | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_FileChooser.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Files.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Fonts.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_HiddenMessageWindow.h"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Messaging.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Midi.cpp"/> | |||
| <File RelativePath="..\..\src\native\windows\juce_win32_Misc.cpp"/> | |||
| @@ -166,7 +166,6 @@ | |||
| <ClCompile Include="..\..\src\audio\plugin_host\formats\juce_VSTPluginFormat.cpp"/> | |||
| <ClCompile Include="..\..\src\audio\plugin_host\juce_AudioPluginFormat.cpp"/> | |||
| <ClCompile Include="..\..\src\audio\plugin_host\juce_AudioPluginFormatManager.cpp"/> | |||
| <ClCompile Include="..\..\src\audio\plugin_host\juce_AudioPluginInstance.cpp"/> | |||
| <ClCompile Include="..\..\src\audio\plugin_host\juce_KnownPluginList.cpp"/> | |||
| <ClCompile Include="..\..\src\audio\plugin_host\juce_PluginDescription.cpp"/> | |||
| <ClCompile Include="..\..\src\audio\plugin_host\juce_PluginDirectoryScanner.cpp"/> | |||
| @@ -792,6 +791,7 @@ | |||
| <ClInclude Include="..\..\src\native\mac\juce_osx_ObjCHelpers.h"/> | |||
| <ClInclude Include="..\..\src\native\windows\juce_win32_AutoLinkLibraries.h"/> | |||
| <ClInclude Include="..\..\src\native\windows\juce_win32_ComSmartPtr.h"/> | |||
| <ClInclude Include="..\..\src\native\windows\juce_win32_HiddenMessageWindow.h"/> | |||
| <ClInclude Include="..\..\src\native\windows\juce_win32_NativeIncludes.h"/> | |||
| <ClInclude Include="..\..\src\native\android\juce_android_NativeIncludes.h"/> | |||
| <ClInclude Include="..\..\src\text\juce_CharacterFunctions.h"/> | |||
| @@ -355,9 +355,6 @@ | |||
| <ClCompile Include="..\..\src\audio\plugin_host\juce_AudioPluginFormatManager.cpp"> | |||
| <Filter>Juce\Source\audio\plugin_host</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\src\audio\plugin_host\juce_AudioPluginInstance.cpp"> | |||
| <Filter>Juce\Source\audio\plugin_host</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="..\..\src\audio\plugin_host\juce_KnownPluginList.cpp"> | |||
| <Filter>Juce\Source\audio\plugin_host</Filter> | |||
| </ClCompile> | |||
| @@ -2307,6 +2304,9 @@ | |||
| <ClInclude Include="..\..\src\native\windows\juce_win32_ComSmartPtr.h"> | |||
| <Filter>Juce\Source\native\windows</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\src\native\windows\juce_win32_HiddenMessageWindow.h"> | |||
| <Filter>Juce\Source\native\windows</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="..\..\src\native\windows\juce_win32_NativeIncludes.h"> | |||
| <Filter>Juce\Source\native\windows</Filter> | |||
| </ClInclude> | |||
| @@ -52,7 +52,6 @@ | |||
| D71FEEEA440682B04E024BB7 = { isa = PBXBuildFile; fileRef = 2EBF36FAAF019B6F811D1C84; }; | |||
| B331EE2C23176373F2D52C1E = { isa = PBXBuildFile; fileRef = 1C8211DFB558D740EF4B173A; }; | |||
| 79D8E372BA77018BDA956D92 = { isa = PBXBuildFile; fileRef = DA4820727D6DDC75561A262C; }; | |||
| 21005408DDA892A5B8B4F78D = { isa = PBXBuildFile; fileRef = C96D4FE222A8704A8F3BEDD8; }; | |||
| 3688819F98EFF0AABDD79029 = { isa = PBXBuildFile; fileRef = 3110B983ACE956D6A24F8C8C; }; | |||
| 84F9FCAE9DF003DC6FC3C941 = { isa = PBXBuildFile; fileRef = B6E20AE45813C0CA9B1014DD; }; | |||
| E1046147432EB115A68D6C43 = { isa = PBXBuildFile; fileRef = AF47BC3796A74CC15A192E8B; }; | |||
| @@ -483,7 +482,6 @@ | |||
| 28534632DF76A1EA837BD0D7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormat.h"; path = "../../src/audio/plugin_host/juce_AudioPluginFormat.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| DA4820727D6DDC75561A262C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioPluginFormatManager.cpp"; path = "../../src/audio/plugin_host/juce_AudioPluginFormatManager.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| A6415104D1E3E5CE7031C0C1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginFormatManager.h"; path = "../../src/audio/plugin_host/juce_AudioPluginFormatManager.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| C96D4FE222A8704A8F3BEDD8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_AudioPluginInstance.cpp"; path = "../../src/audio/plugin_host/juce_AudioPluginInstance.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E5BA7B8913271E935A1DA487 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_AudioPluginInstance.h"; path = "../../src/audio/plugin_host/juce_AudioPluginInstance.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| 3110B983ACE956D6A24F8C8C = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_KnownPluginList.cpp"; path = "../../src/audio/plugin_host/juce_KnownPluginList.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| A3FE51C7DD706F536273AB0E = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_KnownPluginList.h"; path = "../../src/audio/plugin_host/juce_KnownPluginList.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| @@ -1024,6 +1022,7 @@ | |||
| DCD09B6EF4A4A109DE01F152 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_FileChooser.cpp"; path = "../../src/native/windows/juce_win32_FileChooser.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 7527A5E8F4F39581159D3E5B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Files.cpp"; path = "../../src/native/windows/juce_win32_Files.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 1DBF9DAAD0690CB2CA4E9960 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Fonts.cpp"; path = "../../src/native/windows/juce_win32_Fonts.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| E9B203E963EB1AB566061AC1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_win32_HiddenMessageWindow.h"; path = "../../src/native/windows/juce_win32_HiddenMessageWindow.h"; sourceTree = "SOURCE_ROOT"; }; | |||
| BA561E64C6400CFB1DE013F6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Messaging.cpp"; path = "../../src/native/windows/juce_win32_Messaging.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 061B492EABD6B1C995D581A8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Midi.cpp"; path = "../../src/native/windows/juce_win32_Midi.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| 519B519B76E2EEEAB49C62DF = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_win32_Misc.cpp"; path = "../../src/native/windows/juce_win32_Misc.cpp"; sourceTree = "SOURCE_ROOT"; }; | |||
| @@ -1249,7 +1248,6 @@ | |||
| 28534632DF76A1EA837BD0D7, | |||
| DA4820727D6DDC75561A262C, | |||
| A6415104D1E3E5CE7031C0C1, | |||
| C96D4FE222A8704A8F3BEDD8, | |||
| E5BA7B8913271E935A1DA487, | |||
| 3110B983ACE956D6A24F8C8C, | |||
| A3FE51C7DD706F536273AB0E, | |||
| @@ -1866,6 +1864,7 @@ | |||
| DCD09B6EF4A4A109DE01F152, | |||
| 7527A5E8F4F39581159D3E5B, | |||
| 1DBF9DAAD0690CB2CA4E9960, | |||
| E9B203E963EB1AB566061AC1, | |||
| BA561E64C6400CFB1DE013F6, | |||
| 061B492EABD6B1C995D581A8, | |||
| 519B519B76E2EEEAB49C62DF, | |||
| @@ -2116,7 +2115,6 @@ | |||
| D71FEEEA440682B04E024BB7, | |||
| B331EE2C23176373F2D52C1E, | |||
| 79D8E372BA77018BDA956D92, | |||
| 21005408DDA892A5B8B4F78D, | |||
| 3688819F98EFF0AABDD79029, | |||
| 84F9FCAE9DF003DC6FC3C941, | |||
| E1046147432EB115A68D6C43, | |||
| @@ -294,8 +294,6 @@ | |||
| resource="0" file="src/audio/plugin_host/juce_AudioPluginFormatManager.cpp"/> | |||
| <FILE id="B5LxiQ" name="juce_AudioPluginFormatManager.h" compile="0" | |||
| resource="0" file="src/audio/plugin_host/juce_AudioPluginFormatManager.h"/> | |||
| <FILE id="VKCA5h" name="juce_AudioPluginInstance.cpp" compile="1" resource="0" | |||
| file="src/audio/plugin_host/juce_AudioPluginInstance.cpp"/> | |||
| <FILE id="eUQAKu" name="juce_AudioPluginInstance.h" compile="0" resource="0" | |||
| file="src/audio/plugin_host/juce_AudioPluginInstance.h"/> | |||
| <FILE id="Wvtvb" name="juce_KnownPluginList.cpp" compile="1" resource="0" | |||
| @@ -1434,6 +1432,8 @@ | |||
| file="src/native/windows/juce_win32_Files.cpp"/> | |||
| <FILE id="qEVAjzrrR" name="juce_win32_Fonts.cpp" compile="1" resource="0" | |||
| file="src/native/windows/juce_win32_Fonts.cpp"/> | |||
| <FILE id="EnTTYs" name="juce_win32_HiddenMessageWindow.h" compile="0" | |||
| resource="0" file="src/native/windows/juce_win32_HiddenMessageWindow.h"/> | |||
| <FILE id="Nqhr3WLUE" name="juce_win32_Messaging.cpp" compile="1" resource="0" | |||
| file="src/native/windows/juce_win32_Messaging.cpp"/> | |||
| <FILE id="P25j5MUtL" name="juce_win32_Midi.cpp" compile="1" resource="0" | |||
| @@ -207,7 +207,6 @@ | |||
| #include "../src/audio/midi/juce_MidiMessageSequence.cpp" | |||
| #include "../src/audio/plugin_host/juce_AudioPluginFormat.cpp" | |||
| #include "../src/audio/plugin_host/juce_AudioPluginFormatManager.cpp" | |||
| #include "../src/audio/plugin_host/juce_AudioPluginInstance.cpp" | |||
| #include "../src/audio/plugin_host/juce_KnownPluginList.cpp" | |||
| #include "../src/audio/plugin_host/juce_PluginDescription.cpp" | |||
| #include "../src/audio/plugin_host/juce_PluginDirectoryScanner.cpp" | |||
| @@ -73,7 +73,7 @@ namespace JuceDummyNamespace {} | |||
| */ | |||
| #define JUCE_MAJOR_VERSION 1 | |||
| #define JUCE_MINOR_VERSION 54 | |||
| #define JUCE_BUILDNUMBER 13 | |||
| #define JUCE_BUILDNUMBER 14 | |||
| /** Current Juce version number. | |||
| @@ -102,6 +102,14 @@ namespace JuceDummyNamespace {} | |||
| - Either JUCE_GCC or JUCE_MSVC | |||
| */ | |||
| /* This line is here as a sanity-check to catch syntax errors caused by mistakes in 3rd-party | |||
| header files that have been included before this one. If you hit an error at this line, there | |||
| must be some kind of syntax problem in whatever code immediately precedes this header. | |||
| It also causes an error if you attempt to build using a C or obj-C compiler rather than a C++ one. | |||
| */ | |||
| namespace JuceDummyNamespace {} | |||
| #if (defined (_WIN32) || defined (_WIN64)) | |||
| #define JUCE_WIN32 1 | |||
| #define JUCE_WINDOWS 1 | |||
| @@ -111,7 +119,9 @@ namespace JuceDummyNamespace {} | |||
| #elif defined (LINUX) || defined (__linux__) | |||
| #define JUCE_LINUX 1 | |||
| #elif defined (__APPLE_CPP__) || defined(__APPLE_CC__) | |||
| #define Point CarbonDummyPointName // (workaround to avoid definition of "Point" by old Carbon headers) | |||
| #include <CoreFoundation/CoreFoundation.h> // (needed to find out what platform we're using) | |||
| #undef Point | |||
| #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR | |||
| #define JUCE_IPHONE 1 | |||
| @@ -848,10 +858,6 @@ namespace JuceDummyNamespace {} | |||
| #if JUCE_MSVC | |||
| #include <malloc.h> | |||
| #pragma warning (pop) | |||
| #if ! JUCE_PUBLIC_INCLUDES | |||
| #pragma warning (4: 4511 4512 4100) // (enable some warnings that are turned off in VC8) | |||
| #endif | |||
| #endif | |||
| #if JUCE_ANDROID | |||
| @@ -25129,9 +25135,9 @@ public: | |||
| #define __JUCE_IMAGEEFFECTFILTER_JUCEHEADER__ | |||
| /*** Start of inlined file: juce_Graphics.h ***/ | |||
| #ifndef __JUCE_GRAPHICS_JUCEHEADER__ | |||
| #define __JUCE_GRAPHICS_JUCEHEADER__ | |||
| /*** Start of inlined file: juce_GraphicsContext.h ***/ | |||
| #ifndef __JUCE_GRAPHICSCONTEXT_JUCEHEADER__ | |||
| #define __JUCE_GRAPHICSCONTEXT_JUCEHEADER__ | |||
| /*** Start of inlined file: juce_Font.h ***/ | |||
| @@ -29627,9 +29633,9 @@ private: | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Graphics); | |||
| }; | |||
| #endif // __JUCE_GRAPHICS_JUCEHEADER__ | |||
| #endif // __JUCE_GRAPHICSCONTEXT_JUCEHEADER__ | |||
| /*** End of inlined file: juce_Graphics.h ***/ | |||
| /*** End of inlined file: juce_GraphicsContext.h ***/ | |||
| /** | |||
| A graphical effect filter that can be applied to components. | |||
| @@ -43362,7 +43368,7 @@ public: | |||
| Make sure that you delete any UI components that belong to this plugin before | |||
| deleting the plugin. | |||
| */ | |||
| virtual ~AudioPluginInstance(); | |||
| virtual ~AudioPluginInstance() {} | |||
| /** Fills-in the appropriate parts of this plugin description object. | |||
| */ | |||
| @@ -43373,11 +43379,11 @@ public: | |||
| E.g. For a VST, this value can be cast to an AEffect*. For an AudioUnit, it can be | |||
| cast to an AudioUnit handle. | |||
| */ | |||
| virtual void* getPlatformSpecificData(); | |||
| virtual void* getPlatformSpecificData() { return nullptr; } | |||
| protected: | |||
| AudioPluginInstance(); | |||
| AudioPluginInstance() {} | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioPluginInstance); | |||
| }; | |||
| @@ -43582,7 +43588,6 @@ private: | |||
| #endif | |||
| #ifndef __JUCE_VSTMIDIEVENTLIST_JUCEHEADER__ | |||
| /*** Start of inlined file: juce_VSTMidiEventList.h ***/ | |||
| #ifdef __aeffect__ | |||
| @@ -43747,7 +43752,6 @@ private: | |||
| /*** End of inlined file: juce_VSTMidiEventList.h ***/ | |||
| #endif | |||
| #ifndef __JUCE_VSTPLUGINFORMAT_JUCEHEADER__ | |||
| /*** Start of inlined file: juce_VSTPluginFormat.h ***/ | |||
| @@ -67170,7 +67174,7 @@ private: | |||
| #endif | |||
| #ifndef __JUCE_GRAPHICS_JUCEHEADER__ | |||
| #ifndef __JUCE_GRAPHICSCONTEXT_JUCEHEADER__ | |||
| #endif | |||
| #ifndef __JUCE_JUSTIFICATION_JUCEHEADER__ | |||
| @@ -38,14 +38,14 @@ BEGIN_JUCE_NAMESPACE | |||
| namespace FlacNamespace | |||
| { | |||
| #if JUCE_INCLUDE_FLAC_CODE | |||
| #if JUCE_INCLUDE_FLAC_CODE || ! defined (JUCE_INCLUDE_FLAC_CODE) | |||
| #if JUCE_MSVC | |||
| #pragma warning (disable: 4505 181 111) | |||
| #endif | |||
| #pragma warning (disable: 4505 181 111) | |||
| #endif | |||
| #define FLAC__NO_DLL 1 | |||
| #if ! defined (SIZE_MAX) | |||
| #ifndef SIZE_MAX | |||
| #define SIZE_MAX 0xffffffff | |||
| #endif | |||
| @@ -38,7 +38,7 @@ BEGIN_JUCE_NAMESPACE | |||
| namespace OggVorbisNamespace | |||
| { | |||
| #if JUCE_INCLUDE_OGGVORBIS_CODE | |||
| #if JUCE_INCLUDE_OGGVORBIS_CODE || ! defined (JUCE_INCLUDE_OGGVORBIS_CODE) | |||
| #include "oggvorbis/vorbisenc.h" | |||
| #include "oggvorbis/codec.h" | |||
| #include "oggvorbis/vorbisfile.h" | |||
| @@ -46,11 +46,13 @@ | |||
| Alternatively, if you don't need any QuickTime services, just turn off the JUCE_QUICKTIME | |||
| flag in juce_Config.h | |||
| */ | |||
| #undef SIZE_MAX | |||
| #include <Movies.h> | |||
| #include <QTML.h> | |||
| #include <QuickTimeComponents.h> | |||
| #include <MediaHandlers.h> | |||
| #include <ImageCodec.h> | |||
| #undef SIZE_MAX | |||
| #if JUCE_MSVC | |||
| #pragma warning (pop) | |||
| @@ -1,49 +0,0 @@ | |||
| /* | |||
| ============================================================================== | |||
| This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||
| Copyright 2004-11 by Raw Material Software Ltd. | |||
| ------------------------------------------------------------------------------ | |||
| JUCE can be redistributed and/or modified under the terms of the GNU General | |||
| Public License (Version 2), as published by the Free Software Foundation. | |||
| A copy of the license is included in the JUCE distribution, or can be found | |||
| online at www.gnu.org/licenses. | |||
| JUCE is distributed in the hope that it will be useful, but WITHOUT ANY | |||
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | |||
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||
| ------------------------------------------------------------------------------ | |||
| To release a closed-source product which uses JUCE, commercial licenses are | |||
| available: visit www.rawmaterialsoftware.com/juce for more information. | |||
| ============================================================================== | |||
| */ | |||
| #define JUCE_PLUGIN_HOST 1 | |||
| #include "../../core/juce_StandardHeader.h" | |||
| BEGIN_JUCE_NAMESPACE | |||
| #include "juce_AudioPluginInstance.h" | |||
| //============================================================================== | |||
| AudioPluginInstance::AudioPluginInstance() | |||
| { | |||
| } | |||
| AudioPluginInstance::~AudioPluginInstance() | |||
| { | |||
| } | |||
| void* AudioPluginInstance::getPlatformSpecificData() | |||
| { | |||
| return nullptr; | |||
| } | |||
| END_JUCE_NAMESPACE | |||
| @@ -48,7 +48,7 @@ public: | |||
| Make sure that you delete any UI components that belong to this plugin before | |||
| deleting the plugin. | |||
| */ | |||
| virtual ~AudioPluginInstance(); | |||
| virtual ~AudioPluginInstance() {} | |||
| //============================================================================== | |||
| /** Fills-in the appropriate parts of this plugin description object. | |||
| @@ -60,11 +60,11 @@ public: | |||
| E.g. For a VST, this value can be cast to an AEffect*. For an AudioUnit, it can be | |||
| cast to an AudioUnit handle. | |||
| */ | |||
| virtual void* getPlatformSpecificData(); | |||
| virtual void* getPlatformSpecificData() { return nullptr; } | |||
| protected: | |||
| //============================================================================== | |||
| AudioPluginInstance(); | |||
| AudioPluginInstance() {} | |||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (AudioPluginInstance); | |||
| }; | |||
| @@ -117,18 +117,18 @@ bool PluginDescription::loadFromXml (const XmlElement& xml) | |||
| { | |||
| if (xml.hasTagName ("PLUGIN")) | |||
| { | |||
| name = xml.getStringAttribute ("name"); | |||
| descriptiveName = xml.getStringAttribute ("name", name); | |||
| pluginFormatName = xml.getStringAttribute ("format"); | |||
| category = xml.getStringAttribute ("category"); | |||
| manufacturerName = xml.getStringAttribute ("manufacturer"); | |||
| version = xml.getStringAttribute ("version"); | |||
| fileOrIdentifier = xml.getStringAttribute ("file"); | |||
| uid = xml.getStringAttribute ("uid").getHexValue32(); | |||
| isInstrument = xml.getBoolAttribute ("isInstrument", false); | |||
| lastFileModTime = Time (xml.getStringAttribute ("fileTime").getHexValue64()); | |||
| numInputChannels = xml.getIntAttribute ("numInputs"); | |||
| numOutputChannels = xml.getIntAttribute ("numOutputs"); | |||
| name = xml.getStringAttribute ("name"); | |||
| descriptiveName = xml.getStringAttribute ("descriptiveName", name); | |||
| pluginFormatName = xml.getStringAttribute ("format"); | |||
| category = xml.getStringAttribute ("category"); | |||
| manufacturerName = xml.getStringAttribute ("manufacturer"); | |||
| version = xml.getStringAttribute ("version"); | |||
| fileOrIdentifier = xml.getStringAttribute ("file"); | |||
| uid = xml.getStringAttribute ("uid").getHexValue32(); | |||
| isInstrument = xml.getBoolAttribute ("isInstrument", false); | |||
| lastFileModTime = Time (xml.getStringAttribute ("fileTime").getHexValue64()); | |||
| numInputChannels = xml.getIntAttribute ("numInputs"); | |||
| numOutputChannels = xml.getIntAttribute ("numOutputs"); | |||
| return true; | |||
| } | |||
| @@ -33,7 +33,7 @@ | |||
| */ | |||
| #define JUCE_MAJOR_VERSION 1 | |||
| #define JUCE_MINOR_VERSION 54 | |||
| #define JUCE_BUILDNUMBER 13 | |||
| #define JUCE_BUILDNUMBER 14 | |||
| /** Current Juce version number. | |||
| @@ -58,7 +58,9 @@ namespace JuceDummyNamespace {} | |||
| #elif defined (LINUX) || defined (__linux__) | |||
| #define JUCE_LINUX 1 | |||
| #elif defined (__APPLE_CPP__) || defined(__APPLE_CC__) | |||
| #define Point CarbonDummyPointName // (workaround to avoid definition of "Point" by old Carbon headers) | |||
| #include <CoreFoundation/CoreFoundation.h> // (needed to find out what platform we're using) | |||
| #undef Point | |||
| #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR | |||
| #define JUCE_IPHONE 1 | |||
| @@ -62,11 +62,19 @@ END_JUCE_NAMESPACE | |||
| BEGIN_JUCE_NAMESPACE | |||
| extern Image juce_createImageFromCIImage (CIImage* im, int w, int h); | |||
| //============================================================================== | |||
| class QTCameraDeviceInteral | |||
| { | |||
| public: | |||
| QTCameraDeviceInteral (CameraDevice* owner, int index) | |||
| QTCameraDeviceInteral (CameraDevice* owner, const int index) | |||
| : input (nil), | |||
| audioDevice (nil), | |||
| audioInput (nil), | |||
| session (nil), | |||
| fileOutput (nil), | |||
| imageOutput (nil) | |||
| { | |||
| JUCE_AUTORELEASEPOOL | |||
| @@ -74,11 +82,6 @@ public: | |||
| NSArray* devs = [QTCaptureDevice inputDevicesWithMediaType: QTMediaTypeVideo]; | |||
| device = (QTCaptureDevice*) [devs objectAtIndex: index]; | |||
| input = nil; | |||
| audioInput = nil; | |||
| audioDevice = nil; | |||
| fileOutput = nil; | |||
| imageOutput = nil; | |||
| callbackDelegate = [[QTCaptureCallbackDelegate alloc] initWithOwner: owner | |||
| internalDev: this]; | |||
| @@ -88,7 +91,7 @@ public: | |||
| if (err == nil) | |||
| { | |||
| input = [[QTCaptureDeviceInput alloc] initWithDevice: device]; | |||
| input = [[QTCaptureDeviceInput alloc] initWithDevice: device]; | |||
| audioInput = [[QTCaptureDeviceInput alloc] initWithDevice: device]; | |||
| [session addInput: input error: &err]; | |||
| @@ -181,12 +184,7 @@ public: | |||
| void callListeners (CIImage* frame, int w, int h) | |||
| { | |||
| CoreGraphicsImage* cgImage = new CoreGraphicsImage (Image::ARGB, w, h, false); | |||
| Image image (cgImage); | |||
| CIContext* cic = [CIContext contextWithCGContext: cgImage->context options: nil]; | |||
| [cic drawImage: frame inRect: CGRectMake (0, 0, w, h) fromRect: CGRectMake (0, 0, w, h)]; | |||
| CGContextFlush (cgImage->context); | |||
| Image image (juce_createImageFromCIImage (frame, w, h)); | |||
| const ScopedLock sl (listenerLock); | |||
| @@ -922,4 +922,15 @@ Image juce_loadWithCoreImage (InputStream& input) | |||
| } | |||
| #endif | |||
| Image juce_createImageFromCIImage (CIImage* im, int w, int h) | |||
| { | |||
| CoreGraphicsImage* cgImage = new CoreGraphicsImage (Image::ARGB, w, h, false); | |||
| CIContext* cic = [CIContext contextWithCGContext: cgImage->context options: nil]; | |||
| [cic drawImage: im inRect: CGRectMake (0, 0, w, h) fromRect: CGRectMake (0, 0, w, h)]; | |||
| CGContextFlush (cgImage->context); | |||
| return Image (cgImage); | |||
| } | |||
| #endif | |||
| @@ -43,6 +43,7 @@ | |||
| #include <OpenGLES/ES1/glext.h> | |||
| #endif | |||
| #else | |||
| #define Point CarbonDummyPointName // (workaround to avoid definition of "Point" by old Carbon headers) | |||
| #import <Cocoa/Cocoa.h> | |||
| #import <CoreAudio/HostTime.h> | |||
| #if JUCE_BUILD_NATIVE | |||
| @@ -61,6 +62,7 @@ | |||
| || ! (defined (MAC_OS_X_VERSION_10_6) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6) | |||
| #include <Carbon/Carbon.h> | |||
| #endif | |||
| #undef Point | |||
| #include <sys/dir.h> | |||
| #endif | |||
| @@ -23,6 +23,9 @@ | |||
| ============================================================================== | |||
| */ | |||
| #ifndef __JUCE_MAC_OBJCSUFFIX_JUCEHEADER__ | |||
| #define __JUCE_MAC_OBJCSUFFIX_JUCEHEADER__ | |||
| /** This suffix is used for naming all Obj-C classes that are used inside juce. | |||
| Because of the flat naming structure used by Obj-C, you can get horrible situations where | |||
| @@ -43,5 +46,7 @@ | |||
| #ifndef DOXYGEN | |||
| #define appendMacro1(a, b, c, d, e) a ## _ ## b ## _ ## c ## _ ## d ## _ ## e | |||
| #define appendMacro2(a, b, c, d, e) appendMacro1(a, b, c, d, e) | |||
| #define MakeObjCClassName(rootName) appendMacro2 (rootName, JUCE_MAJOR_VERSION, JUCE_MINOR_VERSION, JUCE_BUILDNUMBER, JUCE_ObjCExtraSuffix) | |||
| #define MakeObjCClassName(rootName) appendMacro2 (rootName, JUCE_MAJOR_VERSION, JUCE_MINOR_VERSION, JUCE_BUILDNUMBER, JUCE_ObjCExtraSuffix) | |||
| #endif | |||
| #endif // __JUCE_MAC_OBJCSUFFIX_JUCEHEADER__ | |||
| @@ -1377,5 +1377,6 @@ AudioIODeviceType* AudioIODeviceType::createAudioIODeviceType_DirectSound() | |||
| } | |||
| #undef log | |||
| #undef logError | |||
| #endif | |||
| @@ -0,0 +1,128 @@ | |||
| /* | |||
| ============================================================================== | |||
| This file is part of the JUCE library - "Jules' Utility Class Extensions" | |||
| Copyright 2004-11 by Raw Material Software Ltd. | |||
| ------------------------------------------------------------------------------ | |||
| JUCE can be redistributed and/or modified under the terms of the GNU General | |||
| Public License (Version 2), as published by the Free Software Foundation. | |||
| A copy of the license is included in the JUCE distribution, or can be found | |||
| online at www.gnu.org/licenses. | |||
| JUCE is distributed in the hope that it will be useful, but WITHOUT ANY | |||
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | |||
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |||
| ------------------------------------------------------------------------------ | |||
| To release a closed-source product which uses JUCE, commercial licenses are | |||
| available: visit www.rawmaterialsoftware.com/juce for more information. | |||
| ============================================================================== | |||
| */ | |||
| #ifndef __JUCE_WIN32_HIDDENMESSAGEWINDOW_JUCEHEADER__ | |||
| #define __JUCE_WIN32_HIDDENMESSAGEWINDOW_JUCEHEADER__ | |||
| //============================================================================== | |||
| class HiddenMessageWindow | |||
| { | |||
| public: | |||
| HiddenMessageWindow (const TCHAR* const messageWindowName, WNDPROC wndProc) | |||
| { | |||
| String className ("JUCE_"); | |||
| className << String::toHexString (Time::getHighResolutionTicks()); | |||
| HMODULE moduleHandle = (HMODULE) Process::getCurrentModuleInstanceHandle(); | |||
| WNDCLASSEX wc = { 0 }; | |||
| wc.cbSize = sizeof (wc); | |||
| wc.lpfnWndProc = wndProc; | |||
| wc.cbWndExtra = 4; | |||
| wc.hInstance = moduleHandle; | |||
| wc.lpszClassName = className.toWideCharPointer(); | |||
| atom = RegisterClassEx (&wc); | |||
| jassert (atom != 0); | |||
| hwnd = CreateWindow (getClassNameFromAtom(), messageWindowName, | |||
| 0, 0, 0, 0, 0, 0, 0, moduleHandle, 0); | |||
| jassert (hwnd != 0); | |||
| } | |||
| ~HiddenMessageWindow() | |||
| { | |||
| DestroyWindow (hwnd); | |||
| UnregisterClass (getClassNameFromAtom(), 0); | |||
| } | |||
| inline HWND getHWND() const noexcept { return hwnd; } | |||
| private: | |||
| ATOM atom; | |||
| HWND hwnd; | |||
| LPCTSTR getClassNameFromAtom() noexcept { return (LPCTSTR) MAKELONG (atom, 0); } | |||
| }; | |||
| //============================================================================== | |||
| class JuceWindowIdentifier | |||
| { | |||
| public: | |||
| static bool isJUCEWindow (HWND hwnd) noexcept | |||
| { | |||
| return GetWindowLong (hwnd, GWLP_USERDATA) == improbableWindowNumber; | |||
| } | |||
| static void setAsJUCEWindow (HWND hwnd, bool isJuceWindow) noexcept | |||
| { | |||
| SetWindowLongPtr (hwnd, GWLP_USERDATA, isJuceWindow ? improbableWindowNumber : 0); | |||
| } | |||
| private: | |||
| enum { improbableWindowNumber = 0xf965aa01 }; | |||
| }; | |||
| //============================================================================== | |||
| class DeviceChangeDetector : private Timer | |||
| { | |||
| public: | |||
| DeviceChangeDetector (const wchar_t* const name) | |||
| : messageWindow (name, (WNDPROC) deviceChangeEventCallback) | |||
| { | |||
| SetWindowLongPtr (messageWindow.getHWND(), GWLP_USERDATA, (LONG_PTR) this); | |||
| } | |||
| virtual ~DeviceChangeDetector() {} | |||
| protected: | |||
| virtual void systemDeviceChanged() = 0; | |||
| private: | |||
| HiddenMessageWindow messageWindow; | |||
| static LRESULT CALLBACK deviceChangeEventCallback (HWND h, const UINT message, | |||
| const WPARAM wParam, const LPARAM lParam) | |||
| { | |||
| if (message == WM_DEVICECHANGE | |||
| && (wParam == 0x8000 /*DBT_DEVICEARRIVAL*/ | |||
| || wParam == 0x8004 /*DBT_DEVICEREMOVECOMPLETE*/ | |||
| || wParam == 0x0007 /*DBT_DEVNODES_CHANGED*/)) | |||
| { | |||
| // We'll pause before sending a message, because on device removal, the OS hasn't always updated | |||
| // its device lists correctly at this point. This also helps avoid repeated callbacks. | |||
| ((DeviceChangeDetector*) GetWindowLongPtr (h, GWLP_USERDATA))->startTimer (500); | |||
| } | |||
| return DefWindowProc (h, message, wParam, lParam); | |||
| } | |||
| void timerCallback() | |||
| { | |||
| systemDeviceChanged(); | |||
| } | |||
| }; | |||
| #endif // __JUCE_WIN32_HIDDENMESSAGEWINDOW_JUCEHEADER__ | |||
| @@ -27,67 +27,7 @@ | |||
| // compiled on its own). | |||
| #if JUCE_INCLUDED_FILE | |||
| //============================================================================== | |||
| class HiddenMessageWindow | |||
| { | |||
| public: | |||
| HiddenMessageWindow (const TCHAR* const messageWindowName, WNDPROC wndProc) | |||
| { | |||
| String className ("JUCE_"); | |||
| className << String::toHexString (Time::getHighResolutionTicks()); | |||
| HMODULE moduleHandle = (HMODULE) Process::getCurrentModuleInstanceHandle(); | |||
| WNDCLASSEX wc = { 0 }; | |||
| wc.cbSize = sizeof (wc); | |||
| wc.lpfnWndProc = wndProc; | |||
| wc.cbWndExtra = 4; | |||
| wc.hInstance = moduleHandle; | |||
| wc.lpszClassName = className.toWideCharPointer(); | |||
| atom = RegisterClassEx (&wc); | |||
| jassert (atom != 0); | |||
| hwnd = CreateWindow (getClassNameFromAtom(), messageWindowName, | |||
| 0, 0, 0, 0, 0, 0, 0, moduleHandle, 0); | |||
| jassert (hwnd != 0); | |||
| } | |||
| ~HiddenMessageWindow() | |||
| { | |||
| DestroyWindow (hwnd); | |||
| UnregisterClass (getClassNameFromAtom(), 0); | |||
| } | |||
| inline HWND getHWND() const noexcept { return hwnd; } | |||
| private: | |||
| ATOM atom; | |||
| HWND hwnd; | |||
| LPCTSTR getClassNameFromAtom() noexcept { return (LPCTSTR) MAKELONG (atom, 0); } | |||
| }; | |||
| //============================================================================== | |||
| class JuceWindowIdentifier | |||
| { | |||
| public: | |||
| static bool isJUCEWindow (HWND hwnd) noexcept | |||
| { | |||
| return GetWindowLong (hwnd, GWLP_USERDATA) == improbableWindowNumber; | |||
| } | |||
| static void setAsJUCEWindow (HWND hwnd, bool isJuceWindow) noexcept | |||
| { | |||
| SetWindowLongPtr (hwnd, GWLP_USERDATA, isJuceWindow ? improbableWindowNumber : 0); | |||
| } | |||
| private: | |||
| enum { improbableWindowNumber = 0xf965aa01 }; | |||
| }; | |||
| extern HWND juce_messageWindowHandle; | |||
| //============================================================================== | |||
| namespace WindowsMessageHelpers | |||
| @@ -341,44 +281,4 @@ void MessageManager::doPlatformSpecificShutdown() | |||
| OleUninitialize(); | |||
| } | |||
| //============================================================================== | |||
| class DeviceChangeDetector : private Timer // (Used by various audio classes) | |||
| { | |||
| public: | |||
| DeviceChangeDetector (const wchar_t* const name) | |||
| : messageWindow (name, (WNDPROC) deviceChangeEventCallback) | |||
| { | |||
| SetWindowLongPtr (messageWindow.getHWND(), GWLP_USERDATA, (LONG_PTR) this); | |||
| } | |||
| virtual ~DeviceChangeDetector() {} | |||
| protected: | |||
| virtual void systemDeviceChanged() = 0; | |||
| private: | |||
| HiddenMessageWindow messageWindow; | |||
| static LRESULT CALLBACK deviceChangeEventCallback (HWND h, const UINT message, | |||
| const WPARAM wParam, const LPARAM lParam) | |||
| { | |||
| if (message == WM_DEVICECHANGE | |||
| && (wParam == 0x8000 /*DBT_DEVICEARRIVAL*/ | |||
| || wParam == 0x8004 /*DBT_DEVICEREMOVECOMPLETE*/ | |||
| || wParam == 0x0007 /*DBT_DEVNODES_CHANGED*/)) | |||
| { | |||
| // We'll pause before sending a message, because on device removal, the OS hasn't always updated | |||
| // its device lists correctly at this point. This also helps avoid repeated callbacks. | |||
| ((DeviceChangeDetector*) GetWindowLongPtr (h, GWLP_USERDATA))->startTimer (500); | |||
| } | |||
| return DefWindowProc (h, message, wParam, lParam); | |||
| } | |||
| void timerCallback() | |||
| { | |||
| systemDeviceChanged(); | |||
| } | |||
| }; | |||
| #endif | |||
| @@ -106,6 +106,7 @@ BEGIN_JUCE_NAMESPACE | |||
| #include "juce_win32_Registry.cpp" | |||
| #if ! JUCE_ONLY_BUILD_CORE_LIBRARY | |||
| #include "juce_win32_HiddenMessageWindow.h" | |||
| #include "juce_win32_Messaging.cpp" | |||
| #include "juce_win32_Fonts.cpp" | |||
| #include "juce_win32_Direct2DGraphicsContext.cpp" | |||
| @@ -291,12 +291,11 @@ private: | |||
| request = FtpOpenFile (connection, uc.lpszUrlPath, GENERIC_READ, | |||
| FTP_TRANSFER_TYPE_BINARY | INTERNET_FLAG_NEED_FILE, 0); | |||
| else | |||
| openHTTPConnection (uc, sessionHandle, progressCallback, progressCallbackContext); | |||
| openHTTPConnection (uc, progressCallback, progressCallbackContext); | |||
| } | |||
| } | |||
| void openHTTPConnection (URL_COMPONENTS& uc, HINTERNET sessionHandle, | |||
| URL::OpenStreamProgressCallback* progressCallback, | |||
| void openHTTPConnection (URL_COMPONENTS& uc, URL::OpenStreamProgressCallback* progressCallback, | |||
| void* progressCallbackContext) | |||
| { | |||
| const TCHAR* mimeTypes[] = { _T("*/*"), 0 }; | |||