From kde-kimageshop Tue Aug 31 16:31:21 1999 From: Bavo De Ridder Date: Tue, 31 Aug 1999 16:31:21 +0000 To: kde-kimageshop Subject: Re: plugin system X-MARC-Message: https://marc.info/?l=kde-kimageshop&m=93611682417799 On Tue, 31 Aug 1999, Matthias Elter wrote: >Use the portable ltdl code (see kdecore) to dlopen the plugin libs. The libs Thanks for the hint of ltdl, I needed that for my KTL. I am currently working on a more dynamic version in which different threading implementations can be loaded at program startup. >are dlopened two times by the plugin manager: On startup to resolve a symbol >"PluginInfo* getPluginInfo()" used to collect plugin info for the database and >on plugin invokation. Plugin invokation "void run()" is wrapped into "void >init(PluginInterface*)" and "void cleanup()" calls on dlopen/dlclose to hand >the PluginInterface over and to make sure the plugins have a chance to clean up >used resources. The plugins run in seperate threads using Bavo de Ridder's KTL. >The plugin manager simply queries a system wide and a local plugin dir and >decides based on the file date wether it has to update the plugin database. > >+ portable >+ fast >+ I have working code for this approach. >+ We can optionally grant direct access to canvas data structures to avoid data >transfers. >+ Plugin writers are not scared away by KOM. >- A shared lib fooling around with canvas data can easily crash KIS. It this happens than the access interface was not well written. A good interface should make it impossible for a plugin to crash the application. However, the plugin runs in the same address-space as kimageshop, so a division by zero in the plugin will also bring down kimageshop (or a segfault, ....). BDR