[Clam-devel] COMMIT 11822 - Re: Faust support - plugins dynamic reloading

Pau Arumí parumi at iua.upf.edu
Mon Aug 4 09:20:22 PDT 2008


On dl, 2008-08-04 at 12:12 +0200, David García Garzón wrote:
> El Monday 04 August 2008 11:15:20 Pau Arumí va escriure:
> > > LAZY is needed there. It checks for a given symbol that is only present
> > > on Ladspa plugins to avoid loading a dynamic lib that is not a ladspa.
> >
> > BTW, are we still trying to open _any_ file? We should restrict
> > to .so, .dylib and .dll, and save time (and traces).
> >
> > Another related feature: as Hernan suggested, we should support "reload
> > clam plugins" from NE.  I think Natanael can code this with the eyes
> > closed :-) -- It actually could be a _general_ (clam, ladspa) reload
> > option if it is easier.
> >
> > P
> 
> Maybe, the fist goal should be obtaining (and keeping) a list of the loaded 
> plugin libraries (and maybe a list the processings they contain) so that we 
> can provide a unload/reload dialog with the list.

Why not just "reload" and avoid putting duplicate keys in the factory --
which AFAIK, is what is done for Faust?

Much more simpler first goal, I'd say.

P

> 
> My suggestion:
> * First move all dl_ calls to the base RunTimeLibraryLoader primitives (see 
> LoadLibraryError and FullyLoadLibrary) so that we can encapsulate the 
> platform dependant bits.
> * Add in the same class some static structure that holds the list of 
> libraries.
> * Add also a static state that holds the currently loading library and set it 
> and unset it when appropiate.
> * When registering a factory entry check that state and if set, populate the 
> structure or just add some metadata.
> * The factory registrator destructor should remove the processing type from 
> the factory (this should be TDD) in order to allow unloading the library.
> 
> I am not sure whether this should work. But, anyway, be carefull, remember 
> that we are in release!!! The plugin system cannot be broken!
> 
> David.
> 





More information about the clam-devel mailing list