mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
New class: ChildProcess. Fixed android build problems with paths.
This commit is contained in:
parent
5fc80a9b79
commit
4fcd1e3384
71 changed files with 730 additions and 67 deletions
|
|
@ -188,6 +188,8 @@
|
|||
2BA7CD667A4D3962F968735B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
6E0B0A8EDCC37862B7ECBEBC = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
875C1BC09CB8295D6799B5F8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
DF2E980AB106BC34560B6636 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
0CFE85845D2C6ABBA077A319 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
0A8AE7AC4AEF66AD97735443 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
23E4DA8F3BD72654C717FAF9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
9854BAFA65D92D059DF49F71 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -891,6 +893,8 @@
|
|||
6E0B0A8EDCC37862B7ECBEBC,
|
||||
875C1BC09CB8295D6799B5F8 ); name = containers; sourceTree = "<group>"; };
|
||||
2C3262AC916A51359D03A579 = { isa = PBXGroup; children = (
|
||||
DF2E980AB106BC34560B6636,
|
||||
0CFE85845D2C6ABBA077A319,
|
||||
0A8AE7AC4AEF66AD97735443,
|
||||
23E4DA8F3BD72654C717FAF9,
|
||||
9854BAFA65D92D059DF49F71,
|
||||
|
|
|
|||
|
|
@ -548,6 +548,17 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
</Filter>
|
||||
<Filter Name="threads">
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -548,6 +548,17 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
</Filter>
|
||||
<Filter Name="threads">
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -215,6 +215,9 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_Variant.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ReadWriteLock.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
|
|
@ -1039,6 +1042,7 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_SortedSet.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_SparseSet.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -379,6 +379,9 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_Variant.cpp">
|
||||
<Filter>Juce Modules\juce_core\containers</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ReadWriteLock.cpp">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -1473,6 +1476,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_Variant.h">
|
||||
<Filter>Juce Modules\juce_core\containers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -244,6 +244,19 @@ private:
|
|||
<< "include $(BUILD_SHARED_LIBRARY)" << newLine;
|
||||
}
|
||||
|
||||
String createIncludePathFlags (const Project::BuildConfiguration& config)
|
||||
{
|
||||
String flags;
|
||||
StringArray searchPaths (extraSearchPaths);
|
||||
searchPaths.addArray (config.getHeaderSearchPaths());
|
||||
searchPaths.removeDuplicates (false);
|
||||
|
||||
for (int i = 0; i < searchPaths.size(); ++i)
|
||||
flags << " -I " << FileHelpers::unixStylePath (replacePreprocessorTokens (config, searchPaths[i])).quoted();
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
String createCPPFlags (bool forDebug)
|
||||
{
|
||||
String flags ("-fsigned-char -fexceptions -frtti");
|
||||
|
|
@ -251,6 +264,15 @@ private:
|
|||
if (forDebug)
|
||||
flags << " -g";
|
||||
|
||||
for (int i = 0; i < configs.size(); ++i)
|
||||
{
|
||||
if (configs.getReference(i).isDebug() == forDebug)
|
||||
{
|
||||
flags << createIncludePathFlags (configs.getReference(i));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
StringPairArray defines;
|
||||
defines.set ("JUCE_ANDROID", "1");
|
||||
|
||||
|
|
|
|||
|
|
@ -47,9 +47,9 @@ LOCAL_SRC_FILES := \
|
|||
../../../../../modules/juce_video/juce_video.cpp\
|
||||
|
||||
ifeq ($(CONFIG),Debug)
|
||||
LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -g -O0 -D "JUCE_ANDROID=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1"
|
||||
LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -g -I "../../JuceLibraryCode" -O0 -D "JUCE_ANDROID=1" -D "DEBUG=1" -D "_DEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1"
|
||||
else
|
||||
LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -Os -D "JUCE_ANDROID=1" -D "NDEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1"
|
||||
LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -I "../../JuceLibraryCode" -Os -D "JUCE_ANDROID=1" -D "NDEBUG=1" -D "JUCE_UNIT_TESTS=1" -D "JUCER_ANDROID_7F0E4A25=1"
|
||||
endif
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
|
|
|
|||
|
|
@ -315,6 +315,8 @@
|
|||
427FE8BEB90565F99AEAF9E3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
85D325D62B8AA3E9586E4533 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
AE233608DB7055E4081B3C70 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
F5F5B442F0CEF8BBF78DECBE = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
23C5A1CC9CE4A632410A3A91 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
215202E499A7A22438F5DACA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
4ABBF6D78A8F52DB78A97171 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
BE2CD642B591698C3E8615F8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -1191,6 +1193,8 @@
|
|||
85D325D62B8AA3E9586E4533,
|
||||
AE233608DB7055E4081B3C70 ); name = containers; sourceTree = "<group>"; };
|
||||
420A8DE4E0228CBC3D953B00 = { isa = PBXGroup; children = (
|
||||
F5F5B442F0CEF8BBF78DECBE,
|
||||
23C5A1CC9CE4A632410A3A91,
|
||||
215202E499A7A22438F5DACA,
|
||||
4ABBF6D78A8F52DB78A97171,
|
||||
BE2CD642B591698C3E8615F8,
|
||||
|
|
|
|||
|
|
@ -1282,6 +1282,17 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
</Filter>
|
||||
<Filter Name="threads">
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -1282,6 +1282,17 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
</Filter>
|
||||
<Filter Name="threads">
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -398,6 +398,9 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_Variant.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ReadWriteLock.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
|
|
@ -1292,6 +1295,7 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_SortedSet.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_SparseSet.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -670,6 +670,9 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_Variant.cpp">
|
||||
<Filter>Juce Modules\juce_core\containers</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ReadWriteLock.cpp">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -1944,6 +1947,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_Variant.h">
|
||||
<Filter>Juce Modules\juce_core\containers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -305,6 +305,8 @@
|
|||
427FE8BEB90565F99AEAF9E3 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
85D325D62B8AA3E9586E4533 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
AE233608DB7055E4081B3C70 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
F5F5B442F0CEF8BBF78DECBE = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
23C5A1CC9CE4A632410A3A91 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
215202E499A7A22438F5DACA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
4ABBF6D78A8F52DB78A97171 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
BE2CD642B591698C3E8615F8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -1181,6 +1183,8 @@
|
|||
85D325D62B8AA3E9586E4533,
|
||||
AE233608DB7055E4081B3C70 ); name = containers; sourceTree = "<group>"; };
|
||||
420A8DE4E0228CBC3D953B00 = { isa = PBXGroup; children = (
|
||||
F5F5B442F0CEF8BBF78DECBE,
|
||||
23C5A1CC9CE4A632410A3A91,
|
||||
215202E499A7A22438F5DACA,
|
||||
4ABBF6D78A8F52DB78A97171,
|
||||
BE2CD642B591698C3E8615F8,
|
||||
|
|
|
|||
|
|
@ -301,6 +301,8 @@
|
|||
B9387C0717F60E8448CD4A93 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
FB9CB92E796C4C73074186E4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
14EDCA503A51FE7FB7FE8D30 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
6CBF37AA5FAF9146A5602E7E = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
9A8F3414FBC54FDDF0DD7B52 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
981B963DE7884BBEE6D82B8B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
B075892FD970FB65267CB231 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
25E5699A13720227ED5966B9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -1143,6 +1145,8 @@
|
|||
FB9CB92E796C4C73074186E4,
|
||||
14EDCA503A51FE7FB7FE8D30 ); name = containers; sourceTree = "<group>"; };
|
||||
B9C3113C3E132546EC787CB1 = { isa = PBXGroup; children = (
|
||||
6CBF37AA5FAF9146A5602E7E,
|
||||
9A8F3414FBC54FDDF0DD7B52,
|
||||
981B963DE7884BBEE6D82B8B,
|
||||
B075892FD970FB65267CB231,
|
||||
25E5699A13720227ED5966B9,
|
||||
|
|
|
|||
|
|
@ -1291,6 +1291,17 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
</Filter>
|
||||
<Filter Name="threads">
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -1291,6 +1291,17 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
</Filter>
|
||||
<Filter Name="threads">
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -258,6 +258,8 @@
|
|||
54083520C7AA5911B1F0371D = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
976D73482A1F97017074727D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
B0BD847AEA05490C202179B9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
078F01B40F52ECD31E932AF8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
255FFE3EAB799A5A680067DB = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
23FC5056A83C964C5F0B1704 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
5B454349892346F39FAFBEBA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
B0B523A4C3265DA5568C5232 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -1082,6 +1084,8 @@
|
|||
976D73482A1F97017074727D,
|
||||
B0BD847AEA05490C202179B9 ); name = containers; sourceTree = "<group>"; };
|
||||
4494DB56EFB670D455AB683A = { isa = PBXGroup; children = (
|
||||
078F01B40F52ECD31E932AF8,
|
||||
255FFE3EAB799A5A680067DB,
|
||||
23FC5056A83C964C5F0B1704,
|
||||
5B454349892346F39FAFBEBA,
|
||||
B0B523A4C3265DA5568C5232,
|
||||
|
|
|
|||
|
|
@ -1133,6 +1133,17 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
</Filter>
|
||||
<Filter Name="threads">
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -1133,6 +1133,17 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
</Filter>
|
||||
<Filter Name="threads">
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -73,6 +73,8 @@
|
|||
99513107F04F61661876FA4A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
DBC57E2F62B5AF65D6FA359A = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
F4058F5113AA515196A62CD7 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
4CD70C9B37F8E4387419DD15 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
69B70915D41E92BFDF952AF8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
78445B3DD0D19EA0B681DA22 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
90AD4E20C2C95D57F53561D8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
050E3E8AFCCB5509CC12155F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -259,6 +261,8 @@
|
|||
DBC57E2F62B5AF65D6FA359A,
|
||||
F4058F5113AA515196A62CD7 ); name = containers; sourceTree = "<group>"; };
|
||||
99FCE63C175C8838BB212B67 = { isa = PBXGroup; children = (
|
||||
4CD70C9B37F8E4387419DD15,
|
||||
69B70915D41E92BFDF952AF8,
|
||||
78445B3DD0D19EA0B681DA22,
|
||||
90AD4E20C2C95D57F53561D8,
|
||||
050E3E8AFCCB5509CC12155F,
|
||||
|
|
|
|||
|
|
@ -346,6 +346,17 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
</Filter>
|
||||
<Filter Name="threads">
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -88,6 +88,8 @@
|
|||
EF68F092DAC017371B6454B4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
21CD3EBA3C464526D9E89004 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
4B1D4FFCFC3CF72289959650 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
92EFCC3611899AF97808479F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
C0BFB9B0BDAF4870D2748462 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
CE5C1AD8AA624461B97F359B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
E6A50EBB9B5AF418F913DB41 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
5B15FE26C55D0BCABFF070C9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -693,6 +695,8 @@
|
|||
21CD3EBA3C464526D9E89004,
|
||||
4B1D4FFCFC3CF72289959650 ); name = containers; sourceTree = "<group>"; };
|
||||
EFF4A6D8F1ED2FF9BE1F86D1 = { isa = PBXGroup; children = (
|
||||
92EFCC3611899AF97808479F,
|
||||
C0BFB9B0BDAF4870D2748462,
|
||||
CE5C1AD8AA624461B97F359B,
|
||||
E6A50EBB9B5AF418F913DB41,
|
||||
5B15FE26C55D0BCABFF070C9,
|
||||
|
|
|
|||
|
|
@ -348,6 +348,17 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
</Filter>
|
||||
<Filter Name="threads">
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -348,6 +348,17 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
</Filter>
|
||||
<Filter Name="threads">
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -86,6 +86,8 @@
|
|||
EF68F092DAC017371B6454B4 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
21CD3EBA3C464526D9E89004 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
4B1D4FFCFC3CF72289959650 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
92EFCC3611899AF97808479F = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
C0BFB9B0BDAF4870D2748462 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
CE5C1AD8AA624461B97F359B = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
E6A50EBB9B5AF418F913DB41 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
5B15FE26C55D0BCABFF070C9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -691,6 +693,8 @@
|
|||
21CD3EBA3C464526D9E89004,
|
||||
4B1D4FFCFC3CF72289959650 ); name = containers; sourceTree = "<group>"; };
|
||||
EFF4A6D8F1ED2FF9BE1F86D1 = { isa = PBXGroup; children = (
|
||||
92EFCC3611899AF97808479F,
|
||||
C0BFB9B0BDAF4870D2748462,
|
||||
CE5C1AD8AA624461B97F359B,
|
||||
E6A50EBB9B5AF418F913DB41,
|
||||
5B15FE26C55D0BCABFF070C9,
|
||||
|
|
|
|||
|
|
@ -215,6 +215,8 @@
|
|||
A4F1CA6B07A550F9E78F82C6 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
E6550782791B9FE9A603CD27 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
0FA528C43A0141E466B0C463 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
5777950E4F5ED4BB442275A1 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
75479288EB748232AFAFB285 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
73E4E4A1E8378E23859A63BE = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
9B3DD783D92F4DDBC54E0964 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
00AEC7FE0322458C9C2BAEEC = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -1032,6 +1034,8 @@
|
|||
E6550782791B9FE9A603CD27,
|
||||
0FA528C43A0141E466B0C463 ); name = containers; sourceTree = "<group>"; };
|
||||
948C7FA03FC278BC8B3AC4E4 = { isa = PBXGroup; children = (
|
||||
5777950E4F5ED4BB442275A1,
|
||||
75479288EB748232AFAFB285,
|
||||
73E4E4A1E8378E23859A63BE,
|
||||
9B3DD783D92F4DDBC54E0964,
|
||||
00AEC7FE0322458C9C2BAEEC,
|
||||
|
|
|
|||
|
|
@ -1096,6 +1096,17 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
</Filter>
|
||||
<Filter Name="threads">
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -361,6 +361,9 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_Variant.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ReadWriteLock.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
|
|
@ -1238,6 +1241,7 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_SortedSet.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_SparseSet.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -556,6 +556,9 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_Variant.cpp">
|
||||
<Filter>Juce Modules\juce_core\containers</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ReadWriteLock.cpp">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -1779,6 +1782,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_Variant.h">
|
||||
<Filter>Juce Modules\juce_core\containers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -224,6 +224,8 @@
|
|||
CCF4492B4B4F31BDA891E22C = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_SparseSet.h"; path = "../../../../modules/juce_core/containers/juce_SparseSet.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
0F688642BDC57FBD67152E7D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_Variant.cpp"; path = "../../../../modules/juce_core/containers/juce_Variant.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
28A897747DBB21A827C215C9 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_Variant.h"; path = "../../../../modules/juce_core/containers/juce_Variant.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
707A14CE8208B48F0535C507 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = "juce_ChildProcess.cpp"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.cpp"; sourceTree = "SOURCE_ROOT"; };
|
||||
9D5A01382E2E62066FA112DA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_ChildProcess.h"; path = "../../../../modules/juce_core/threads/juce_ChildProcess.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
9BE763502BE26EF846ACC304 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_CriticalSection.h"; path = "../../../../modules/juce_core/threads/juce_CriticalSection.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
B44056431CD92E9F864059BA = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_DynamicLibrary.h"; path = "../../../../modules/juce_core/threads/juce_DynamicLibrary.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
29A146BE47DC25505D2D0E31 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "juce_InterProcessLock.h"; path = "../../../../modules/juce_core/threads/juce_InterProcessLock.h"; sourceTree = "SOURCE_ROOT"; };
|
||||
|
|
@ -953,6 +955,8 @@
|
|||
0F688642BDC57FBD67152E7D,
|
||||
28A897747DBB21A827C215C9 ); name = containers; sourceTree = "<group>"; };
|
||||
BD8FFE50726C48804C3C144A = { isa = PBXGroup; children = (
|
||||
707A14CE8208B48F0535C507,
|
||||
9D5A01382E2E62066FA112DA,
|
||||
9BE763502BE26EF846ACC304,
|
||||
B44056431CD92E9F864059BA,
|
||||
29A146BE47DC25505D2D0E31,
|
||||
|
|
|
|||
|
|
@ -515,6 +515,17 @@
|
|||
<File RelativePath="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
</Filter>
|
||||
<Filter Name="threads">
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<FileConfiguration Name="Debug|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration Name="Release|Win32"
|
||||
ExcludedFromBuild="true">
|
||||
<Tool Name="VCCLCompilerTool"/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<File RelativePath="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -206,6 +206,9 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_Variant.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ReadWriteLock.cpp">
|
||||
<ExcludedFromBuild>true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
|
|
@ -1042,6 +1045,7 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_SortedSet.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_SparseSet.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_Variant.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_DynamicLibrary.h"/>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_InterProcessLock.h"/>
|
||||
|
|
|
|||
|
|
@ -391,6 +391,9 @@
|
|||
<ClCompile Include="..\..\..\..\modules\juce_core\containers\juce_Variant.cpp">
|
||||
<Filter>Juce Modules\juce_core\containers</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.cpp">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\..\modules\juce_core\threads\juce_ReadWriteLock.cpp">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClCompile>
|
||||
|
|
@ -1548,6 +1551,9 @@
|
|||
<ClInclude Include="..\..\..\..\modules\juce_core\containers\juce_Variant.h">
|
||||
<Filter>Juce Modules\juce_core\containers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_ChildProcess.h">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\..\modules\juce_core\threads\juce_CriticalSection.h">
|
||||
<Filter>Juce Modules\juce_core\threads</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
|||
|
|
@ -298,7 +298,7 @@ public:
|
|||
{
|
||||
public:
|
||||
typedef const void VoidType;
|
||||
static inline void* toVoidPtr (VoidType* v) noexcept { return const_cast<void*> (v); }
|
||||
static inline void* toVoidPtr (VoidType* v) noexcept { return const_cast <void*> (v); }
|
||||
enum { isConst = 1 };
|
||||
};
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -23,4 +23,4 @@
|
|||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "juce_audio_basics.cpp"
|
||||
#include "juce_audio_basics.cpp"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_audio_basics",
|
||||
"name": "JUCE audio and midi data classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Classes for audio buffer manipulation, midi message handling, synthesis, etc",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_audio_devices",
|
||||
"name": "JUCE audio and midi I/O device classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Classes to play and record from audio and midi i/o devices.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -385,7 +385,7 @@ private:
|
|||
|
||||
if (callback != nullptr)
|
||||
{
|
||||
callback->audioDeviceIOCallback (const_cast<const float**> (inChans.getData()), numActiveInChans,
|
||||
callback->audioDeviceIOCallback (const_cast <const float**> (inChans.getData()), numActiveInChans,
|
||||
outChans, numActiveOutChans, numSamples);
|
||||
}
|
||||
else
|
||||
|
|
|
|||
|
|
@ -375,7 +375,7 @@ public:
|
|||
destData[j] = (samplesToWrite[i][j] >> bitsToShift);
|
||||
}
|
||||
|
||||
samplesToWrite = const_cast<const int**> (channels.getData());
|
||||
samplesToWrite = const_cast <const int**> (channels.getData());
|
||||
}
|
||||
|
||||
return FLAC__stream_encoder_process (encoder, (const FLAC__int32**) samplesToWrite, numSamples) != 0;
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ bool AudioFormatReader::read (int* const* destSamples,
|
|||
if (numSamplesToRead <= 0)
|
||||
return true;
|
||||
|
||||
if (! readSamples (const_cast<int**> (destSamples),
|
||||
if (! readSamples (const_cast <int**> (destSamples),
|
||||
jmin ((int) numChannels, numDestChannels), startOffsetInDestBuffer,
|
||||
startSampleInSource, numSamplesToRead))
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ bool AudioFormatWriter::writeFromAudioReader (AudioFormatReader& reader,
|
|||
}
|
||||
}
|
||||
|
||||
if (! write (const_cast<const int**> (buffers), numToDo))
|
||||
if (! write (const_cast <const int**> (buffers), numToDo))
|
||||
return false;
|
||||
|
||||
numSamplesToRead -= numToDo;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_audio_formats",
|
||||
"name": "JUCE audio file format codecs",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Classes for reading and writing various audio file formats.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_audio_plugin_client",
|
||||
"name": "JUCE audio plugin wrapper classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Classes for building VST, RTAS and AU plugins.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_audio_processors",
|
||||
"name": "JUCE audio plugin hosting classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Classes for loading and playing VST, AU, or internally-generated audio processors.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_audio_utils",
|
||||
"name": "JUCE extra audio utility classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Classes for audio-related GUI and miscellaneous tasks.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_browser_plugin_client",
|
||||
"name": "JUCE browser plugin wrapper classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Classes for building NPAPI and ActiveX browser plugins.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@
|
|||
#include "text/juce_StringArray.cpp"
|
||||
#include "text/juce_StringPairArray.cpp"
|
||||
#include "text/juce_StringPool.cpp"
|
||||
#include "threads/juce_ChildProcess.cpp"
|
||||
#include "threads/juce_ReadWriteLock.cpp"
|
||||
#include "threads/juce_Thread.cpp"
|
||||
#include "threads/juce_ThreadPool.cpp"
|
||||
|
|
|
|||
|
|
@ -326,6 +326,9 @@ BEGIN_JUCE_NAMESPACE
|
|||
#ifndef __JUCE_STRINGPOOL_JUCEHEADER__
|
||||
#include "text/juce_StringPool.h"
|
||||
#endif
|
||||
#ifndef __JUCE_CHILDPROCESS_JUCEHEADER__
|
||||
#include "threads/juce_ChildProcess.h"
|
||||
#endif
|
||||
#ifndef __JUCE_CRITICALSECTION_JUCEHEADER__
|
||||
#include "threads/juce_CriticalSection.h"
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_core",
|
||||
"name": "JUCE core classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"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.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -905,7 +905,7 @@ String BigInteger::toString (const int base, const int minimumNumCharacters) con
|
|||
if (base == 2 || base == 8 || base == 16)
|
||||
{
|
||||
const int bits = (base == 2) ? 1 : (base == 8 ? 3 : 4);
|
||||
static const char* const hexDigits = "0123456789abcdef";
|
||||
static const char hexDigits[] = "0123456789abcdef";
|
||||
|
||||
for (;;)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -199,6 +199,7 @@
|
|||
#include <pwd.h>
|
||||
#include <dirent.h>
|
||||
#include <fnmatch.h>
|
||||
#include <sys/wait.h>
|
||||
#endif
|
||||
|
||||
// Need to clear various moronic redefinitions made by system headers..
|
||||
|
|
|
|||
|
|
@ -919,3 +919,116 @@ void* DynamicLibrary::getFunction (const String& functionName) noexcept
|
|||
{
|
||||
return handle != nullptr ? dlsym (handle, functionName.toUTF8()) : nullptr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//==============================================================================
|
||||
class ChildProcess::ActiveProcess
|
||||
{
|
||||
public:
|
||||
ActiveProcess (const StringArray& arguments)
|
||||
: childPID (0), pipeHandle (0), readHandle (0)
|
||||
{
|
||||
int pipeHandles[2] = { 0 };
|
||||
|
||||
if (pipe (pipeHandles) == 0)
|
||||
{
|
||||
const int result = fork();
|
||||
|
||||
if (result < 0)
|
||||
{
|
||||
close (pipeHandles[0]);
|
||||
close (pipeHandles[1]);
|
||||
}
|
||||
else if (result == 0)
|
||||
{
|
||||
// we're the child process..
|
||||
close (pipeHandles[0]); // close the read handle
|
||||
dup2 (pipeHandles[1], 1); // turns the pipe into stdout
|
||||
|
||||
Array<char*> argv;
|
||||
for (int i = 0; i < arguments.size(); ++i)
|
||||
argv.add (arguments[i].toUTF8().getAddress());
|
||||
|
||||
argv.add (nullptr);
|
||||
|
||||
execvp (argv[0], argv.getRawDataPointer());
|
||||
exit (-1);
|
||||
}
|
||||
else
|
||||
{
|
||||
// we're the parent process..
|
||||
childPID = result;
|
||||
pipeHandle = pipeHandles[0];
|
||||
close (pipeHandles[1]); // close the write handle
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
~ActiveProcess()
|
||||
{
|
||||
if (readHandle != 0)
|
||||
fclose (readHandle);
|
||||
|
||||
if (pipeHandle != 0)
|
||||
close (pipeHandle);
|
||||
}
|
||||
|
||||
bool isRunning() const
|
||||
{
|
||||
if (childPID != 0)
|
||||
{
|
||||
int childState;
|
||||
const int pid = waitpid (childPID, &childState, WNOHANG);
|
||||
return pid > 0 && ! (WIFEXITED (childState) || WIFSIGNALED (childState));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int read (void* const dest, const int numBytes)
|
||||
{
|
||||
if (readHandle == 0 && childPID != 0)
|
||||
readHandle = fdopen (pipeHandle, "r");
|
||||
|
||||
if (readHandle != 0)
|
||||
return fread (dest, 1, numBytes, readHandle);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int childPID;
|
||||
|
||||
private:
|
||||
int pipeHandle;
|
||||
FILE* readHandle;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ActiveProcess);
|
||||
};
|
||||
|
||||
bool ChildProcess::start (const String& command)
|
||||
{
|
||||
StringArray tokens;
|
||||
tokens.addTokens (command, true);
|
||||
tokens.removeEmptyStrings (true);
|
||||
|
||||
if (tokens.size() == 0)
|
||||
return false;
|
||||
|
||||
activeProcess = new ActiveProcess (tokens);
|
||||
|
||||
if (activeProcess->childPID == 0)
|
||||
activeProcess = nullptr;
|
||||
|
||||
return activeProcess != nullptr;
|
||||
}
|
||||
|
||||
bool ChildProcess::isRunning() const
|
||||
{
|
||||
return activeProcess != nullptr && activeProcess->isRunning();
|
||||
}
|
||||
|
||||
int ChildProcess::readProcessOutput (void* dest, int numBytes)
|
||||
{
|
||||
return activeProcess != nullptr ? activeProcess->read (dest, numBytes) : 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,11 @@
|
|||
//==============================================================================
|
||||
namespace WindowsFileHelpers
|
||||
{
|
||||
DWORD getAtts (const String& path)
|
||||
{
|
||||
return GetFileAttributes (path.toWideCharPointer());
|
||||
}
|
||||
|
||||
int64 fileTimeToTime (const FILETIME* const ft)
|
||||
{
|
||||
static_jassert (sizeof (ULARGE_INTEGER) == sizeof (FILETIME)); // tell me if this fails!
|
||||
|
|
@ -46,13 +51,14 @@ namespace WindowsFileHelpers
|
|||
{
|
||||
if (path.isNotEmpty() && path[1] == ':' && path[2] == 0)
|
||||
path << '\\';
|
||||
else
|
||||
path = (path + " ").dropLastCharacters(1); // (mess with the string to make sure it's not sharing its internal storage)
|
||||
|
||||
WCHAR* p = const_cast <WCHAR*> (path.toWideCharPointer());
|
||||
const int numBytes = CharPointer_UTF16::getBytesRequiredFor (path.getCharPointer()) + 4;
|
||||
HeapBlock<WCHAR> pathCopy;
|
||||
pathCopy.calloc (numBytes, 1);
|
||||
path.copyToUTF16 (pathCopy, numBytes);
|
||||
|
||||
if (PathStripToRoot (p))
|
||||
return String ((const WCHAR*) p);
|
||||
if (PathStripToRoot (pathCopy))
|
||||
path = static_cast <const WCHAR*> (pathCopy);
|
||||
|
||||
return path;
|
||||
}
|
||||
|
|
@ -104,25 +110,25 @@ const String File::separatorString ("\\");
|
|||
bool File::exists() const
|
||||
{
|
||||
return fullPath.isNotEmpty()
|
||||
&& GetFileAttributes (fullPath.toWideCharPointer()) != INVALID_FILE_ATTRIBUTES;
|
||||
&& WindowsFileHelpers::getAtts (fullPath) != INVALID_FILE_ATTRIBUTES;
|
||||
}
|
||||
|
||||
bool File::existsAsFile() const
|
||||
{
|
||||
return fullPath.isNotEmpty()
|
||||
&& (GetFileAttributes (fullPath.toWideCharPointer()) & FILE_ATTRIBUTE_DIRECTORY) == 0;
|
||||
&& (WindowsFileHelpers::getAtts (fullPath) & FILE_ATTRIBUTE_DIRECTORY) == 0;
|
||||
}
|
||||
|
||||
bool File::isDirectory() const
|
||||
{
|
||||
const DWORD attr = GetFileAttributes (fullPath.toWideCharPointer());
|
||||
const DWORD attr = WindowsFileHelpers::getAtts (fullPath);
|
||||
return ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0) && (attr != INVALID_FILE_ATTRIBUTES);
|
||||
}
|
||||
|
||||
bool File::hasWriteAccess() const
|
||||
{
|
||||
if (exists())
|
||||
return (GetFileAttributes (fullPath.toWideCharPointer()) & FILE_ATTRIBUTE_READONLY) == 0;
|
||||
return (WindowsFileHelpers::getAtts (fullPath) & FILE_ATTRIBUTE_READONLY) == 0;
|
||||
|
||||
// on windows, it seems that even read-only directories can still be written into,
|
||||
// so checking the parent directory's permissions would return the wrong result..
|
||||
|
|
@ -131,25 +137,20 @@ bool File::hasWriteAccess() const
|
|||
|
||||
bool File::setFileReadOnlyInternal (const bool shouldBeReadOnly) const
|
||||
{
|
||||
DWORD attr = GetFileAttributes (fullPath.toWideCharPointer());
|
||||
const DWORD oldAtts = WindowsFileHelpers::getAtts (fullPath);
|
||||
|
||||
if (attr == INVALID_FILE_ATTRIBUTES)
|
||||
if (oldAtts == INVALID_FILE_ATTRIBUTES)
|
||||
return false;
|
||||
|
||||
if (shouldBeReadOnly == ((attr & FILE_ATTRIBUTE_READONLY) != 0))
|
||||
return true;
|
||||
|
||||
if (shouldBeReadOnly)
|
||||
attr |= FILE_ATTRIBUTE_READONLY;
|
||||
else
|
||||
attr &= ~FILE_ATTRIBUTE_READONLY;
|
||||
|
||||
return SetFileAttributes (fullPath.toWideCharPointer(), attr) != FALSE;
|
||||
const DWORD newAtts = shouldBeReadOnly ? (oldAtts | FILE_ATTRIBUTE_READONLY)
|
||||
: (oldAtts & ~FILE_ATTRIBUTE_READONLY);
|
||||
return newAtts == oldAtts
|
||||
|| SetFileAttributes (fullPath.toWideCharPointer(), newAtts) != FALSE;
|
||||
}
|
||||
|
||||
bool File::isHidden() const
|
||||
{
|
||||
return (GetFileAttributes (getFullPathName().toWideCharPointer()) & FILE_ATTRIBUTE_HIDDEN) != 0;
|
||||
return (WindowsFileHelpers::getAtts (fullPath) & FILE_ATTRIBUTE_HIDDEN) != 0;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
@ -170,12 +171,13 @@ bool File::moveToTrash() const
|
|||
SHFILEOPSTRUCT fos = { 0 };
|
||||
|
||||
// The string we pass in must be double null terminated..
|
||||
String doubleNullTermPath (getFullPathName() + " ");
|
||||
WCHAR* const p = const_cast <WCHAR*> (doubleNullTermPath.toWideCharPointer());
|
||||
p [getFullPathName().length()] = 0;
|
||||
const int numBytes = CharPointer_UTF16::getBytesRequiredFor (fullPath.getCharPointer()) + 8;
|
||||
HeapBlock<WCHAR> doubleNullTermPath;
|
||||
doubleNullTermPath.calloc (numBytes, 1);
|
||||
fullPath.copyToUTF16 (doubleNullTermPath, numBytes);
|
||||
|
||||
fos.wFunc = FO_DELETE;
|
||||
fos.pFrom = p;
|
||||
fos.pFrom = doubleNullTermPath;
|
||||
fos.fFlags = FOF_ALLOWUNDO | FOF_NOERRORUI | FOF_SILENT | FOF_NOCONFIRMATION
|
||||
| FOF_NOCONFIRMMKDIR | FOF_RENAMEONCOLLISION;
|
||||
|
||||
|
|
|
|||
|
|
@ -390,14 +390,14 @@ public:
|
|||
|
||||
switch (WaitForSingleObject (handle, timeOutMillisecs < 0 ? INFINITE : timeOutMillisecs))
|
||||
{
|
||||
case WAIT_OBJECT_0:
|
||||
case WAIT_ABANDONED:
|
||||
break;
|
||||
case WAIT_OBJECT_0:
|
||||
case WAIT_ABANDONED:
|
||||
break;
|
||||
|
||||
case WAIT_TIMEOUT:
|
||||
default:
|
||||
close();
|
||||
break;
|
||||
case WAIT_TIMEOUT:
|
||||
default:
|
||||
close();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -459,3 +459,113 @@ void InterProcessLock::exit()
|
|||
if (pimpl != nullptr && --(pimpl->refCount) == 0)
|
||||
pimpl = nullptr;
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
class ChildProcess::ActiveProcess
|
||||
{
|
||||
public:
|
||||
ActiveProcess (const String& command)
|
||||
: ok (false), readPipe (0), writePipe (0)
|
||||
{
|
||||
SECURITY_ATTRIBUTES securityAtts = { 0 };
|
||||
securityAtts.nLength = sizeof (securityAtts);
|
||||
securityAtts.bInheritHandle = TRUE;
|
||||
|
||||
if (CreatePipe (&readPipe, &writePipe, &securityAtts, 0)
|
||||
&& SetHandleInformation (readPipe, HANDLE_FLAG_INHERIT, 0))
|
||||
{
|
||||
STARTUPINFOW startupInfo = { 0 };
|
||||
startupInfo.cb = sizeof (startupInfo);
|
||||
startupInfo.hStdError = writePipe;
|
||||
startupInfo.hStdOutput = writePipe;
|
||||
startupInfo.dwFlags = STARTF_USESTDHANDLES;
|
||||
|
||||
ok = CreateProcess (nullptr, const_cast <LPWSTR> (command.toWideCharPointer()),
|
||||
nullptr, nullptr, TRUE, CREATE_NO_WINDOW | CREATE_UNICODE_ENVIRONMENT,
|
||||
nullptr, nullptr, &startupInfo, &processInfo) != FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
~ActiveProcess()
|
||||
{
|
||||
if (ok)
|
||||
{
|
||||
CloseHandle (processInfo.hThread);
|
||||
CloseHandle (processInfo.hProcess);
|
||||
}
|
||||
|
||||
if (readPipe != 0)
|
||||
CloseHandle (readPipe);
|
||||
|
||||
if (writePipe != 0)
|
||||
CloseHandle (writePipe);
|
||||
}
|
||||
|
||||
bool isRunning() const
|
||||
{
|
||||
return WaitForSingleObject (processInfo.hProcess, 0) != WAIT_OBJECT_0;
|
||||
}
|
||||
|
||||
int read (void* dest, int numNeeded) const
|
||||
{
|
||||
int total = 0;
|
||||
|
||||
while (ok && numNeeded > 0)
|
||||
{
|
||||
DWORD available = 0;
|
||||
|
||||
if (! PeekNamedPipe ((HANDLE) readPipe, nullptr, 0, nullptr, &available, nullptr))
|
||||
break;
|
||||
|
||||
const int numToDo = jmin ((int) available, numNeeded);
|
||||
|
||||
if (available == 0)
|
||||
{
|
||||
if (! isRunning())
|
||||
break;
|
||||
|
||||
Thread::yield();
|
||||
}
|
||||
else
|
||||
{
|
||||
DWORD numRead = 0;
|
||||
if (! ReadFile ((HANDLE) readPipe, dest, numToDo, &numRead, nullptr))
|
||||
break;
|
||||
|
||||
total += numRead;
|
||||
dest = addBytesToPointer (dest, numRead);
|
||||
numNeeded -= numRead;
|
||||
}
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
|
||||
bool ok;
|
||||
|
||||
private:
|
||||
HANDLE readPipe, writePipe;
|
||||
PROCESS_INFORMATION processInfo;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ActiveProcess);
|
||||
};
|
||||
|
||||
bool ChildProcess::start (const String& command)
|
||||
{
|
||||
activeProcess = new ActiveProcess (command);
|
||||
|
||||
if (! activeProcess->ok)
|
||||
activeProcess = nullptr;
|
||||
|
||||
return activeProcess != nullptr;
|
||||
}
|
||||
|
||||
bool ChildProcess::isRunning() const
|
||||
{
|
||||
return activeProcess != nullptr && activeProcess->isRunning();
|
||||
}
|
||||
|
||||
int ChildProcess::readProcessOutput (void* dest, int numBytes)
|
||||
{
|
||||
return activeProcess != nullptr ? activeProcess->read (dest, numBytes) : 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -431,7 +431,7 @@ String URL::addEscapeChars (const String& s, const bool isParameter)
|
|||
}
|
||||
else
|
||||
{
|
||||
static const char* const hexDigits = "0123456789abcdef";
|
||||
static const char hexDigits[] = "0123456789abcdef";
|
||||
|
||||
utf8.set (i, '%');
|
||||
utf8.insert (++i, hexDigits [((uint8) c) >> 4]);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
*/
|
||||
#define JUCE_MAJOR_VERSION 2
|
||||
#define JUCE_MINOR_VERSION 0
|
||||
#define JUCE_BUILDNUMBER 2
|
||||
#define JUCE_BUILDNUMBER 3
|
||||
|
||||
/** Current Juce version number.
|
||||
|
||||
|
|
|
|||
|
|
@ -1033,7 +1033,7 @@ bool String::matchesWildcard (const String& wildcard, const bool ignoreCase) con
|
|||
String String::repeatedString (const String& stringToRepeat, int numberOfTimesToRepeat)
|
||||
{
|
||||
if (numberOfTimesToRepeat <= 0)
|
||||
return String::empty;
|
||||
return empty;
|
||||
|
||||
String result (PreallocationBytes (stringToRepeat.getByteOffsetOfEnd() * numberOfTimesToRepeat));
|
||||
CharPointerType n (result.text);
|
||||
|
|
@ -1953,7 +1953,7 @@ String String::createStringFromData (const void* const data_, const int size)
|
|||
}
|
||||
|
||||
//==============================================================================
|
||||
static juce_wchar emptyChar = 0;
|
||||
static const juce_wchar emptyChar = 0;
|
||||
|
||||
template <class CharPointerType_Src, class CharPointerType_Dest>
|
||||
struct StringEncodingConverter
|
||||
|
|
@ -2011,7 +2011,7 @@ CharPointer_UTF32 String::toUTF32() const { return StringEncodingConverter <Char
|
|||
|
||||
const wchar_t* String::toWideCharPointer() const
|
||||
{
|
||||
return (const wchar_t*) StringEncodingConverter <CharPointerType, CharPointer_wchar_t>::convert (*this).getAddress();
|
||||
return StringEncodingConverter <CharPointerType, CharPointer_wchar_t>::convert (*this).getAddress();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
95
modules/juce_core/threads/juce_ChildProcess.cpp
Normal file
95
modules/juce_core/threads/juce_ChildProcess.cpp
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
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.
|
||||
|
||||
==============================================================================
|
||||
*/
|
||||
|
||||
BEGIN_JUCE_NAMESPACE
|
||||
|
||||
ChildProcess::ChildProcess() {}
|
||||
ChildProcess::~ChildProcess() {}
|
||||
|
||||
bool ChildProcess::waitForProcessToFinish (const int timeoutMs) const
|
||||
{
|
||||
const int64 timeoutTime = Time::getMillisecondCounter() + timeoutMs;
|
||||
|
||||
do
|
||||
{
|
||||
if (! isRunning())
|
||||
return true;
|
||||
}
|
||||
while (timeoutMs < 0 || Time::getMillisecondCounter() < timeoutTime);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
String ChildProcess::readAllProcessOutput()
|
||||
{
|
||||
MemoryOutputStream result;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
char buffer [512];
|
||||
const int num = readProcessOutput (buffer, sizeof (buffer));
|
||||
|
||||
if (num <= 0)
|
||||
break;
|
||||
|
||||
result.write (buffer, num);
|
||||
}
|
||||
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
#if JUCE_UNIT_TESTS
|
||||
|
||||
#include "../unit_tests/juce_UnitTest.h"
|
||||
|
||||
class ChildProcessTests : public UnitTest
|
||||
{
|
||||
public:
|
||||
ChildProcessTests() : UnitTest ("ChildProcess") {}
|
||||
|
||||
void runTest()
|
||||
{
|
||||
#if JUCE_WINDOWS || JUCE_MAC || JUCE_LINUX
|
||||
ChildProcess p;
|
||||
|
||||
#if JUCE_WINDOWS
|
||||
expect (p.start ("tasklist"));
|
||||
#else
|
||||
expect (p.start ("ls /"));
|
||||
#endif
|
||||
|
||||
String output (p.readAllProcessOutput());
|
||||
expect (output.isNotEmpty());
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
static ChildProcessTests childProcessUnitTests;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
END_JUCE_NAMESPACE
|
||||
87
modules/juce_core/threads/juce_ChildProcess.h
Normal file
87
modules/juce_core/threads/juce_ChildProcess.h
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
/*
|
||||
==============================================================================
|
||||
|
||||
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_CHILDPROCESS_JUCEHEADER__
|
||||
#define __JUCE_CHILDPROCESS_JUCEHEADER__
|
||||
|
||||
|
||||
//==============================================================================
|
||||
/**
|
||||
Launches and monitors a child process.
|
||||
|
||||
This class lets you launch an executable, and read its output. You can also
|
||||
use it to check whether the child process has finished.
|
||||
*/
|
||||
class ChildProcess
|
||||
{
|
||||
public:
|
||||
/** Creates a process object.
|
||||
To actually launch the process, use start().
|
||||
*/
|
||||
ChildProcess();
|
||||
|
||||
/** Destructor.
|
||||
Note that deleting this object won't terminate the child process.
|
||||
*/
|
||||
~ChildProcess();
|
||||
|
||||
/** Attempts to launch a child process command.
|
||||
|
||||
The command should be the name of the executable file, followed by any arguments
|
||||
that are required.
|
||||
If the process has already been launched, this will launch it again. If a problem
|
||||
occurs, the method will return false.
|
||||
*/
|
||||
bool start (const String& command);
|
||||
|
||||
/** Returns true if the child process is alive. */
|
||||
bool isRunning() const;
|
||||
|
||||
/** Attempts to read some output from the child process.
|
||||
This will attempt to read up to the given number of bytes of data from the
|
||||
process. It returns the number of bytes that were actually read.
|
||||
*/
|
||||
int readProcessOutput (void* destBuffer, int numBytesToRead);
|
||||
|
||||
/** Blocks until the process has finished, and then returns its complete output
|
||||
as a string.
|
||||
*/
|
||||
String readAllProcessOutput();
|
||||
|
||||
/** Blocks until the process is no longer running. */
|
||||
bool waitForProcessToFinish (int timeoutMs) const;
|
||||
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
class ActiveProcess;
|
||||
friend class ScopedPointer<ActiveProcess>;
|
||||
ScopedPointer<ActiveProcess> activeProcess;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ChildProcess);
|
||||
};
|
||||
|
||||
|
||||
#endif // __JUCE_CHILDPROCESS_JUCEHEADER__
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_cryptography",
|
||||
"name": "JUCE cryptography classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Classes for various basic cryptography functions, including RSA, Blowfish, MD5, SHA, etc.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_data_structures",
|
||||
"name": "JUCE data model helper classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Classes for undo/redo management, and smart data structures.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_events",
|
||||
"name": "JUCE message and event handling classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Classes for running an application's main event loop and sending/receiving messages, timers, etc.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -23,4 +23,4 @@
|
|||
==============================================================================
|
||||
*/
|
||||
|
||||
#include "juce_graphics.cpp"
|
||||
#include "juce_graphics.cpp"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_graphics",
|
||||
"name": "JUCE graphics classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Classes for 2D vector graphics, image loading/saving, font handling, etc.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_gui_basics",
|
||||
"name": "JUCE GUI core classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Basic user-interface components and related classes.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -207,8 +207,7 @@ const KeyPress KeyPress::createFromDescription (const String& desc)
|
|||
{
|
||||
// give up and use the hex code..
|
||||
const int hexCode = desc.fromFirstOccurrenceOf ("#", false, false)
|
||||
.toLowerCase()
|
||||
.retainCharacters ("0123456789abcdef")
|
||||
.retainCharacters ("0123456789abcdefABCDEF")
|
||||
.getHexValue32();
|
||||
|
||||
if (hexCode > 0)
|
||||
|
|
|
|||
|
|
@ -88,10 +88,15 @@ const MarkerList::Marker* MarkerList::getMarker (const int index) const noexcept
|
|||
}
|
||||
|
||||
const MarkerList::Marker* MarkerList::getMarker (const String& name) const noexcept
|
||||
{
|
||||
return getMarkerByName (name);
|
||||
}
|
||||
|
||||
MarkerList::Marker* MarkerList::getMarkerByName (const String& name) const noexcept
|
||||
{
|
||||
for (int i = 0; i < markers.size(); ++i)
|
||||
{
|
||||
const Marker* const m = markers.getUnchecked(i);
|
||||
Marker* const m = markers.getUnchecked(i);
|
||||
|
||||
if (m->name == name)
|
||||
return m;
|
||||
|
|
@ -102,7 +107,7 @@ const MarkerList::Marker* MarkerList::getMarker (const String& name) const noexc
|
|||
|
||||
void MarkerList::setMarker (const String& name, const RelativeCoordinate& position)
|
||||
{
|
||||
Marker* const m = const_cast <Marker*> (getMarker (name));
|
||||
Marker* const m = getMarkerByName (name);
|
||||
|
||||
if (m != nullptr)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -179,6 +179,8 @@ private:
|
|||
OwnedArray<Marker> markers;
|
||||
ListenerList<Listener> listeners;
|
||||
|
||||
Marker* getMarkerByName (const String& name) const noexcept;
|
||||
|
||||
JUCE_LEAK_DETECTOR (MarkerList);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_gui_extra",
|
||||
"name": "JUCE extended GUI classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Miscellaneous GUI classes for specialised tasks.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_opengl",
|
||||
"name": "JUCE OpenGL classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Classes for rendering OpenGL in a JUCE window.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"id": "juce_video",
|
||||
"name": "JUCE video playback and capture classes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.3",
|
||||
"description": "Classes for playing video and capturing camera input.",
|
||||
"website": "http://www.juce.com/juce",
|
||||
"license": "GPL/Commercial",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue