1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

HighResolutionTimer: Complete rewrite

- added unit tests
- best performance timers used for each platform
- fixed an issue in which timer callbacks could drift
This commit is contained in:
Anthony Nicholls 2023-06-05 16:32:25 +01:00
parent d361eaa9b3
commit 587e07007d
50 changed files with 1679 additions and 75 deletions

View file

@ -1057,10 +1057,12 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/native/juce_CFHelpers_mac.h"
"../../../../../modules/juce_core/native/juce_CommonFile_linux.cpp"
"../../../../../modules/juce_core/native/juce_ComSmartPtr_windows.h"
"../../../../../modules/juce_core/native/juce_FileDescriptor_linux.cpp"
"../../../../../modules/juce_core/native/juce_Files_android.cpp"
"../../../../../modules/juce_core/native/juce_Files_linux.cpp"
"../../../../../modules/juce_core/native/juce_Files_mac.mm"
"../../../../../modules/juce_core/native/juce_Files_windows.cpp"
"../../../../../modules/juce_core/native/juce_HighResolutionTimerThread.h"
"../../../../../modules/juce_core/native/juce_IPAddress_posix.h"
"../../../../../modules/juce_core/native/juce_JNIHelpers_android.cpp"
"../../../../../modules/juce_core/native/juce_JNIHelpers_android.h"
@ -1072,6 +1074,11 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_core/native/juce_Network_mac.mm"
"../../../../../modules/juce_core/native/juce_Network_windows.cpp"
"../../../../../modules/juce_core/native/juce_ObjCHelpers_mac.h"
"../../../../../modules/juce_core/native/juce_PlatformTimer_linux.cpp"
"../../../../../modules/juce_core/native/juce_PlatformTimer_mac.mm"
"../../../../../modules/juce_core/native/juce_PlatformTimer_wasm.cpp"
"../../../../../modules/juce_core/native/juce_PlatformTimer_windows.cpp"
"../../../../../modules/juce_core/native/juce_PlatformTimerListener.h"
"../../../../../modules/juce_core/native/juce_Registry_windows.cpp"
"../../../../../modules/juce_core/native/juce_RuntimePermissions_android.cpp"
"../../../../../modules/juce_core/native/juce_SharedCode_intel.h"
@ -3109,10 +3116,12 @@ set_source_files_properties(
"../../../../../modules/juce_core/native/juce_CFHelpers_mac.h"
"../../../../../modules/juce_core/native/juce_CommonFile_linux.cpp"
"../../../../../modules/juce_core/native/juce_ComSmartPtr_windows.h"
"../../../../../modules/juce_core/native/juce_FileDescriptor_linux.cpp"
"../../../../../modules/juce_core/native/juce_Files_android.cpp"
"../../../../../modules/juce_core/native/juce_Files_linux.cpp"
"../../../../../modules/juce_core/native/juce_Files_mac.mm"
"../../../../../modules/juce_core/native/juce_Files_windows.cpp"
"../../../../../modules/juce_core/native/juce_HighResolutionTimerThread.h"
"../../../../../modules/juce_core/native/juce_IPAddress_posix.h"
"../../../../../modules/juce_core/native/juce_JNIHelpers_android.cpp"
"../../../../../modules/juce_core/native/juce_JNIHelpers_android.h"
@ -3124,6 +3133,11 @@ set_source_files_properties(
"../../../../../modules/juce_core/native/juce_Network_mac.mm"
"../../../../../modules/juce_core/native/juce_Network_windows.cpp"
"../../../../../modules/juce_core/native/juce_ObjCHelpers_mac.h"
"../../../../../modules/juce_core/native/juce_PlatformTimer_linux.cpp"
"../../../../../modules/juce_core/native/juce_PlatformTimer_mac.mm"
"../../../../../modules/juce_core/native/juce_PlatformTimer_wasm.cpp"
"../../../../../modules/juce_core/native/juce_PlatformTimer_windows.cpp"
"../../../../../modules/juce_core/native/juce_PlatformTimerListener.h"
"../../../../../modules/juce_core/native/juce_Registry_windows.cpp"
"../../../../../modules/juce_core/native/juce_RuntimePermissions_android.cpp"
"../../../../../modules/juce_core/native/juce_SharedCode_intel.h"

View file

@ -1343,6 +1343,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_CommonFile_linux.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_FileDescriptor_linux.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Files_android.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -1373,6 +1376,15 @@
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Network_windows.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_linux.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_wasm.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_windows.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Registry_windows.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3339,9 +3351,11 @@
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_BasicNativeHeaders.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_CFHelpers_mac.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ComSmartPtr_windows.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_HighResolutionTimerThread.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_IPAddress_posix.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_JNIHelpers_android.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ObjCHelpers_mac.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimerListener.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_SharedCode_intel.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_SharedCode_posix.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ThreadPriorities_native.h"/>

View file

@ -1957,6 +1957,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_CommonFile_linux.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_FileDescriptor_linux.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Files_android.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
@ -1993,6 +1996,18 @@
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Network_windows.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_linux.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_mac.mm">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_wasm.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_windows.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Registry_windows.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
@ -5262,6 +5277,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ComSmartPtr_windows.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_HighResolutionTimerThread.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_IPAddress_posix.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
@ -5271,6 +5289,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ObjCHelpers_mac.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimerListener.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_SharedCode_intel.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>

View file

@ -1343,6 +1343,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_CommonFile_linux.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_FileDescriptor_linux.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Files_android.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -1373,6 +1376,15 @@
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Network_windows.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_linux.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_wasm.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_windows.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Registry_windows.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3339,9 +3351,11 @@
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_BasicNativeHeaders.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_CFHelpers_mac.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ComSmartPtr_windows.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_HighResolutionTimerThread.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_IPAddress_posix.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_JNIHelpers_android.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ObjCHelpers_mac.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimerListener.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_SharedCode_intel.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_SharedCode_posix.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ThreadPriorities_native.h"/>

View file

@ -1957,6 +1957,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_CommonFile_linux.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_FileDescriptor_linux.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Files_android.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
@ -1993,6 +1996,18 @@
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Network_windows.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_linux.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_mac.mm">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_wasm.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_windows.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Registry_windows.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
@ -5262,6 +5277,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ComSmartPtr_windows.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_HighResolutionTimerThread.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_IPAddress_posix.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
@ -5271,6 +5289,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ObjCHelpers_mac.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimerListener.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_SharedCode_intel.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>

View file

@ -1343,6 +1343,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_CommonFile_linux.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_FileDescriptor_linux.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Files_android.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -1373,6 +1376,15 @@
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Network_windows.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_linux.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_wasm.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_windows.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Registry_windows.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3339,9 +3351,11 @@
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_BasicNativeHeaders.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_CFHelpers_mac.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ComSmartPtr_windows.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_HighResolutionTimerThread.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_IPAddress_posix.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_JNIHelpers_android.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ObjCHelpers_mac.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimerListener.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_SharedCode_intel.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_SharedCode_posix.h"/>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ThreadPriorities_native.h"/>

View file

@ -1957,6 +1957,9 @@
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_CommonFile_linux.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_FileDescriptor_linux.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Files_android.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
@ -1993,6 +1996,18 @@
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Network_windows.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_linux.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_mac.mm">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_wasm.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimer_windows.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_core\native\juce_Registry_windows.cpp">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClCompile>
@ -5262,6 +5277,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ComSmartPtr_windows.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_HighResolutionTimerThread.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_IPAddress_posix.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
@ -5271,6 +5289,9 @@
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_ObjCHelpers_mac.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_PlatformTimerListener.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_core\native\juce_SharedCode_intel.h">
<Filter>JUCE Modules\juce_core\native</Filter>
</ClInclude>