Reword caching to prefetching

Since that makes it much clearer what we're actually doing. With old
`cache_time_info` was actually caching the response, but now we're
querying it before the plugin has even requested the information.
This commit is contained in:
Robbert van der Helm
2021-04-29 01:07:14 +02:00
parent c82eb35243
commit 6f6e6c5b94
5 changed files with 26 additions and 24 deletions
+5 -5
View File
@@ -556,16 +556,16 @@ struct AudioBuffers {
int sample_frames;
/**
* We'll send the current transport information as part of an audio
* processing call. This lets us a void an unnecessary callback (or in some
* cases, more than one) during every processing cycle.
* We'll prefetch the current transport information as part of handling an
* audio processing call. This lets us a void an unnecessary callback (or in
* some cases, more than one) during every processing cycle.
*/
std::optional<VstTimeInfo> current_time_info;
/**
* Some plugins will also ask for the current process level during audio
* processing. To prevent unnecessary expensive callbacks, we'll send this
* information along with the processing call.
* processing. To prevent unnecessary expensive callbacks there, we'll
* prefetch this information as well.
*/
int current_process_level;
+2 -2
View File
@@ -568,8 +568,8 @@ void Vst2PluginBridge::do_process(T** inputs, T** outputs, int sample_frames) {
current_time_info = *returned_time_info;
}
// Some plugisn also ask for the current process level, so we'll cache that
// information as well
// Some plugisn also ask for the current process level, so we'll prefetch
// that information as well
const int current_process_level = static_cast<int>(host_callback_function(
&plugin, audioMasterGetCurrentProcessLevel, 0, 0, nullptr, 0.0));
if (returned_time_info) {
+3 -3
View File
@@ -188,7 +188,7 @@ Vst2Bridge::Vst2Bridge(MainContext& main_context,
[&](AudioBuffers request, std::vector<uint8_t>& buffer) {
// Since the value cannot change during this processing cycle,
// we'll send the current transport information as part of the
// request so we cache it to avoid unnecessary callbacks from
// request so we prefetch it to avoid unnecessary callbacks from
// the audio thread
std::optional<decltype(time_info_cache)::Guard>
time_info_cache_guard =
@@ -197,8 +197,8 @@ Vst2Bridge::Vst2Bridge(MainContext& main_context,
*request.current_time_info))
: std::nullopt;
// We'll also cache the process level, since some plugins will
// ask for this during every processing cycle
// We'll also prefetch the process level, since some plugins
// will ask for this during every processing cycle
decltype(process_level_cache)::Guard process_level_cache_guard =
process_level_cache.set(request.current_process_level);
+3 -3
View File
@@ -114,8 +114,8 @@ class Vst2Bridge : public HostBridge {
* We'll store the last transport information obtained from the host as a
* result of `audioMasterGetTime()` here so we can return a pointer to it if
* the request was successful. To prevent unnecessary back and forth
* communication, we'll send a copy of the current transport information to
* the plugin as part of the audio processing call.
* communication, we'll prefetch the current transport information in the
* plugin as part of the audio processing call.
*
* @see cached_time_info
*/
@@ -131,7 +131,7 @@ class Vst2Bridge : public HostBridge {
/**
* Some plugins will also ask for the current process level during audio
* processing, so we'll also cache that to prevent expensive callbacks.
* processing, so we'll also prefetch that to prevent expensive callbacks.
*/
ScopedValueCache<int> process_level_cache;