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

Natanael Olaiz nolaiz at gmail.com
Mon Aug 4 13:46:00 PDT 2008


El 08/04/2008 01:20 PM, Pau Arumí escribió:
> 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.
>>>       

For ladspa plugins is really simple, is basically the same code used for 
the faust ones. But I have to check how are working the others plugins 
constructors, and I don't have Windows to check how the libraries 
management works on it. So, for the release I'm a little afraid to do 
that...

>> 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.
>   

I agree. Anyway, at least the first point of David suggestions would be 
needed:

El 08/04/2008 07:12 AM, David García Garzón escribió:
> 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 was to ask about TDD, but google helped me: 
http://en.wikipedia.org/wiki/Test-driven_development :-)

I'm learning a lot of terms and concepts about software design lately. :)

> I am not sure whether this should work. But, anyway, be carefull, remember 
> that we are in release!!! The plugin system cannot be broken!
As I wrote above, I can test it only under Linux, so if you agree and 
the code works I could commit just for the non-windows environments for now.


Regards,
Natanael.

> 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.
>>
>>     
>
>
> _______________________________________________
> Clam-devel mailing list
> Clam-devel at llistes.projectes.lafarga.org
> https://llistes.projectes.lafarga.org/cgi-bin/mailman/listinfo/clam-devel
>
>   





More information about the clam-devel mailing list