* Improved the Documentation
* add an CONDITION_UNLOCK macro to exoplicitly unlock the condition mutex
* Add ENSUREs to check that the mutex is locked
* Fix the CONDITION_WAIT, takes the missing condition expression now
* Fix, document and improve SIGNAL and BROADCAST macros
* remove the signal and broadcast functions
cuckoo hashing was replaced by the psplay lookups, it needs some
improvements to make it easier useable and better hash function for
strings. This will be done someday later.
* 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
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
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.
* 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.
Provides structures used for managing interfaces, macros for declaring
and defining interfaces. Convinience macros to bundle buildin and plugin
interfaces.
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.
* add a destructor function for elements
* rename cuckoo_free to cuckoo_delete to be consistent with the rest
* add a custom copy function to the cuckoo hash
* Cuckoo hash update, use a vtable to pass functions to the constructor
* make the source of a move non-const, just in case something needs
to be cleaned up there.
* let cuckoo_insert return the hash table entry directly
There was a fatal thinko, llist_relocate NUST NOT be called on a empty
list, the pointers will just point to invaildated memory. This cant be
handled by the llist code. The programmer is responsible to take proper
actions.
* 'master' of git://git.lumiera.org/LUMIERA: (80 commits)
fix some warnings
fix name of 'doc' target, remove the OPENGL flag for now
improved the architecture overview (drawing)
Fixed hyperactive scroll wheel zoom
Fixed a bug with body redrawing and added some documentation
Added some documentation to body and ruler
Added support for audacity style playback period, and added some
Added time indication
improved the scons build to report all missing dependencies instead of stopping at the first one
add my favorite lumiera logo to the TiddlyWiki page
scons: use Doxygen builder
makefile typo fix
disable precompiled headers for now.
replace the homebrew GCH-builder by a lib solution
yet more make fixes
make build work again with SCons 0.96
preliminary fix for the SCons build for Debian/testing
automatically set DEBUG when using the (current) NoBug default ALPHA
Fix build with gcc 4.3
integrated SVG Icon rendering into the SCons build
...
Acquiring mutexes is now wraped in a easy to use MUTEX_SECTION macro.
This scheme will be extended for chained lock propagation soon.
Notes:
* NoBug resourcemanagement is now part of the lower layer,
RESOURCE_ENTER/RESOUCE_LEAVE are maintained automatically
* one must still call RESOURCE_ANNOUNCE/RESOURCE_FORGET, because we want
to maintain high level information about resources.
* MUTEX_SECTIONS must not be left with any kind of jump
lumiera_free() is for now just a static inline wraper around free()
Later this makes it easier to hook in some resource managing functions
or a Garbage Collector in.
Replaced all current uses of free()
tmpbuf_tr takes an input string and 2 sets of characters plus a
default character. It produces a output string with all
characters from the first set translated to the correspondending
character in the 2nd set, similar to the shell 'tr' util.
uuid's are somewhat standardized, we use our uid's slightly differently,
so change the name not to be confused with standards.
* Small fix for luid generation
* build a 'luidgen' tool which will be used by the interface gen later
* add emacs vars
* include the luidgen tool in automake
LUMIERA_MUTEX_SECTION takes now a nobug flag as first argument and
a nobug resource-handle as second argument.
This change works forward for the NoBug resource tracker and
deadlock detector.
This implementation of cuckoo hashing gives guaranteed O(1)
lookup complexity and amortized O(1) insert and remove complexity.
Hash tables by default grow and shrink automatically.
It is posible to preallocate entries and turn automatic shrinking off,
taking out the memory management factors for insert and remove operations.