removes the difference in compiled in and plugin interfaces.
* All interfaces are now defined with LUMIERA_EXPORT(...)
* The definition of LUMIERA_PLUGIN at compile time takes action to compile
as plugin which gets automatically managed.
* compiled in (core) interfaces need still be registered, this is
simplified with the LUMIERA_INTERFACE_REGISTEREXPORTED and
LUMIERA_INTERFACE_UNREGISTEREXPORTED macros which become no-ops for
plugins.
The plugin refcounter is driven from interface opening/closing, this is
quite internal.
The 'last' time in plugin now records the last time the refcounter dropped
to 0, this is just sufficient enough to find out how long a plugin is
unused.
* fix configure.ac to check for dlopen, introduce $(LUMIERA_PLUGIN_LIBS)
* Generic pluginloader finished, all plugins get loaded and registered at
start for now, it is prepared for on-demand loading and unloading but
not implemented because that needs the plugindb.
- plugin unloading not yet finished, this asserts at the end
* add a lumiera_interface_version() function for runtime type and version
checking of interfaces
* the 'lumieraorg__plugin' interface is now private
* add a macro to construct a interface instance name string
* plugin{.h,.c} are back but work in progress
* the interfaceregistry also manages a pluginregistry, makes no much sense
to isolate it yet, both share a mutex and are commonly used together
This ditches the old 'proof of concept' implementation, interfaces and
plugins are internally separate now and publically only accessed over
the 'interfaces' api.
The interface registry now gets an additional 'plugin' member to
backreference plugins from interfaces.
* commit 'joel/gui':
Correct a liblumi to liblumiera
Added track tree support and added widgets to headers
Corrected a selection rendering bug in TimelineBody
Added linkage to the proc layer
Made GtkLumiera and WindowManager boost::noncopyable
Added the backend as a lib, and included the interface header
Showed some love to viewer panel
Changed the "delete" variable name to "del" to satisfy the C++ compiler
Renamed HeaderContainer to TimelineHeaderContainer
Conflicts:
src/gui/Makefile.am
There where some bugs slipped in (not yet tested code)
removed the descriptor from the plugin itself, lets see if we can remove
the acquire and release functions later too.
Declare the plugin interface itself in its first experimental state
don't link the tests with -ldl
Renamed GTK_LUMIERA_* to LUMIERA_GUI_* and include all gui relevant config
results here.
Set it explicit, don't add the results to CFLAGS or LIBS, the default
behaviour linked all LIBS in, even in plugins, that was not intended.
calling 'luidgen' with a list of filenames replaces the word LUIDGEN in
each of this files with a octal escaped string consisting a unique
identifier
add luid formatter help macros to luid.h
let compilation of files which contain the word 'LUIDGEN' fail with a
hopefully self-explaining error message
After a discussion with ichthyo and some further thinking this should be
mostly finished now. Nevertheless it is still experimental until we gain
experience with it.
This *must* be replaced by a real luid with a upcoming luidgen tool ASAP,
luids starting with zeros are invalid. For the time until this luidgen tool
is not ready we just leave it this way. Later it will be changed to give a
compile error.
wordlists are simple not quoted words delimited by semicolon, tab, space or
commas. Some special functions will allow to access each of this words by
index etc.
All interfaces which are available get registered in a tree.
This will be used internal for lookup interfaces. The higher level calls
will be an amalgamation of this lookup and the upcoming plugindb and
loader.
* lumiera_interface are now static structures, never wrritten
* introduced a lumiera_interfacenode which manages the dynamic data
of interfaces. The interfaceregistry now holds this nodes.
When interfaces cross depend on each other nested acquiring from
their acquire handlers would introduce cyclic references which cant
be cleaned easily. By flagging such nested acquisitions as weak the
respective handler functions can account for this.
Example: maintain 2 ref counters one for strong and one for weak
acquisitions. At release time all acquired nested handles get closed when
the strong counter drops to zero, which causes that cross reference
releases will eventually drop the weak count to zero too. Then all
resources can be freed and the interface is properly shut down.
All interfaces which are available get registered in a tree.
This will be used internal for lookup interfaces. The higher level calls
will be an amalgamation of this lookup and the upcoming plugindb and
loader.
Provides structures used for managing interfaces, macros for declaring
and defining interfaces. Convinience macros to bundle buildin and plugin
interfaces.
wordlists are simple not quoted words delimited by semicolon, tab, space or
commas. Some special functions will allow to access each of this words by
index etc.
Recursive mutex can be locked multiple times by a single thread they
are initialitzed by lumiera_recmutex_init() and used by LUMIERA_RECMUTEX_*
macros.
Chained mutex use the mutexacquirer from the outer scope now. Maybe its
later needed to pass acquirers explicit, we will see.
* 'configloader_devel' of git://git.lumiera.org/lumiera/simeon: (24 commits)
Added directive-parser and tests for a content-check of a parsed configitem
Fixed configitem_move, first parsing tests pass now
FIX: Remove llist_move again and put a note to list_relocate, add test
WIP: add config_lookup skeleton
filedescriptor fixup for new copy func in cuckoo
add a custom copy function to the cuckoo hash
fixes after the cuckoo update in filedescriptor.c
Cuckoo hash update
Added two very simple tests for configitem
Typo fix
Fix for section-parser
added section part to parser
parser improvements, compiles now
added CONFIG_SYNTAX errors
typo fix and redundant comment removal
add configitem and configentry to the build system
give the charsets for config keys some constants
fix to make parser mockup compileable, little simplified
WIP: started low-level parser
more functional mockup of the configitem bootstrap
...
Conflicts:
src/backend/config.c
src/backend/config.h
src/backend/config_lookup.c
src/backend/config_lookup.h
src/backend/configitem.c
src/backend/configitem.h
src/backend/filedescriptor.c
src/lib/cuckoo.c
src/lib/cuckoo.h
tests/22config_highlevel.tests
tests/backend/test-config.c
* the path parameter given to config_init becomes a registered default
value for 'config.path' itself thus the config system finds its data
path on itself.
* the printf formatting string for representing values are also
bootstrapped as default entries in the config system. This is just a
prelimary example and will be refined later