On Dienstag, 28. Dezember 2021 11:21:28 CET Andrew C wrote:
> This is the output when I, shall we say, non-interactively (i.e netcat)
> send a command to Linuxsampler:
>
> Data type is libgig and data version is 4.3.0.svn34
> Trying to find an available editor.
> Loading instrument editor plugins...Successfully loaded:
> /usr/local/lib/linuxsampler/plugins/libgigeditlinuxsamplerplugin.so
> OK
> InnerFactories.begin.
> Returning available editors result.
> Instrument plugin is
> Searching for matching editors now...
> Trying to find an editor that can support: libgig and 4.3.0.svn34
> Trying to find an available editor.
> Loading instrument editor plugins...Successfully loaded:
> /usr/local/lib/linuxsampler/plugins/libgigeditlinuxsamplerplugin.so
> OK
> InnerFactories.begin.
> Returning available editors result.
> Registered instrument editors again:
> Searched finished for matching editors...
> vEditors looks empty. What about available editors string?Trying to find an
> available editor.
> Loading instrument editor plugins...Successfully loaded:
> /usr/local/lib/linuxsampler/plugins/libgigeditlinuxsamplerplugin.so
> OK
> InnerFactories.begin.
> Returning available editors result.
> ERROR: There is not any instrument editor registered to the sampler!
>
>
> It looks like the iterating through the previously registered editors gets
> "forgotten" or otherwise the 'InnerFactories.begin()' loop is empty in the
> 'non-interactive' example..
> Phew.. That's enough wall of text then!
Are you requesting a sampler reset per LSCP comand via netcat somewhere in
between? Because a sampler reset request will reset really everything, i.e.
the sampler would also call
src/Sampler.cpp:
void Sampler::Reset() {
...
InstrumentEditorFactory::ClosePlugins();
...
}
And ClosePlugin() closes all open plugin DLLs. Once the instrument editor DLL
is unloaded from memory, the following destructor code is executed
automatically:
src/plugins/InstrumentEditorFactory.h:
~InnerFactoryRegistrator() {
InnerFactoryTemplate<PluginClass_T> innerFactory;
InstrumentEditor* pEditor = innerFactory.Create();
if (InnerFactories.count(pEditor->Name())) {
InnerFactory* pZombie =
InnerFactories[pEditor->Name()];
InnerFactories.erase(pEditor->Name());
if (pZombie) delete pZombie;
}
innerFactory.Destroy(pEditor);
}
CU
Christian
_______________________________________________
Linuxsampler-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel