Add option to work around bugs in REAPER/Renoise

This is not ideal since it requires the user to know about this option
and to create a config file, but I think it's the best we can do without
compromising on yabridge's transparency and 'zero hacks' philosophy.

See #29 and #32.
This commit is contained in:
Robbert van der Helm
2020-08-17 15:49:16 +02:00
parent ebe1a9c649
commit b452f961db
6 changed files with 87 additions and 16 deletions
+3
View File
@@ -51,6 +51,9 @@ Configuration::Configuration(const fs::path& config_path,
if (toml::table* config = value.as_table()) {
editor_double_embed =
(*config)["editor_double_embed"].value<bool>().value_or(false);
hack_reaper_update_display =
(*config)["hack_reaper_update_display"].value<bool>().value_or(
false);
group = (*config)["group"].value<std::string>();
}
+9
View File
@@ -87,6 +87,14 @@ class Configuration {
*/
bool editor_double_embed = false;
/**
* If this is set to true, then any calls to `audioMasterUpdateDisplay()`
* will automatically return 0 without being sent to the host. This is a
* HACK to work around implementations issues in REAPER and Renoise, see #29
* and #32.
*/
bool hack_reaper_update_display = false;
/**
* The name of the plugin group that should be used for the plugin this
* configuration object was created for. If not set, then the plugin should
@@ -107,6 +115,7 @@ class Configuration {
template <typename S>
void serialize(S& s) {
s.value1b(editor_double_embed);
s.value1b(hack_reaper_update_display);
s.ext(group, bitsery::ext::StdOptional(),
[](S& s, auto& v) { s.text1b(v, 4096); });
s.ext(matched_file, bitsery::ext::StdOptional(),