FYI: 4.7 panel and plugins
Brian J. Tarricone
bjt23 at cornell.edu
Tue May 26 09:27:08 CEST 2009
On 05/25/2009 11:42 PM, Nick Schermer wrote:
> FYI: g_thread_init should also be called before using GSlice, which is
> used by gobject, so it cannot hurt to call it all the time.
I really hope you'll reconsider this. Calling g_thread_init() requires
that a program is linked to libgthread, which requires that the program
is linked to libpthread. Libpthread replaces a large number of libc
functions with (slower) thread-safe versions, which obviously isn't
necessary in a non-threaded applications. This also slows app startup
since the dynamic linker has to work harder (not just to load extra
libraries, but to override existing symbols in the GST).
Also I believe that some glib/gobject stuff is slower when in threaded
mode due to some extra required locking.
Is all this significant? I don't know; I've never profiled it. But why
add extra overhead and extra startup time when it's not necessary?
g_thread_init() is absolutely *not* required in a gslice-using
application if the application does not use threads.
Having plugins not know if they're external or internal is somewhat nice
from an implementation perspective, but this is an abstraction that
really shouldn't be there.
 Or not really... 3rd-party plugins (and even most 1st-party ones)
should never be internal. I might even go so far to suggest that there
should be *no* exported internal plugin interface, and the few plugins
that can/should be internal that are distributed with the panel itself
use an unpublished API. On the other hand... is there a need for
internal plugins at all? Would there be much of a performance/resource
usage impact if (for example) the launcher plugin was made external?
More information about the Xfce4-dev