diff --git a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt index e55cacd0f0..b76bc1b94b 100644 --- a/examples/DemoRunner/Builds/Android/app/CMakeLists.txt +++ b/examples/DemoRunner/Builds/Android/app/CMakeLists.txt @@ -1007,6 +1007,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_core/containers/juce_SparseSet.h" "../../../../../modules/juce_core/containers/juce_Variant.cpp" "../../../../../modules/juce_core/containers/juce_Variant.h" + "../../../../../modules/juce_core/detail/juce_CallbackListenerList.h" "../../../../../modules/juce_core/files/juce_AndroidDocument.h" "../../../../../modules/juce_core/files/juce_common_MimeTypes.cpp" "../../../../../modules/juce_core/files/juce_common_MimeTypes.h" @@ -1383,6 +1384,8 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_events/broadcasters/juce_ChangeListener.h" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.cpp" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.h" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.cpp" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.h" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h" "../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp" @@ -1420,6 +1423,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_events/native/juce_WinRTWrapper_windows.h" "../../../../../modules/juce_events/timers/juce_MultiTimer.cpp" "../../../../../modules/juce_events/timers/juce_MultiTimer.h" + "../../../../../modules/juce_events/timers/juce_TimedCallback.h" "../../../../../modules/juce_events/timers/juce_Timer.cpp" "../../../../../modules/juce_events/timers/juce_Timer.h" "../../../../../modules/juce_events/juce_events.cpp" @@ -3099,6 +3103,7 @@ set_source_files_properties( "../../../../../modules/juce_core/containers/juce_SparseSet.h" "../../../../../modules/juce_core/containers/juce_Variant.cpp" "../../../../../modules/juce_core/containers/juce_Variant.h" + "../../../../../modules/juce_core/detail/juce_CallbackListenerList.h" "../../../../../modules/juce_core/files/juce_AndroidDocument.h" "../../../../../modules/juce_core/files/juce_common_MimeTypes.cpp" "../../../../../modules/juce_core/files/juce_common_MimeTypes.h" @@ -3475,6 +3480,8 @@ set_source_files_properties( "../../../../../modules/juce_events/broadcasters/juce_ChangeListener.h" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.cpp" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.h" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.cpp" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.h" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h" "../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp" @@ -3512,6 +3519,7 @@ set_source_files_properties( "../../../../../modules/juce_events/native/juce_WinRTWrapper_windows.h" "../../../../../modules/juce_events/timers/juce_MultiTimer.cpp" "../../../../../modules/juce_events/timers/juce_MultiTimer.h" + "../../../../../modules/juce_events/timers/juce_TimedCallback.h" "../../../../../modules/juce_events/timers/juce_Timer.cpp" "../../../../../modules/juce_events/timers/juce_Timer.h" "../../../../../modules/juce_events/juce_events.cpp" diff --git a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj index b4fc69c05c..c823578a85 100644 --- a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj @@ -1781,6 +1781,9 @@ true + + true + true @@ -3360,6 +3363,7 @@ + @@ -3564,6 +3568,7 @@ + @@ -3585,6 +3590,7 @@ + diff --git a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters index 4e1b834288..b652c98be6 100644 --- a/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2017/DemoRunner_App.vcxproj.filters @@ -413,6 +413,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -2434,6 +2437,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5217,6 +5223,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -5829,6 +5838,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5892,6 +5904,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj index ab9743eaa0..edc139f6d3 100644 --- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj @@ -1781,6 +1781,9 @@ true + + true + true @@ -3360,6 +3363,7 @@ + @@ -3564,6 +3568,7 @@ + @@ -3585,6 +3590,7 @@ + diff --git a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters index d9e7f25579..2ebfa97940 100644 --- a/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2019/DemoRunner_App.vcxproj.filters @@ -413,6 +413,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -2434,6 +2437,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5217,6 +5223,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -5829,6 +5838,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5892,6 +5904,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj index 3c8413e678..df3f9fcf6a 100644 --- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj +++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj @@ -1781,6 +1781,9 @@ true + + true + true @@ -3360,6 +3363,7 @@ + @@ -3564,6 +3568,7 @@ + @@ -3585,6 +3590,7 @@ + diff --git a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters index 8569a5e2d8..aed569e0e8 100644 --- a/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters +++ b/examples/DemoRunner/Builds/VisualStudio2022/DemoRunner_App.vcxproj.filters @@ -413,6 +413,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -2434,6 +2437,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5217,6 +5223,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -5829,6 +5838,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5892,6 +5904,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt index 45e4dcf95c..7a72fb9f61 100644 --- a/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt +++ b/extras/AudioPerformanceTest/Builds/Android/app/CMakeLists.txt @@ -883,6 +883,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_core/containers/juce_SparseSet.h" "../../../../../modules/juce_core/containers/juce_Variant.cpp" "../../../../../modules/juce_core/containers/juce_Variant.h" + "../../../../../modules/juce_core/detail/juce_CallbackListenerList.h" "../../../../../modules/juce_core/files/juce_AndroidDocument.h" "../../../../../modules/juce_core/files/juce_common_MimeTypes.cpp" "../../../../../modules/juce_core/files/juce_common_MimeTypes.h" @@ -1162,6 +1163,8 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_events/broadcasters/juce_ChangeListener.h" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.cpp" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.h" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.cpp" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.h" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h" "../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp" @@ -1199,6 +1202,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_events/native/juce_WinRTWrapper_windows.h" "../../../../../modules/juce_events/timers/juce_MultiTimer.cpp" "../../../../../modules/juce_events/timers/juce_MultiTimer.h" + "../../../../../modules/juce_events/timers/juce_TimedCallback.h" "../../../../../modules/juce_events/timers/juce_Timer.cpp" "../../../../../modules/juce_events/timers/juce_Timer.h" "../../../../../modules/juce_events/juce_events.cpp" @@ -2675,6 +2679,7 @@ set_source_files_properties( "../../../../../modules/juce_core/containers/juce_SparseSet.h" "../../../../../modules/juce_core/containers/juce_Variant.cpp" "../../../../../modules/juce_core/containers/juce_Variant.h" + "../../../../../modules/juce_core/detail/juce_CallbackListenerList.h" "../../../../../modules/juce_core/files/juce_AndroidDocument.h" "../../../../../modules/juce_core/files/juce_common_MimeTypes.cpp" "../../../../../modules/juce_core/files/juce_common_MimeTypes.h" @@ -2954,6 +2959,8 @@ set_source_files_properties( "../../../../../modules/juce_events/broadcasters/juce_ChangeListener.h" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.cpp" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.h" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.cpp" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.h" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h" "../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp" @@ -2991,6 +2998,7 @@ set_source_files_properties( "../../../../../modules/juce_events/native/juce_WinRTWrapper_windows.h" "../../../../../modules/juce_events/timers/juce_MultiTimer.cpp" "../../../../../modules/juce_events/timers/juce_MultiTimer.h" + "../../../../../modules/juce_events/timers/juce_TimedCallback.h" "../../../../../modules/juce_events/timers/juce_Timer.cpp" "../../../../../modules/juce_events/timers/juce_Timer.h" "../../../../../modules/juce_events/juce_events.cpp" diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj index 8c9ad5f4cf..888360468b 100644 --- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj +++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj @@ -1495,6 +1495,9 @@ true + + true + true @@ -2916,6 +2919,7 @@ + @@ -3067,6 +3071,7 @@ + @@ -3088,6 +3093,7 @@ + diff --git a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters index c04c73f1e2..7189235092 100644 --- a/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters +++ b/extras/AudioPerformanceTest/Builds/VisualStudio2022/AudioPerformanceTest_App.vcxproj.filters @@ -368,6 +368,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -2011,6 +2014,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -4497,6 +4503,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -4950,6 +4959,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5013,6 +5025,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt index b9ca3a2f42..91508a03ab 100644 --- a/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt +++ b/extras/AudioPluginHost/Builds/Android/app/CMakeLists.txt @@ -916,6 +916,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_core/containers/juce_SparseSet.h" "../../../../../modules/juce_core/containers/juce_Variant.cpp" "../../../../../modules/juce_core/containers/juce_Variant.h" + "../../../../../modules/juce_core/detail/juce_CallbackListenerList.h" "../../../../../modules/juce_core/files/juce_AndroidDocument.h" "../../../../../modules/juce_core/files/juce_common_MimeTypes.cpp" "../../../../../modules/juce_core/files/juce_common_MimeTypes.h" @@ -1292,6 +1293,8 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_events/broadcasters/juce_ChangeListener.h" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.cpp" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.h" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.cpp" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.h" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h" "../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp" @@ -1329,6 +1332,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_events/native/juce_WinRTWrapper_windows.h" "../../../../../modules/juce_events/timers/juce_MultiTimer.cpp" "../../../../../modules/juce_events/timers/juce_MultiTimer.h" + "../../../../../modules/juce_events/timers/juce_TimedCallback.h" "../../../../../modules/juce_events/timers/juce_Timer.cpp" "../../../../../modules/juce_events/timers/juce_Timer.h" "../../../../../modules/juce_events/juce_events.cpp" @@ -2861,6 +2865,7 @@ set_source_files_properties( "../../../../../modules/juce_core/containers/juce_SparseSet.h" "../../../../../modules/juce_core/containers/juce_Variant.cpp" "../../../../../modules/juce_core/containers/juce_Variant.h" + "../../../../../modules/juce_core/detail/juce_CallbackListenerList.h" "../../../../../modules/juce_core/files/juce_AndroidDocument.h" "../../../../../modules/juce_core/files/juce_common_MimeTypes.cpp" "../../../../../modules/juce_core/files/juce_common_MimeTypes.h" @@ -3237,6 +3242,8 @@ set_source_files_properties( "../../../../../modules/juce_events/broadcasters/juce_ChangeListener.h" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.cpp" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.h" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.cpp" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.h" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h" "../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp" @@ -3274,6 +3281,7 @@ set_source_files_properties( "../../../../../modules/juce_events/native/juce_WinRTWrapper_windows.h" "../../../../../modules/juce_events/timers/juce_MultiTimer.cpp" "../../../../../modules/juce_events/timers/juce_MultiTimer.h" + "../../../../../modules/juce_events/timers/juce_TimedCallback.h" "../../../../../modules/juce_events/timers/juce_Timer.cpp" "../../../../../modules/juce_events/timers/juce_Timer.h" "../../../../../modules/juce_events/juce_events.cpp" diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj index df76c0ac6b..69df81242f 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj @@ -1629,6 +1629,9 @@ true + + true + true @@ -3096,6 +3099,7 @@ + @@ -3300,6 +3304,7 @@ + @@ -3321,6 +3326,7 @@ + diff --git a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters index 62e0f0e73c..8ed1c7a7ad 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2017/AudioPluginHost_App.vcxproj.filters @@ -377,6 +377,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -2218,6 +2221,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -4773,6 +4779,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -5385,6 +5394,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5448,6 +5460,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj index 83cbffa7ee..9f06930a86 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj @@ -1629,6 +1629,9 @@ true + + true + true @@ -3096,6 +3099,7 @@ + @@ -3300,6 +3304,7 @@ + @@ -3321,6 +3326,7 @@ + diff --git a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters index 89152c40d4..85b5efc647 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2019/AudioPluginHost_App.vcxproj.filters @@ -377,6 +377,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -2218,6 +2221,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -4773,6 +4779,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -5385,6 +5394,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5448,6 +5460,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj index 7a0679c4c4..122f7efc99 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj +++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj @@ -1629,6 +1629,9 @@ true + + true + true @@ -3096,6 +3099,7 @@ + @@ -3300,6 +3304,7 @@ + @@ -3321,6 +3326,7 @@ + diff --git a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters index 1f7dc41254..ef1344ea23 100644 --- a/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters +++ b/extras/AudioPluginHost/Builds/VisualStudio2022/AudioPluginHost_App.vcxproj.filters @@ -377,6 +377,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -2218,6 +2221,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -4773,6 +4779,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -5385,6 +5394,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5448,6 +5460,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj index b56adc8f62..979fd5abe8 100644 --- a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj +++ b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj @@ -523,6 +523,7 @@ + diff --git a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj.filters b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj.filters index 112fb4f767..b3b7616180 100644 --- a/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj.filters +++ b/extras/BinaryBuilder/Builds/VisualStudio2022/BinaryBuilder_ConsoleApp.vcxproj.filters @@ -11,6 +11,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -531,6 +534,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files diff --git a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt index 75ae1200e3..d75c548634 100644 --- a/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt +++ b/extras/NetworkGraphicsDemo/Builds/Android/app/CMakeLists.txt @@ -887,6 +887,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_core/containers/juce_SparseSet.h" "../../../../../modules/juce_core/containers/juce_Variant.cpp" "../../../../../modules/juce_core/containers/juce_Variant.h" + "../../../../../modules/juce_core/detail/juce_CallbackListenerList.h" "../../../../../modules/juce_core/files/juce_AndroidDocument.h" "../../../../../modules/juce_core/files/juce_common_MimeTypes.cpp" "../../../../../modules/juce_core/files/juce_common_MimeTypes.h" @@ -1181,6 +1182,8 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_events/broadcasters/juce_ChangeListener.h" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.cpp" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.h" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.cpp" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.h" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h" "../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp" @@ -1218,6 +1221,7 @@ add_library( ${BINARY_NAME} "../../../../../modules/juce_events/native/juce_WinRTWrapper_windows.h" "../../../../../modules/juce_events/timers/juce_MultiTimer.cpp" "../../../../../modules/juce_events/timers/juce_MultiTimer.h" + "../../../../../modules/juce_events/timers/juce_TimedCallback.h" "../../../../../modules/juce_events/timers/juce_Timer.cpp" "../../../../../modules/juce_events/timers/juce_Timer.h" "../../../../../modules/juce_events/juce_events.cpp" @@ -2759,6 +2763,7 @@ set_source_files_properties( "../../../../../modules/juce_core/containers/juce_SparseSet.h" "../../../../../modules/juce_core/containers/juce_Variant.cpp" "../../../../../modules/juce_core/containers/juce_Variant.h" + "../../../../../modules/juce_core/detail/juce_CallbackListenerList.h" "../../../../../modules/juce_core/files/juce_AndroidDocument.h" "../../../../../modules/juce_core/files/juce_common_MimeTypes.cpp" "../../../../../modules/juce_core/files/juce_common_MimeTypes.h" @@ -3053,6 +3058,8 @@ set_source_files_properties( "../../../../../modules/juce_events/broadcasters/juce_ChangeListener.h" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.cpp" "../../../../../modules/juce_events/broadcasters/juce_LockingAsyncUpdater.h" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.cpp" + "../../../../../modules/juce_events/interprocess/juce_ChildProcessManager.h" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.cpp" "../../../../../modules/juce_events/interprocess/juce_ConnectedChildProcess.h" "../../../../../modules/juce_events/interprocess/juce_InterprocessConnection.cpp" @@ -3090,6 +3097,7 @@ set_source_files_properties( "../../../../../modules/juce_events/native/juce_WinRTWrapper_windows.h" "../../../../../modules/juce_events/timers/juce_MultiTimer.cpp" "../../../../../modules/juce_events/timers/juce_MultiTimer.h" + "../../../../../modules/juce_events/timers/juce_TimedCallback.h" "../../../../../modules/juce_events/timers/juce_Timer.cpp" "../../../../../modules/juce_events/timers/juce_Timer.h" "../../../../../modules/juce_events/juce_events.cpp" diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj index df7198a8d7..f620329254 100644 --- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj +++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj @@ -1516,6 +1516,9 @@ true + + true + true @@ -3007,6 +3010,7 @@ + @@ -3165,6 +3169,7 @@ + @@ -3186,6 +3191,7 @@ + diff --git a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters index dbda31369a..100c39898a 100644 --- a/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters +++ b/extras/NetworkGraphicsDemo/Builds/VisualStudio2022/NetworkGraphicsDemo_App.vcxproj.filters @@ -368,6 +368,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -2065,6 +2068,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -4638,6 +4644,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -5112,6 +5121,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5175,6 +5187,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj index b8a1c92e03..c720c388fe 100644 --- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj @@ -698,6 +698,9 @@ true + + true + true @@ -1824,6 +1827,7 @@ + @@ -1982,6 +1986,7 @@ + @@ -2003,6 +2008,7 @@ + diff --git a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters index 1f863a4e4d..b2fad07589 100644 --- a/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2017/Projucer_App.vcxproj.filters @@ -92,6 +92,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -1009,6 +1012,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -2616,6 +2622,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -3090,6 +3099,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -3153,6 +3165,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj index c1ce605223..4fd4266322 100644 --- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj @@ -698,6 +698,9 @@ true + + true + true @@ -1824,6 +1827,7 @@ + @@ -1982,6 +1986,7 @@ + @@ -2003,6 +2008,7 @@ + diff --git a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters index a85fab358a..77c915347c 100644 --- a/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2019/Projucer_App.vcxproj.filters @@ -92,6 +92,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -1009,6 +1012,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -2616,6 +2622,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -3090,6 +3099,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -3153,6 +3165,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj index e9946af14d..0b683eb37c 100644 --- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj +++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj @@ -698,6 +698,9 @@ true + + true + true @@ -1824,6 +1827,7 @@ + @@ -1982,6 +1986,7 @@ + @@ -2003,6 +2008,7 @@ + diff --git a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters index 80a7ccab90..ec5e376047 100644 --- a/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters +++ b/extras/Projucer/Builds/VisualStudio2022/Projucer_App.vcxproj.filters @@ -92,6 +92,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -1009,6 +1012,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -2616,6 +2622,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -3090,6 +3099,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -3153,6 +3165,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj index 2fce56cebf..7864e32b19 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj @@ -1637,6 +1637,9 @@ true + + true + true @@ -3189,6 +3192,7 @@ + @@ -3393,6 +3397,7 @@ + @@ -3414,6 +3419,7 @@ + diff --git a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters index d1ef796ce5..dbd4de241f 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2017/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -377,6 +377,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -2239,6 +2242,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -4884,6 +4890,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -5496,6 +5505,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5559,6 +5571,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj index 9ccce5d41d..230ed2043e 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj @@ -1637,6 +1637,9 @@ true + + true + true @@ -3189,6 +3192,7 @@ + @@ -3393,6 +3397,7 @@ + @@ -3414,6 +3419,7 @@ + diff --git a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters index 2943d2826e..8c47c01018 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2019/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -377,6 +377,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -2239,6 +2242,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -4884,6 +4890,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -5496,6 +5505,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5559,6 +5571,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj index a1b0f08e88..9d8cc1fd32 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj +++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj @@ -1637,6 +1637,9 @@ true + + true + true @@ -3189,6 +3192,7 @@ + @@ -3393,6 +3397,7 @@ + @@ -3414,6 +3419,7 @@ + diff --git a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters index 3bc08b8856..1b933c237b 100644 --- a/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters +++ b/extras/UnitTestRunner/Builds/VisualStudio2022/UnitTestRunner_ConsoleApp.vcxproj.filters @@ -377,6 +377,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -2239,6 +2242,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -4884,6 +4890,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -5496,6 +5505,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5559,6 +5571,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj index 08f3d609c6..3f0dafa8c3 100644 --- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj +++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj @@ -1515,6 +1515,9 @@ true + + true + true @@ -2983,6 +2986,7 @@ + @@ -3141,6 +3145,7 @@ + @@ -3162,6 +3167,7 @@ + diff --git a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters index f08337d711..0a7fc35d2f 100644 --- a/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters +++ b/extras/WindowsDLL/Builds/VisualStudio2022/WindowsDLL_StaticLibrary.vcxproj.filters @@ -362,6 +362,9 @@ {42F7BE9D-3C8A-AE26-289B-8F355C068036} + + {4C5ED3D6-28D2-8BFF-F891-96201A9DE159} + {7868764A-6572-381A-906C-9C26792A4C29} @@ -2062,6 +2065,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -4605,6 +4611,9 @@ JUCE Modules\juce_core\containers + + JUCE Modules\juce_core\detail + JUCE Modules\juce_core\files @@ -5079,6 +5088,9 @@ JUCE Modules\juce_events\broadcasters + + JUCE Modules\juce_events\interprocess + JUCE Modules\juce_events\interprocess @@ -5142,6 +5154,9 @@ JUCE Modules\juce_events\timers + + JUCE Modules\juce_events\timers + JUCE Modules\juce_events\timers diff --git a/modules/juce_core/detail/juce_CallbackListenerList.h b/modules/juce_core/detail/juce_CallbackListenerList.h new file mode 100644 index 0000000000..cac43a1247 --- /dev/null +++ b/modules/juce_core/detail/juce_CallbackListenerList.h @@ -0,0 +1,69 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +namespace juce::detail +{ + +template +constexpr bool isValueOrLvalueReferenceToConst() +{ + return (( (! std::is_reference_v) + || (std::is_lvalue_reference_v && std::is_const_v>)) && ...); +} + +template +class CallbackListenerList +{ +public: + static_assert (isValueOrLvalueReferenceToConst(), + "CallbackListenerList can only forward values or const lvalue references"); + + using Callback = std::function; + + ErasedScopeGuard addListener (Callback callback) + { + jassert (callback != nullptr); + + const auto it = callbacks.insert (callbacks.end(), std::move (callback)); + listeners.add (&*it); + + return ErasedScopeGuard { [this, it] + { + listeners.remove (&*it); + callbacks.erase (it); + } }; + } + + void call (Args... args) + { + listeners.call ([&] (auto& l) { l (std::forward (args)...); }); + } + +private: + std::list callbacks; + ListenerList listeners; +}; + +} // namespace juce::detail diff --git a/modules/juce_core/juce_core.h b/modules/juce_core/juce_core.h index 4ed2698dac..c99262e19f 100644 --- a/modules/juce_core/juce_core.h +++ b/modules/juce_core/juce_core.h @@ -354,6 +354,8 @@ JUCE_END_IGNORE_WARNINGS_MSVC #include "files/juce_AndroidDocument.h" #include "streams/juce_AndroidDocumentInputSource.h" +#include "detail/juce_CallbackListenerList.h" + #if JUCE_CORE_INCLUDE_OBJC_HELPERS && (JUCE_MAC || JUCE_IOS) #include "native/juce_CFHelpers_mac.h" #include "native/juce_ObjCHelpers_mac.h" diff --git a/modules/juce_events/interprocess/juce_ChildProcessManager.cpp b/modules/juce_events/interprocess/juce_ChildProcessManager.cpp new file mode 100644 index 0000000000..24a600c9b1 --- /dev/null +++ b/modules/juce_events/interprocess/juce_ChildProcessManager.cpp @@ -0,0 +1,52 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +namespace juce +{ + +void ChildProcessManager::checkProcesses() +{ + for (auto it = processes.begin(); it != processes.end();) + { + auto processPtr = *it; + + if (! processPtr->isRunning()) + { + listeners.call (processPtr.get()); + it = processes.erase (it); + } + else + { + ++it; + } + } + + if (processes.empty()) + timer.stopTimer(); +} + +JUCE_IMPLEMENT_SINGLETON (ChildProcessManager) + +} // namespace juce diff --git a/modules/juce_events/interprocess/juce_ChildProcessManager.h b/modules/juce_events/interprocess/juce_ChildProcessManager.h new file mode 100644 index 0000000000..a154b0b565 --- /dev/null +++ b/modules/juce_events/interprocess/juce_ChildProcessManager.h @@ -0,0 +1,104 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +namespace juce +{ + /** Manages a set of ChildProcesses and periodically checks their return value. Upon completion + it calls listeners added with addChildProcessExitedListener(). + + This class is mostly aimed for usage on Linux, where terminated child processes are only + cleaned up if their return code is read after termination. In order to ensure this one needs + to call ChildProcess::isFinished() until it returns false or + ChildProcess::waitForProcessToFinish() until it returns true. + + This class will keep querying the return code on a Timer thread until the process + terminates. This can be handy if one wants to start and stop multiple ChildProcesses on + Linux that could take a long time to complete. + + Since this class uses a Timer to check subprocess status, it's generally only safe to + access the returned ChildProcesses from the message thread. + + @see ChildProcessManagerSingleton + + @tags{Events} + */ + class JUCE_API ChildProcessManager final : private DeletedAtShutdown + { + public: + #ifndef DOXYGEN + JUCE_DECLARE_SINGLETON_SINGLETHREADED_MINIMAL (ChildProcessManager) + #endif + + /** Creates a new ChildProcess and starts it with the provided arguments. + + The arguments are the same as the overloads to ChildProcess::start(). + + The manager will keep the returned ChildProcess object alive until it terminates and its + return value has been queried. Calling ChildProcess::kill() on the returned object will + eventually cause its removal from the ChildProcessManager after it terminates. + */ + template + std::shared_ptr createAndStartManagedChildProcess (Args&&... args) + { + auto p = std::make_shared(); + + if (! p->start (std::forward (args)...)) + return nullptr; + + processes.insert (p); + timer.startTimer (1000); + + return p; + } + + /** Registers a callback function that is called for every ChildProcess that terminated. + + This registration is deleted when the returned ErasedScopedGuard is deleted. + */ + auto addChildProcessExitedListener (std::function listener) + { + return listeners.addListener (std::move (listener)); + } + + /** Returns true if the ChildProcessManager contains any running ChildProcesses that it's + monitoring. + */ + auto hasRunningProcess() const + { + return timer.isTimerRunning(); + } + + private: + ChildProcessManager() = default; + ~ChildProcessManager() override { clearSingletonInstance(); } + + void checkProcesses(); + + std::set> processes; + detail::CallbackListenerList listeners; + TimedCallback timer { [this] { checkProcesses(); } }; + }; + +} // namespace juce diff --git a/modules/juce_events/juce_events.cpp b/modules/juce_events/juce_events.cpp index 67d555a942..3524bfaeb5 100644 --- a/modules/juce_events/juce_events.cpp +++ b/modules/juce_events/juce_events.cpp @@ -64,6 +64,7 @@ #include "broadcasters/juce_ChangeBroadcaster.cpp" #include "timers/juce_MultiTimer.cpp" #include "timers/juce_Timer.cpp" +#include "interprocess/juce_ChildProcessManager.cpp" #include "interprocess/juce_InterprocessConnection.cpp" #include "interprocess/juce_InterprocessConnectionServer.cpp" #include "interprocess/juce_ConnectedChildProcess.cpp" diff --git a/modules/juce_events/juce_events.h b/modules/juce_events/juce_events.h index a9f0f22663..590506423f 100644 --- a/modules/juce_events/juce_events.h +++ b/modules/juce_events/juce_events.h @@ -86,7 +86,9 @@ #include "broadcasters/juce_ChangeListener.h" #include "broadcasters/juce_ChangeBroadcaster.h" #include "timers/juce_Timer.h" +#include "timers/juce_TimedCallback.h" #include "timers/juce_MultiTimer.h" +#include "interprocess/juce_ChildProcessManager.h" #include "interprocess/juce_InterprocessConnection.h" #include "interprocess/juce_InterprocessConnectionServer.h" #include "interprocess/juce_ConnectedChildProcess.h" diff --git a/modules/juce_events/timers/juce_TimedCallback.h b/modules/juce_events/timers/juce_TimedCallback.h new file mode 100644 index 0000000000..ba1f5507a8 --- /dev/null +++ b/modules/juce_events/timers/juce_TimedCallback.h @@ -0,0 +1,63 @@ +/* + ============================================================================== + + This file is part of the JUCE library. + Copyright (c) 2022 - Raw Material Software Limited + + JUCE is an open source library subject to commercial or open-source + licensing. + + By using JUCE, you agree to the terms of both the JUCE 7 End-User License + Agreement and JUCE Privacy Policy. + + End User License Agreement: www.juce.com/juce-7-licence + Privacy Policy: www.juce.com/juce-privacy-policy + + Or: You may also use this code under the terms of the GPL v3 (see + www.gnu.org/licenses). + + JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER + EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE + DISCLAIMED. + + ============================================================================== +*/ + +namespace juce +{ + +/** Utility class wrapping a single non-null callback called by a Timer. + + You can use the usual Timer functions to start and stop the TimedCallback. Deleting the + TimedCallback will automatically stop the underlying Timer. + + With this class you can use the Timer facility without inheritance. + + @see Timer + @tags{Events} +*/ +class TimedCallback final : private Timer +{ +public: + /** Constructor. The passed in callback must be non-null. */ + explicit TimedCallback (std::function callbackIn) + : callback (std::move (callbackIn)) + { + jassert (callback); + } + + /** Destructor. */ + ~TimedCallback() noexcept override { stopTimer(); } + + using Timer::startTimer; + using Timer::startTimerHz; + using Timer::stopTimer; + using Timer::isTimerRunning; + +private: + void timerCallback() override { callback(); } + + std::function callback; +}; + +} // namespace juce