On 17.1.2025 09:13+1 Kristian Amlie <krist...@amlie.name> wrote:
3. LV2 instance: Essentially the same scenario as scenario 2.
On 17.01.2025 11:59, Will Godfrey wrote:
Yes, but with LV2, we always work in an 'internal' state mode and never use
any of the stored config/instance data, so we should probably block *all*
config updates for LV2 - although I don't know what we'd do about graphic
themes.
On 17.01.25 17:44, Kristian Amlie wrote:
Yes! I was going to suggest that too.
This makes me feel queasy.
LV2 differs only in very few aspects from standalone.
If I recall correct, we do load quite some config from the setup directory,
including screen layout, opened windows, and several further aspects.
What we do right now is to block some config settings in the GUI for
any instance, that is not the "primary instance". Which is somewhat problematic,
as the user has no direct way to influence the instance numbers with LV2 and
it is even possible to close the first plugin instance and leave further ones
running. In which case there would be no way of altering some base settings
via UI.
@Will: what do you mean with 'internal state mode'?
-- Hermann
============== some further details...
please look here
InstanceManager.cpp, line 300
bool InstanceManager::Instance::startUp(PluginCreator pluginCreator)
{
cout << "\nStart-up Synth-Instance("<< getID() << ")..."<< endl;
state = BOOTING;
runtime().loadConfig();
bool isLV2 = bool(pluginCreator);
assert (not runtime().runSynth);
if (isLV2)
...
note, we invoke the main config loading hook prior to any branching
related to LV2. The only thing we indeed skip for LV2 is Config::init()
Config.cpp, line 351
void Config::loadConfig()
{
bool success = initFromPersistentConfig();
if (not success)
{
string message = "Problems loading config. Using default values.";
TextMsgBuffer::instance().push(message); // needed for CLI
Log("\n\n" + message + "\n");
}
}
initFromPersistentConfig() is a huge beast, with lots of fine grained
logic to detect and apply existing config.
NOTE: please have a look at usages of Config::isLV2
Notably there is *no* reference from within the Config class,
with one single exception:
void Config::init()
{
if (isLV2) return; //skip further setup, which is irrelevant for LV2
switch (audioEngine)
{
case alsa_audio:
...
_______________________________________________
Yoshimi-devel mailing list
Yoshimi-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/yoshimi-devel