From 383b0c3f1088dce56c7fa8c2eaabdc63ab08d993 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Thu, 29 Apr 2021 00:46:43 +0200 Subject: [PATCH] Remove the cache_time_info option The new time info caching behaviour supersedes this by getting rid of callbacks altogether. --- CHANGELOG.md | 5 +++++ README.md | 10 ---------- src/common/configuration.cpp | 6 ------ src/common/configuration.h | 15 --------------- src/plugin/bridges/common.h | 3 --- 5 files changed, 5 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40338095..d31b0fa6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,11 @@ Versioning](https://semver.org/spec/v2.0.0.html). situations from happening in the future, yabridge now specifically handles most common VST2 functions that don't have a data argument. +### Removed + +- The `cache_time_info` compatibility option has been removed since it's now + obsolete. + ### Fixed - In certain rare circumstances, closing a plugin editor would trigger an X11 diff --git a/README.md b/README.md index d5169f91..4f0a11b3 100644 --- a/README.md +++ b/README.md @@ -292,7 +292,6 @@ plugin._ | Option | Values | Description | | --------------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `cache_time_info` | `{true,false}` | Compatibility option for VST2 plugins that call `audioMasterGetTime()` multiple times during a single processing cycle. With this option subsequent calls during a single audio processing cycle will reuse the value returned by the first call to this function. This is a bug in the plugin, and this option serves as a temporary workaround until the plugin fixes the issue. | | `editor_double_embed` | `{true,false}` | Compatibility option for plugins that rely on the absolute screen coordinates of the window they're embedded in. Since the Wine window gets embedded inside of a window provided by your DAW, these coordinates won't match up and the plugin would end up drawing in the wrong location without this option. Currently the only known plugins that require this option are _PSPaudioware_ plugins with expandable GUIs, such as E27. Defaults to `false`. | | `editor_force_dnd` | `{true,false}` | This option forcefully enables drag-and-drop support in _REAPER_. Because REAPER's FX window supports drag-and-drop itself, dragging a file onto a plugin editor will cause the drop to be intercepted by the FX window. This makes it impossible to drag files onto plugins in REAPER under normal circumstances. Setting this option to `true` will strip drag-and-drop support from the FX window, thus allowing files to be dragged onto the plugin again. Defaults to `false`. | | `editor_xembed` | `{true,false}` | Use Wine's XEmbed implementation instead of yabridge's normal window embedding method. Some plugins will have redrawing issues when using XEmbed and editor resizing won't always work properly with it, but it could be useful in certain setups. You may need to use [this Wine patch](https://github.com/psycha0s/airwave/blob/master/fix-xembed-wine-windows.patch) if you're getting blank editor windows. Defaults to `false`. | @@ -333,9 +332,6 @@ editor_xembed = true ["Chromaphone 3.so"] hide_daw = true -["SWAM Cello 64bit.so"] -cache_time_info = true - ["sforzando VST_x64.so"] editor_force_dnd = true frame_rate = 24 @@ -444,12 +440,6 @@ include: _Bitwig Studio_, text entry will cause the plugin to crash because Chromaphone uses a different text entry method when it detects Bitwig. You can use the `hide_daw` [compatibility option](#compatibility-options) to work around this. -- The VST2 version of **SWAM Cello** has a bug where it asks the host for the - current buffer's time and tempo information for every sample it processes - instead of doing it only once per buffer, resulting in very bad performance. - You can enable the time info cache [compatibility - option](#compatibility-options) to work around this until this is fixed on the - plugin's side. - VST2 plugins like **FabFilter Pro-Q 3** that can share data between different instances of the same plugin plugins have to be hosted within a single process for that functionality to work. See the [plugin groups](#plugin-groups) diff --git a/src/common/configuration.cpp b/src/common/configuration.cpp index 919b1157..8fad4d66 100644 --- a/src/common/configuration.cpp +++ b/src/common/configuration.cpp @@ -84,12 +84,6 @@ Configuration::Configuration(const fs::path& config_path, } else { invalid_options.push_back(key); } - } else if (key == "cache_time_info") { - if (const auto parsed_value = value.as_boolean()) { - cache_time_info = parsed_value->get(); - } else { - invalid_options.push_back(key); - } } else if (key == "editor_double_embed") { if (const auto parsed_value = value.as_boolean()) { editor_double_embed = parsed_value->get(); diff --git a/src/common/configuration.h b/src/common/configuration.h index 5d07bc15..0f58818c 100644 --- a/src/common/configuration.h +++ b/src/common/configuration.h @@ -81,20 +81,6 @@ class Configuration { */ std::optional group; - /** - * If set to `true`, then after an `audioMasterGetTime()` call all - * subsequent calls to that function during a single processing cycle will - * reuse the results from the first call. In theory it would be a bug on the - * host's side if this did _not_ return the same value every time, but since - * yabridge tries to not have any behaviour of its own and since this - * function should only be called at most once every processing cycle this - * option is not enabled by default. An example of a situation where this - * does become necessary is the SWAM Cello plugin, which calls - * `audioMasterGetTime()` for every sample instead of only once. This would - * tank performance without this caching behaviour. - */ - bool cache_time_info = false; - /** * If this is set to `true`, then the plugin editor should be embedded in * yet another window. This would result in an embedding sequence of @@ -201,7 +187,6 @@ class Configuration { s.ext(group, bitsery::ext::StdOptional(), [](S& s, auto& v) { s.text1b(v, 4096); }); - s.value1b(cache_time_info); s.value1b(editor_double_embed); s.value1b(editor_force_dnd); s.value1b(editor_xembed); diff --git a/src/plugin/bridges/common.h b/src/plugin/bridges/common.h index 2c91dc9f..f26f8e1e 100644 --- a/src/plugin/bridges/common.h +++ b/src/plugin/bridges/common.h @@ -175,9 +175,6 @@ class PluginBridge { init_msg << "other options: "; std::vector other_options; - if (config.cache_time_info) { - other_options.push_back("hack: time info cache"); - } if (config.editor_double_embed) { other_options.push_back("editor: double embed"); }