[compiz] Plugin Library Interface

Patrick Niklaus patrick.niklaus at googlemail.com
Sat Mar 10 05:19:45 PST 2007


>
> Most of the interface we have on the core so far have specific needs and
> I'm sure future interfaces will too. This library interface would have
> to be extended to support cases like that. If we do that, then this
> would work as a low level interface that other interfaces can be layered
> on top of and plugins can create their own interfaces, which could make
> sense but I'm not sure.
>
>
> Anyhow, I'm not against this in it's current state even though it seems
> an awful lot like just providing dynamic library loading which it makes
> more sense to do using dlopen, dlsym...
>
> If we have a case where this interface makes more sense than anything
> else then fine with including it.
>
> The text_to_pixmap interface is very specific and I don't think the
> functionality itself is a good idea. What are the use cases for this?
> For rendering text, I suggest that we create an interface that hooks
> into the drawing framework and allow plugins to implement glyph caching
> similar to what I once created for xgl and cairo's glitz backend.
>
> Do you have other use cases for which this library interface fit in?
>

Yeah actually I tried loading functions from a plugin through
dlsym(p->devPrivate.ptr, "fooFunc"), but we need this management-layer
to do some advanced functionality with library functions. In my
opinion it makes just more sense to have a updateLibraryFunction, then
checking if a plugin, which provided a shared function, got unloaded.

Another example which we discussed on IRC are wrap-able library
functions. This would let us do some really cool stuff with drawing. A
future "glow" plugin could provide such a wrap-able function
("paintGlow") and other plugins could hook into that if needed. The
image plugins could use that too, which would eliminate the need for a
image interface in core.  As far as I know Roi Cohen is currently
working on adding wrap-able functionality to shared functions.

I don't know how your glyph caching interface in xgl/glitz works, so
I'm unsure with that. I'll probably take a look at that later.

Using plain shared libraries would be far less beneficial: As Danny
already pointed out (link:
http://lists.freedesktop.org/archives/compiz/2007-March/001665.html ),
there would be no load notifications, no wrapping of functions (in
both directions: library plugins couldn't wrap into core functions and
plugins could not wrap into library functions) and library functions
could not offer any options to the end user.


Regards,
Patrick


More information about the compiz mailing list