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

David García Garzón dgarcia at iua.upf.edu
Mon Aug 4 01:59:05 PDT 2008


El Monday 04 August 2008 10:34:24 Natanael Olaiz va escriure:
> Commit 11822:
>
>      * Factory:
>             - Registry::CommonReplaceCreator delete the old creator, if
>     exists.
>             - It need to be called twice for now: the first with a NULL
>     creator to erase the previously, then make the new creator instance
>     and call again with the new pointer.
>      * LadspaWrapper: Fix: the destructor now calls a dlclose() after
>     the dlopen on LoadLibraryFunction instantiation
>      * LadspaWrapperCreator: Added (comented) debug messages (to help
>     further development on ladspa plugins)
>      * RunTimeFaustLibraryLoader:
>             - comented loading debug messages
>             - adapted the twice calls to factory.AddCreatorReplace (see
>     above CommonReplaceCreator comment). TODO: refactor this
>             - added a call to dlclose() after the dlopen() used to
>     explore the plugin library (called on
>     RunTimeLibraryLoader::FullyLoadLibrary)
>
>
> I left some debug messages (commented) to help further improvements on
> the ladspa libraries management.
>
> David: I did it just on the Faust support, but it could be easily
> applied on the general ladspa support. Just a comment: the
> RunTimeLibraryLoader library loader doesn't use dlopen on windows, so if
> in the future some ladspa support exists under windows, the dlclose() on
> RunTimeFaustLibraryLoader will doesn't work. Anyway, all the others
> ladspa implementations  uses the "dlfcn.h" methods...
>
>
> Regards,
> Natanael.
>
> El 08/04/2008 02:12 AM, Natanael Olaiz escribió:
> > Finally!!
> >
> > Here is a patch for the reload issue. Without cleaning up yet, but it
> > works :-)
> > Plus it have yet the debug messages, if you want to see what happens.
> >
> > The only problem is that if you have a ladspa plugin on the actual
> > canvas network, you have to delete it and put it again to actualize.
> > (I'll put an automatic deleter/loader)... But it works!  (I'm happy :))
> >
> >
> > Regards,
> > Natanael.
> > PS: I used RTLD_NOW instead RTLD_LAZY on dlopen(). I think the
> > original LAZY have to work too, I'll check it now.

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.











More information about the clam-devel mailing list