Commit graph

3273 commits

Author SHA1 Message Date
7000a40602 WIP: stubbed factory functions 2013-10-18 02:49:37 +02:00
319da4bff6 WIP: improve the API 2013-10-18 01:10:03 +02:00
f93c7f8930 WIP: draft internal structure of dependency factory 2013-10-16 04:46:20 +02:00
567ab3819b WIP: draft an improved version of the Singleton factory
...this would both improve our general design and circumvent
the problems with Clang and static variables
2013-10-14 01:18:56 +02:00
08cae2617d fix insideous problem with mutex initialisation
explanation: we use pthread_once to define a mutex type descriptor,
used to define some of our mutexes as recursive mutexes. Now,
pthread_once relies on a counter stored in a given location;
we used a non-exported global var for this counter.

Unfortunately this ties the mutex initialisation to the static
initialisation of the compilation unit holding this counter variable.
Theoretically it would be possible (we never observed such an incident)
that, during static initialisation, a singleton was brought up,
which requires a class-scoped lock, implemented as recursive mutex.
And it would be possible for this singleton locking to happen prior
to initialisation of the mentioned counter variable.

As a fix, I've moved the counter varialbe into a function scoped
static variable, since that is guaranteed by the C++ runtime system
to be initialised at first usage of the function, irrespective of the
initialisation order of the enclosing compilation units
2013-10-13 01:48:27 +02:00
67523269fc clean-up and comments for the singleton factory 2013-10-07 01:58:13 +02:00
66b62e2146 remove superfluous template parameter dependency 2013-10-07 01:58:13 +02:00
6d064cb7b7 Clang(#928): clarify instantiation of dependent template
clang-3.2 requires a clarification here (while previous versions
of clang and GCC automatically resolved the ambiguity by assuming
use of a nested, dependent template).
2013-10-06 23:15:49 +02:00
961936ce9d Clang-3.0(#932): workaround for a known problem of Clang-3.0 (Debian/stable)
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20121203/069267.html

http://stackoverflow.com/questions/13521163/variadic-template-as-template-parameter-deduction-works-with-gcc-but-not-with-c

Clang aborts the template type deduction due to different size of the argument lists;
in fact the missmatching arguments can be filled in perfectly from the default template arguments.

As a workaround, we'll include an unused placeholder type parameter into the templated function,
to make the match succeed.
2013-09-27 23:28:29 +02:00
cb80d4001a Clang(#928): refactor OutputSlot implementation to resolve a scoping problem
Clang is more insistent when it comes to enforcing 'protected' visibility.
Since in this case the basic design can be considered sane and optimal, the
only (and obvious) solution is to nest the PIMPL into a default base class
for implementation; this mirrors the structure of the interface.
2013-09-27 23:25:51 +02:00
4ea20f0e74 Clang(#928): fix inconsistencies and compilation problems
Compilation with Clang 3.0 (which is available in Debian/stable) fails,
mostly due to some scoping and naming inconsistencies which weren't detected
by GCC. At some instances, Clang seems to have problems to figure out a
perfectly valid type definition; these can be resolved by more explicit
typing (which is preferrable anyway)
2013-09-27 23:23:13 +02:00
7f68bc9020 integrate priority queue: lumiera namespace prefix; unit test pass 2013-09-13 05:44:58 +02:00
fc3cc1bc98 integrate priority queue: adjust imports and doxygen comments 2013-09-13 04:18:16 +02:00
87a84a931f Import priority queue implementation from Cehteh's library 2013-09-13 03:28:50 +02:00
Christian Thaeter
df749271d0 cleanup in the priqueue test-code 2013-09-13 02:57:26 +02:00
Christian Thaeter
ff51ea54e6 Add a copy function to the priqueue
by providing a custom copy function one can adjust otherwise non-copyable
elements. This should be used cautionary because dereferencing elements may
poison the cache and thus have some considerable performance impact
(profile this)
2013-09-13 02:57:26 +02:00
Christian Thaeter
98d6ba3967 priqueue implementation
this adds a minimalistic priority queue based on a binary heap
2013-09-13 02:57:26 +02:00
bcfc1ed783 some bits to round up the job descriptor API 2013-09-08 19:19:02 +02:00
2b8ac2d071 render job dummy passes unit test
the basic job and job closure interface is mostly settled now.
We can define and invoke render jobs, and distinguish jobs
through a hash ID
2013-09-07 02:37:17 +02:00
7ba10619aa draft unit test to cover the basic render job properties 2013-09-02 00:57:33 +02:00
ef535d9897 provide a dummy job for unit testing 2013-09-02 00:26:04 +02:00
7ba0ef92c8 stubs to complete the scheduler interface draft 2013-09-01 23:29:57 +02:00
3688cbe9a5 WIP: draft scheduler interface and diagnostics 2013-09-01 19:48:17 +02:00
bcbd05d7eb reorganise some boost::format usage
using our util::_Fmt front-end helps to reduce the code size,
since all usages rely on a single inclusion of boost::format

including boost::format via header can cause quite some code bloat


NOTE: partial solution, still some further includes to reorganise
2013-09-01 17:36:05 +02:00
febce1282c standard hash value for jobs (prerequisite for #786)
this is mostly a diagnostic facility; the actual scheduling
of jobs doesn't rely on hash values.
2013-09-01 02:30:14 +02:00
bb0b4578ec move job planning implementation to separate compilation unit 2013-09-01 02:26:46 +02:00
3932a820a3 Job and JobClosure now located in the backend
- adjust namespaces
- fix imports
- forward the failure reason to the JobClosure implementation
2013-08-30 02:00:35 +02:00
488efdf783 WIP: relocate job descriptor into backend (Ticket #926) 2013-08-30 01:23:07 +02:00
79370ad494 FrOSCon: review of job and job definition 2013-08-24 15:53:05 +01:00
ecf65a70fb start a draft to shape the high-level interface for the Scheduler 2013-08-19 04:12:03 +02:00
f9cd80560c complilation fixes 2013-08-18 03:16:49 +02:00
86e76bf7fe define setup and chaining of render planning chunks (#920) 2013-08-17 03:37:36 +02:00
d192c42faa fill in the definition how a job can be created 2013-08-17 01:35:07 +02:00
2488478a12 file-level comment for time values
a recent discussion showed that it is rather likely
for a reader new to the whole time handling framework
to encounter this header first....
2013-08-13 01:27:37 +02:00
160dafebdb WIP re-read the code, try to understand the problem to be solved
unfortunately there was an interruption of more than a month
since my last Lumiera contribution
2013-08-13 01:16:29 +02:00
1f1d478da2 WIP: move building of the follow-up anchor into the new closure 2013-06-16 04:36:32 +02:00
84281d5b60 WIP: CalcStream initialisation
especially: where to establish the effective Timings.

also fixed several compilation errors
2013-06-15 04:02:48 +02:00
77066ee3ce WIP: how to start the actual calculation streams within EngineService
this draft fills in the structure how to get from an invocation
of the engine service to the starting of actual CalcStream instances.

Basically the EngineService implementation is repsonsile to
instruct the Segmentation to provide a suitable Dispatcher.
2013-06-03 05:25:13 +02:00
723096d3f2 WIP introduce a new kind of job closure to perform the planning
this might help solving that gordian knot related to the TimeAnchor,
the Dispatcher and the introduction of a possible playback strategy
2013-06-02 03:09:18 +02:00
082822fde8 relocate the JobClosure interface to be defined alongside of Job
This is necessary since the implementation of the job functions
calls through the VTable of the interface JobClosure. Thus this
interface (and the VTable definition) needs to reside within
some compilation unit linked together with the basic job class.

TODO: move class Job entirely into the Backend
2013-05-31 02:59:32 +02:00
56be672358 WIP: reworking the dispatcher interface
the goal is still how to introduce a playback strategy
2013-05-30 02:10:56 +02:00
8982223a4d pondering about a suitable definition of a planning chunk (#920)
mostly this seems to be a matter of getting the terms
and meaning of the involved entities straight
2013-05-21 04:35:25 +02:00
9cfbc7bbe6 GCC 4.7 compilation fix
now builds for me on Debian-7 Wheezy 64bit

unqualified member functions in dependent base classes not found anymore.
Need to qualify either the class or the instance.
2013-05-10 00:48:25 +02:00
d512267575 navigation orientation indicator done (closes #918) 2013-04-30 02:40:21 +02:00
e0c5b18740 draft indicator (helper) to support tree navigation 2013-04-29 01:36:32 +02:00
3ef3886395 reduce log level of config system startup message 2013-04-15 03:43:42 +02:00
d953d4e6af Library: convenience function to take addresses
just a wrapper based on 5749a621

While implementing this, also simplified the way
a const iterator can be defined for taking addresses
2013-04-15 03:07:15 +02:00
346acb1fec WIP continue debugging this test...
Problem with the visitation is solved now.
But the tree is still not rebuilt properly
2013-04-13 04:30:04 +02:00
5749a6216c Library: iterator wrapper to expose the address
...for the very specific situation when we want
to explore an existing data structure, and the
exploration assumes value semantics.
The workaround then is to use pointers as values.
2013-04-08 02:03:43 +02:00
8353ebf7d2 WIP drafting cointinued...
now drafting the call structure
which might be used for adding jobs
to the scheduler.

Passes compiler
2013-03-31 01:13:13 +01:00
4c312e2299 WIP reworked idea for this test
...attempt to build it based on the monadic iterator primitives.
Only problem is: need to find out relation between nodes
after the fact. In the real usage situation, this
is not a problem, since we have a state object
there, which can track the relation as it is established
2013-03-23 01:17:23 +01:00
16c9f5fd36 WIP musing about re-creation of tree visitation order 2013-03-17 03:14:05 +01:00
25be40bb4a change PlanningStepGenerator end-of-sequence logic
basically I've changed my mind to prefer an
infinite JobPlanningSequence, which is just
evaluated partially. This removes the need to
embody the logic of planning chunk generation,
which really is a different concern.
2013-02-11 03:23:10 +01:00
7ada9ff291 consider how to integrate a playback mode strategy 2013-02-11 03:19:24 +01:00
30409e66bd WIP: considering how to support non-linear playback modes 2013-01-13 23:20:20 +01:00
727fdd8691 add convenience shortcut to access a collection's last element
actually two accessor functinons first() and last(),
which automatically pick a proper implementation,
either by iteration or by direct access
2013-01-13 16:49:20 +01:00
740f3d0211 add detection for STL-like back iteration 2013-01-13 16:39:43 +01:00
aca90f7ce8 DONE: mechanics of job planning 2013-01-12 14:36:01 +01:00
2b0e6d63c9 stop condition for chunk wise job planning 2013-01-12 12:49:26 +01:00
a4411d00b1 DONE: time anchor and latency handling for job planning 2013-01-12 12:38:33 +01:00
e40f3fe97f introduce a render engine configuration facade 2013-01-12 11:17:29 +01:00
18605b0c19 handling of real time start offset
decision: the base for any deadline calculations
is the expected real time corresponding to the grid origin.
This value is contained in the Timings record.
2013-01-12 08:36:35 +01:00
72e5557d1e locate the real time / nominal within engine::TimeAnchor
this clarifies the relation of TimeAnchor and Timings,
the latter act as a general spec and abstracted grid,
while the latter actually performs the conversion and
deadline checking
2013-01-11 18:12:40 +01:00
d18e36708d re-read the code
OMG....
2013-01-11 16:48:28 +01:00
a2e4a23b30 bugfix 2013-01-11 14:11:51 +01:00
8e57bbacf1 Rename the "Library" into liblumierasupport.so
Rationale: this is the *support* Library.

The real "Lumiera-Library" does not exist yet.
liblumiera.so will be the *interface* every external
module / plug-in uses to get Lumiera functionality.

Especially the work on Library dependency clean-up
made outright clear, that this interface library
needs to be a separate piece of software, which is
carefully crafted, and more-or-less depends on the
whole application.
2013-01-08 03:00:50 +01:00
ada5cefaaf re-arrange tests according to layer structure
the buildsystem will now pick up and link
all test cases according to the layer, e.g.
backend tests will automatically be linked
against the backend + library solely.
2013-01-07 05:43:01 +01:00
8d88ffcdff SCons: rework test definition to link according to layer
tests used to be defined ad hoc and test definitions
are scattered confusingly over various directories.
Now built some simple rules into the buildsystem
to allow organising the tests into layers and
linking them accordingly.

Note: this switches to building shared objects
for the test classes too, which effectively speeds up
both re-building and re-running of test cases
2013-01-07 02:15:05 +01:00
0710d51aaf SCons: fix the remaining shared linking problems on Ubuntu-Precise
Our libraries constitute a clear dependency hierarchy,
we do not want circular dependencies. Declaring these
dependencies while creating the shared libraries would
allow strict checking by the linker; but unfortunately
this also creates transitive depdendencies stored as
DT_NEEDED tags.

While basically this would be just fine, the resolution of $ORIGIN
on gets confused in case of transitively defined library dependencies
over multiple hops, especially in case when actually no symbol of this
transitive dependency is used. Since these newer systems set the
--as-needed switch for linking by default, these unnecessary
DT_NEEDED entries will be purged from the executable, but of course
not from the shared library causing the transitive dependencies.
As a consequence, when loading the executable, the $ORIGIN resolution
mechanism doesn't act on the dependencies recorded in the library,
causing the shared loader to abort with an "unresolved dependency"

So the resolution for these problems is not to use transitive
dependencies on libraries intended to be found via $ORIGIN
2013-01-05 04:50:59 +01:00
56d42e9b04 comments and tidying within BasicStetup and AppState 2013-01-05 04:50:59 +01:00
1c5ceaef15 Boost filesystem Ver 2/3 transition
This is kind of a workaround to avoid having to maintain two variants.
Explanation: between Boost 1.42 and 1.52 there was the transition to a
reworked version of the filesystem library, itroducing some breaking changes
The new version distinguishes much clearer between the native and the
generic representation of paths -- which becomes relevant when porting
to non-POXIX operating systems.

Actually the intention was to use the generic path representation in all
configuration; currently this distinction is moot, since we're caring
only for POSIX systems.

So the workaround is to use the fsys::path::string() function, which
is available in both versions, but changed meaning to yield the native
string. Later, when able to deprecate older Boost versions, we should
switch to generic_string()

Note: an alternative solution was found by Mike Fisher in 3b39f35
using the compiletime define BOOST_FILESYSTEM_VERSION=2

See also ticket #896
2013-01-05 04:50:29 +01:00
4ede0453be resolve the remaining liblumieracommon.so dependency problems
now this library doesn't refer to any symbols from
Proc-Layer anymore. Resolving these problems
highlighted IMHO a serious shortcomming of our
interface system, which hinders the building
of abstractions at interface level
2013-01-04 07:45:18 +01:00
ef9a6e6f11 note some unresolved problems with our DummyPlayer 2013-01-04 06:00:35 +01:00
3d628b6eee fix ill-guided linking of the DummyPlayer facade object type info
DummyPlayer is experimental code,
but actually we've established the convention
to linke the facade-proxies into common/interfaceproxy.cpp
2013-01-04 04:34:01 +01:00
1328ef4aa6 solution: how to retrieve syntactic representation
there is now a mechanism to allow sprcialised queries
to generate this syntactic representation only on demand

The actual concrete representation e.g. for scope queries
still remains TODO, but this won't really change
until we target the integration of a real resoloution engine
2013-01-02 04:18:05 +01:00
65feeb83fd supply some documentation about lumiera::Query 2013-01-02 03:32:49 +01:00
e902757a14 (DRAFT) refactor the way how to retrieve the syntactic query representation
there can't be a callback from the base ctor;
instead the subclass must pass a QueryText definition
2012-12-29 00:31:24 +01:00
6a3d4777be supplement special format handling for Symbol datatype 2012-12-27 22:32:55 +01:00
a1d98eb457 restore and fix some broken tests
..more to come, especially several of the
QueryResolver based tests are still broken
2012-12-27 03:31:09 +01:00
933e486cf9 clarify some aspects of Session lifecycle
- consider especially where the reset of internal indices happens
- actively purge the Assets, the ConfigRules and Defaults
2012-12-27 02:31:58 +01:00
aadc7ec7f8 allow to clear the session wide registration for defaults 2012-12-27 02:10:38 +01:00
41f2820781 allow to clear the global Asset registration (#154) 2012-12-27 01:45:52 +01:00
384ee68129 allow simple query-for-pipe again (revert)
while refactoring, I thought it might be a good idea
only to use Query objects. But in this special case,
most often you'd just want to pass in a simple query
with a literal query string. So this convenience shortcut
indeed makes sense.
2012-12-26 02:20:11 +01:00
873d6c3d5c re-activate some tests 2012-12-26 02:01:26 +01:00
1f6e71272a simplify fake config rules table access
- since std::map is itself a smart-ptr, there is no need for an indirection
- directly use QueryKey as table key
2012-12-26 01:13:36 +01:00
01792739f3 change Query ordering and hash to include the type information 2012-12-26 01:11:57 +01:00
d73c2fa842 adapt the fake-config-rules to use the new Query::Builder 2012-12-25 01:16:19 +01:00
9369709a46 fix breakage uncovered by unit-test 2012-12-24 03:20:52 +01:00
bccb7a11b5 restore defs-registry Unit test 2012-12-22 22:01:51 +01:00
a9600387ba refactor defaults-manager to use the reworked query interface 2012-12-22 00:39:23 +01:00
5cddc57932 WIP extend query with a warpper for indexing and ordering
...to extract the syntetic ordering from
DefsRegistry and make that a responsibility
of the (internal) syntactic representation
of the query.

doesn't pass the compiler yet
2012-12-17 23:17:32 +01:00
1bde72cccf implement another builder function; adapt OutputDesignation 2012-12-11 04:45:18 +01:00
602a04c4b5 factor out fequently used functions for ordinal numbers 2012-12-11 04:07:06 +01:00
08ff817afd implement builder/accesor function; adapt StructFactory 2012-12-09 02:42:36 +01:00
8630e888a5 integrate (placeholder) query definition
effectively this joins the two existing lines
of "Query" classes into one systematic representation
Next step would be to move all mutation operations
over to the Query::Builder
2012-12-07 01:49:35 +01:00
5b2668a17c generic query representation (placeholder)
...planned to be replaced later by a real
AST based implementation, which acutally
parses the query definitions
2012-12-03 00:41:57 +01:00
d306bb3cdf fix includes 2012-12-03 00:18:18 +01:00
6c8bf1f9e4 bring the plain query utilities back into lib 2012-12-02 23:32:30 +01:00
a79ba2c507 refactor use of HashVal typedef (#722) 2012-12-02 23:03:37 +01:00
5292b19dd6 clean-up and finalise time::Mutation 2012-12-02 01:54:02 +01:00
3852c8f8e8 provide a time mutation for nudging based on symbolic grid reference
time handling is part of the library, while this
convenience shortcut relies on the Advice system,
which resides in the application lib.
To allow this kind of symbolic acces to a grid
entity defined "elesewhere", client code needs
to be linked against liblumieracore.so
2012-12-02 01:17:02 +01:00
5dfe5e099f refactor namespaces for query and defaults manager 2012-12-01 08:44:07 +01:00
8ee8eb1e73 create a new integration point for using application services
especially this allows to use the Advice system
or the query resolvers from within library facilities
to refer to other implementation level services by name
2012-12-01 07:46:49 +01:00
626b1d4356 re-arrange query- rules- and resolver facilities within Core
the rules-based configuration and query system
will be located within the core application,
while the concrete implementation facilities
are expected to reside within the session or
maybe also the GUI.

This is kind of a 'rochade' refactoring to resolve
circular library dependencies and confine the parts
dependant on the session and MObjects to the Proc-Layer

And while we're in the middle of chainsaw surgery,
we'll concentrate further query-based facilities
alongside the config-rules within the App core.
2012-11-27 02:17:21 +01:00
dd8a88d095 adjustments and stubbing to get it past the compiler 2012-11-26 01:22:01 +01:00
b5a7055f29 move Query interface to Lib 2012-11-25 02:29:52 +01:00
baefd74ae7 prepare refactoring of the Query interface 2012-11-25 02:04:19 +01:00
62bfccd67b cleanup: remove the old factory template
This template was a leftover from the early days
of Lumiera development and doesn't provide any
substantial value as an abstraction.

For the more intricate cases, we're using the
lib::MultiFact template, which allows to install
several "fabrication" functions at runtime
2012-10-14 01:30:08 +02:00
23cac22a9f Sync Documentation 2012-10-10 06:14:58 +02:00
Michael Fisher
f7a7c1c416 GCC 4.7 compilation fixes. Now builds on debian wheezy beta2 2012-10-10 05:29:54 +02:00
Michael Fisher
e267e0ad0b GCC 4.7 compilation fixes
clarify binding of function (by specifying 'this')
2012-10-10 05:25:42 +02:00
954ebefc4c draft implementation of the PlanningStepGenerator 2012-10-10 05:20:24 +02:00
44435fd1db clarify and settle the relation between Dispatcher and PlanningStepGenerator
the solution is to introduce a superinterface
and let Dispatcher augment that with the specific parts.
This way, the Job planning only has to rely on the
rather generic stuff (TimeAnchor, FrameCoord)

NOTE: this commit makes the whole JobPlanning machinery
compilable for the first time!
2012-10-10 05:20:23 +02:00
3300d00cc8 WIP working towards a solution for generating frame location sequences
..the Idea is to rely on some kind of service,
to break the cyclic dependency with the Dispatcher.
But I seem unable to find a natural location or
concept to house that service.
2012-10-10 05:20:23 +02:00
ce5b940d39 WIP consider how to seed the evaluation of a JobTicket 2012-10-10 05:20:23 +02:00
14e6086488 better do initialisation by ctor 2012-10-10 05:20:22 +02:00
30cf0b5718 implementation of JobTicket::ExplorationState 2012-10-10 05:20:22 +02:00
062e1bbdc1 explicate the JobPlanningSequence definition
..causing the compiler to instantiate the
involved templates, i.e. get the complete
pipeline definition through the compiler
2012-10-10 05:20:22 +02:00
b52a1a8366 refactor JobTicket to remove the double layering
basically we had two lines of doubly nested capsules, due to
using the IterAdaptor template. Actually, the evaluation stack
within JobTicket can be considered an implementation detail and
thus doesn't require an iterator interface; the intention is to
use this through JobPlanning solely.

Thus this reworking removes the special iterator within JobTicket,
but retains the idea of exposing the "current" JobTicket through
a smart pointer or  operator->()

work done during the FrOSCon travel
2012-10-10 05:20:21 +02:00
66defdc0cb refactor JobPlanning to encapsulate all state mechanics into a "state core"
especially the exploration stack is pushed down
first successful definition of all the JobPlanning classes

just the framework of classes necessary to pass the compiler;
all implementation is still stubbed
2012-10-10 05:20:21 +02:00
a3bc69cc77 maybe a breakthrough on the job planning design quest?
why the hell is getting this design about right
such a chellenging task. Anyway, seems to be the
first step ahead after numerous failed attempts
2012-10-10 05:20:21 +02:00
88f433f433 successfully implemented another combinator strategy
DOH!
this thime hopefully I've actually succeedd to
created what is actually required in the Dispatcher
2012-10-10 05:20:20 +02:00
e073d05f58 new header to define some class partially noncopyable 2012-10-10 05:20:20 +02:00
016a739a5c WIP back to the original problem: how to dispatch jobs...
brainstorming how to implement the job planning stage

the idea is to built on top of the IterExplorer,
but have the "stack" of re-evaluation integrated
into a custom type, which exploits the static
node network structure to avoid heap allocations

solution idea: again use a builder function?
2012-10-10 05:20:20 +02:00
0e3821abeb refatcor function meta programming headers
the template _Fun started as an internal helper
for function-closure, but seems to be of
general use. Thus move it into meta/function.hpp
(function-closure.hpp is heavyweight)
2012-10-10 05:20:19 +02:00
e6a105fbc1 iterator exploring monad finished, passes unit test 2012-10-10 05:20:19 +02:00
3d0d599158 get the depth-first exploration test to work
...using the IterQueue for intermediary results
2012-10-10 05:20:18 +02:00
2c33000346 complement IterStack by a similar wrapper for queue-like access 2012-10-10 05:20:18 +02:00
8ced6758fb initial draft for recursive evaluating iterator monad
tricky design problem, because nothing is known about
the source and result sequences to be built.
2012-10-10 05:20:18 +02:00
59c5627bbe change Implementation class for IterStack
now using a std::deque directly; this allows
for a later extension for queue-like behaviour
2012-10-10 05:20:18 +02:00
41180eb99c rework to allow for recursive evaluation
this enables expansion of a (functional) data structure
until exhaustion -- which is what we need to
build job functors by traversing and expanding
an arbitrarily nested job definition structure
2012-10-10 05:20:17 +02:00
697924925c pragmatic fix for the long-standing problem of detecting increment operator
our duck-detector had a shortcoming here and failed
to detect iterators, in case the increment operator
was inherited from a mix-in
2012-10-10 05:20:17 +02:00
8db5413199 implemented chained-iterators
...using the IterExplorer building blocks
2012-10-10 05:20:17 +02:00
d14b37a71d utility class factored out and covered by test
...a stack which can be Lumiera-iterated
2012-10-10 05:20:16 +02:00
da4a343e9e refactor IterExplorer to allow for more flexible strategy definition 2012-10-10 05:20:16 +02:00
dc3ebd4a8f first working concept for an "iterator monad"
the intention is to use this to simplify
generating render jobs based on the elaborated
dependency network of the render nodes. The key
challenge is to overcome the necessity to
store partially done evaluations as
continuation
2012-10-10 05:20:16 +02:00
eedcd69941 draft the IterExplorer design
the tricky part seems to be how to combine the
source iterators into a new monad instance, while
keeping this "Combinator" Strategy configurable

...just passes the compiler, while still lacking
even the generic implementation of joining
together the source iterators
2012-10-10 05:20:16 +02:00
45f4c96c6f change LinkedElements to us a more space efficient iterator
Actually we don't need any backreference to the
container for iterating a singly linked list
2012-10-10 05:20:15 +02:00
378ebe21f0 Fix naming of Iteration control API functions (closes #410)
comes in handy now, since IterStateWrapper uses a similar API
2012-10-10 05:20:15 +02:00
83a0f4b41f Implementation (I) : IterStateWrapper as foundation (passing test) 2012-10-10 05:20:15 +02:00
ab2a6b2fce WIP brainstorming about a monadic iterator
The idea is to avoid building a data structure
for intermediary results, while still being able
to process a variably sized and arbitrary shaped
set of source data
2012-10-10 05:20:15 +02:00
fa15a38016 draft JobTicket implementation datastructure
...but need an extension on our iterator helpers
to build a suitable functional datastructure
for generating Jobs.
2012-10-10 05:20:15 +02:00
3ef1fb7697 linked list helper template finished and passes test 2012-10-10 05:20:14 +02:00
c33fcf9797 WIP draft a linked list helper template 2012-10-10 05:20:14 +02:00
ddff8b654b WIP investigating the relation of Jobs, JobTicket and Closure in detail 2012-10-10 05:20:14 +02:00
4ceec90b9e design decision how to invoke a job
without any trickery, we'll always get two indirections.
Thus, the decision is to turn the 2nd indirection
into a VTable call; this way, basically the JobClosure
also acts as job functor itself.
2012-10-10 05:20:13 +02:00
0320bc4b2c considering the relation of Job and JobClosure 2012-10-10 05:20:13 +02:00
bb43c03ef9 stub all the job generating functions required for the dispatcher interface 2012-10-10 05:20:13 +02:00
0ab773ab7c helper to pull all elements from an iterator, yielding the last one 2012-10-10 05:20:13 +02:00
5222384f8b try to circumvent ambiguity in overload resolution
we want to support various integral and rational factors
for linear chaining of time offsets
2012-10-10 05:20:13 +02:00
79bd8b71e3 better treat the building of a continuation job separately 2012-10-10 05:20:13 +02:00
08d266819d re-read my own code and pick up the design work
..next question is: how to shape the dispatcher interface,
in order to support ongoing chunk wise planning
of new jobs, including a continuation
2012-10-10 05:20:13 +02:00
080d6913c6 fix a type converison problem
...better state explicitly we're requiring
a rational factor
2012-10-10 05:20:12 +02:00
7941865d5d implement anchor against current system time
using CLOCK_REALTIME for now
2012-10-10 05:20:12 +02:00
9aec2a9806 allow for fractional scaling of time durations
implemented as extension to the linear combinations.
I decided to use the same "always floor" rule
as employed for time quantisation. Moreover,
we don't support floating point, only rationals
2012-10-10 05:20:12 +02:00
22322dfec4 refactor the division/quantisation helpers
...no need to keep them in util.hpp, as they
are used rather occasionally, while util.hpp
is used pervasively.
2012-10-10 05:20:12 +02:00
882bcf07ae define stubs for accessing the wall clock time (->Backend) 2012-10-10 05:20:12 +02:00
aa01813f52 TimeAnchor: draft calculating the start delay for rendering 2012-10-10 05:20:12 +02:00
ee1450a81a rectify frame dispatch invocation 2012-10-10 05:20:12 +02:00
393a447861 test setup: simulated build proecss results, mock model port 2012-10-10 05:20:12 +02:00
f8f011bb44 rework Job representation
make class Job a real subclass of the
job definition struct and turn the
JobClosure into a trampoline
2012-10-10 05:20:12 +02:00
0b25c2e08d Fix: missing sanity check in ScopedCollection
funny enough this possible memory corruption
didn't happen in the unit test, because my
compiler optimised the additional int field
of class SubDummy, making it the same size
of the baseclass. Now matters should be safe.
2012-10-10 05:20:12 +02:00
1e54b5d3e6 stubbing some job functions 2012-10-10 05:20:11 +02:00
db68577b4a clarify relation of Job, JobTicket and channel number 2012-10-10 05:20:11 +02:00
875342fa40 initial draft for the job representation
this draft is based on
 - Cehteh's draft for the scheduler
 - my plannings about segmentation and JobTicket

it defines "Job" as a closure which can be invoked
from plain-C, using the information in the
job descriptor datastructure
2012-10-10 05:20:11 +02:00
e9dbb3bdb1 stubs for some important components of play/engine (JobTicket...)
also touches the question how to represent the job
descriptor datastructure. @Cehteh: I've just pasted
in your preliminary data struct definitinons
from the relevant mailing list discussions.
2012-10-10 05:20:11 +02:00
568fadd526 draft some steps of the dispatch operation 2012-10-10 05:20:10 +02:00
6772e94994 implement simple constant frame timings descriptor 2012-10-10 05:20:10 +02:00
157e3b6867 test-driven brainstorming: define default timings... 2012-10-10 05:20:10 +02:00
2cb254365c some musing about timing constraints and quantisation 2012-10-10 05:20:10 +02:00
a4e3383367 turn Dispatcher into an interface 2012-10-10 05:20:09 +02:00
e581246f63 forming some entities to support the dispatch step 2012-10-10 05:19:56 +02:00
3768791c76 considerations how to connect exit nodes to external outputs 2012-10-10 05:18:58 +02:00
288b737718 dummy playback: stub the required operations 2012-10-10 05:18:58 +02:00
2eb39704fc test-driven brainstorming: how to use the dummy playback?
this is an idea how to test a test setup :)
2012-10-10 05:18:58 +02:00
7e7ecc5d51 draft: integrating an engine mock implementation 2012-10-10 05:18:58 +02:00
ec659b7141 a better way to inject the Render-Engine Mock
instead of (ab)using the Timings spect for a
runtime switch, better use the existing
MockInjector facility and thus turn the
mock engine mode into a global switch
2012-10-10 05:18:57 +02:00
24911dc990 solution to integrate an Engine Mock implementation 2012-10-10 05:18:57 +02:00
687102feb3 planning next steps: how to transform DummyPlayer into a real player 2012-10-10 05:18:57 +02:00
a8e4b57548 Comments and Doxygen improved 2012-08-25 19:20:05 +02:00
aa1eb2d7fc integrate Odin's ALSA experiments into the Lumiera build
requires ALSA as build dependency
note: Debian package is libasound2-dev
2012-01-11 07:59:16 +01:00
d2f83523ca join recent player subsystem work, SCons overhaul and documentation 2012-01-11 07:54:43 +01:00
Odin Omdal Hørthe
29394345af ALSA audio output experiment
I think it's smart to rather use ALSA directly instead of PortAudio.
ALSA is push AFAIK, and talking about it here at the hackspace, seems
like the better choice. It's a bit lower level, but anyway everything
speaks ALSA anyway. It's not like there's any reason to use PortAudio
at all. It's just an extra abstraction.

Coding for ALSA it'll also work with Pulseaudio and esd. Do people
really use other sound systems than Pulseaudio, esd or plain ALSA?
I can't think of it.

I really the idea about building a small tool first. I'll do that.

Also thought about making a small blikning cursor/text output, and
syncing a BEEP-sound to that, so that I can test around with throwing
in lots and lots of latency between "me" and the video, and try to
sync it anyway.

I should be able to read back from the sound card (or pulse audio
underneath, it will just work with alsa as the abstraction) how long
it takes for the bytes I'm pushing to reach the speakers, and do some
buffer tuning on that.
2012-01-11 07:12:32 +01:00
56ac1afe18 move Icon building down into separate SConscript 2012-01-11 07:05:01 +01:00
27db94a64c adjust code / indentation style
no functional change
2012-01-11 07:05:01 +01:00
e64a17d1ba SConstruct: reduce the remaining defs
no need to use functions anymore, since
only the clean and phony targets are left
2012-01-11 07:05:00 +01:00
f84da63e11 use import/export instead of passing an artefacts map 2012-01-11 07:05:00 +01:00
25b21fe575 reorder building/installing of Icons
no need to define them together with the source.
SCons is able to work out the real dependencies
just fine. Thus, Icons remain in Main SConstruct
2012-01-11 07:05:00 +01:00
c62eccd25f SCons overhaul/clean-up: disentangle main build
The goal is to make the build scrips more clear
at first sight. So move the main build targets
into a separate SConscript, to make them similar
to the tests, research and tools.

The final goal of this makeover is to reduce
the main SConstruct as much as possible
2012-01-11 07:05:00 +01:00
f5290a99a3 OutputSlot : simulated usage protocol passes unit test
OutputSlotProtocol_test

Some parts are still missing
 - timings
 _ initialisation
2012-01-08 03:06:32 +01:00
d732e7e211 Lumiera Forward Iterators: remove support for post-increment 2012-01-08 01:14:36 +01:00
8de4ecc8ac add diagnostic messages showing each connection access
currently the problem seems to be we're
accessing the wrong connection...
2012-01-07 21:22:35 +01:00
73cfef69c8 fix some problems with OutputSlotProtocol_test
still WIP...
 - there is a logical contradiction with the frame numbers
 - somehow, in diagnostics, we access the wrong sequence instance
2012-01-07 06:40:21 +01:00
5cc034d26b refactor ScopedCollection to use an init() function 2012-01-07 04:44:48 +01:00
e6888f7b83 supplement direct support for populating by member function
this turns out to be the typical usage scenario
for ScopedCollection: a manager object owning
the collection will populate it with specially
crafted components and invoke a member function
for creating the individual components.

This shortcut avoids using tr1::bind alltogether
2012-01-07 04:11:39 +01:00
9bba366763 investigate partial application of member functions 2012-01-07 03:28:12 +01:00
feff7537ef reduce memory requirements for this test
...it caused out of memory frequently.
2012-01-07 03:27:31 +01:00
90e6dae2d5 add includes missing in some metaprogramming headers
types uint and string
2012-01-07 03:11:51 +01:00
00c08bd27b fix helper functions not declared as inline 2012-01-07 03:11:02 +01:00
b64dff1ad8 spelling and comments 2012-01-07 00:02:03 +01:00
e41065101a switch OutputSlot to use the ScopedCollection
..hehe, makes the code way more sane
2012-01-06 03:16:22 +01:00
e5c42e05e6 finish ScopedCollection (closes #877) 2012-01-05 23:17:16 +01:00
72e8d22454 implement the RAII-style collection ctor. test pass 2012-01-05 03:40:04 +01:00
434a371c33 take ctor args by value; test attaching sub-types passes 2012-01-04 04:28:14 +01:00
690304f9bc get the simple and iteration unit tests to pass 2012-01-04 04:05:03 +01:00
fa5e7db2d3 WIP rewrite iteration-control logic... 2012-01-03 02:50:22 +01:00
6c01579a26 WIP draft implementation of ScopedCollection 2012-01-02 06:11:27 +01:00
e63fa6d646 Test-driven brainstorming: draft a ScopedCollection #877 2012-01-01 06:20:42 +01:00
f047069284 rearrange OutputSlot ConnectionStateManager
... shape the various APIs more clearly,
make most functions protected
2011-12-31 20:33:50 +01:00
06c7c27252 merge diagnostic facilities 2011-12-31 06:49:31 +01:00
37384f1b68 formatting wrapper/frontend: unit test pass.
Closes #166
2011-12-31 06:48:26 +01:00
e1b9b5b135 rewrite type selection logic to handle ptrs in the front-end
whew, quite a heavy rewrite, but greatly
simplifies the code and removes the necessity
to declare explicit specialisations of pointers
2011-12-31 06:48:11 +01:00
c8f46f47c9 handling of ptrs, first attempt 2011-12-31 06:47:58 +01:00
35ed2dcf5c add more robust error handling
...incl handling of secondary errors
2011-12-31 06:47:38 +01:00
e838fb9799 document and cover various formatting special cases 2011-12-31 06:47:30 +01:00
0d136e2703 define explicit specialisations for primitive types 2011-12-31 06:47:03 +01:00
e054c272b6 research: detecting the possibility of a string conversion
find out about the corner cases of this
simplistic implementation
2011-12-31 06:46:50 +01:00
6c95c1b0e4 format-frontend: fill in missing bits of the implementation 2011-12-28 06:42:30 +01:00
dbb63ffc08 perfer STATIC_ASSERT to check for suitable placement-New buffer size
Still incomplete, but already this small change
detected an error in the output-designation. Cough.
2011-12-28 06:42:18 +01:00
cd3c633fc0 STATIC_ASSERT to verify guessed size
... and we indeed had an error: vector<bool>
is way larger than normal vectors!
2011-12-28 06:41:47 +01:00
962c789a05 a horrible hack to guess the size of boost::format
...without actually including the boost/format.hpp
This saves us a lot of compilation time and debug code size
2011-12-28 06:41:37 +01:00
ce6fbe5f0f define how to pick the correct specialisation
some basic types are passed on directly;
for those, we use explicit specialisations
in the implementation file, and a traits template
to mark those cases in the header.

custom types with custom string conversion will
be converted to string; everything else
just becomes a type id
2011-12-27 07:45:25 +01:00
6e4883bcf1 add stub definitions to pass compilation 2011-12-27 07:45:16 +01:00
545d9ea82b WIP draft frontend for diagnostic output (#166) 2011-12-27 07:45:07 +01:00
89928bc447 refactor format-util: simplify picking the right specialisation 2011-12-27 07:44:59 +01:00
50885a065b move asside lib/format.hpp
...to make room for a new more specialised header
2011-12-27 07:44:49 +01:00
24a8d6a926 generalised diagnostic context passes unit test 2011-12-24 05:57:28 +01:00
5498ace9fc WIP define a unit-test for diagnostic context stack 2011-12-24 05:57:11 +01:00
87f7a8f6e8 unit test to cover thread-local helper 2011-12-24 05:55:31 +01:00
2bdf06829a make thread(pool) less chatty 2011-12-24 05:48:51 +01:00
451b0abec5 spelling and typos 2011-12-24 05:48:31 +01:00
d27e3b15a9 clarify the handling of specific output operation modes (e.g. number of channels) 2011-12-23 02:22:38 +01:00
7fc8473337 fix some size_t printf specs (32/64bit problem) 2011-12-19 03:02:48 +01:00
fa0588b584 refactor to simplify generating a PlayProcess 2011-12-18 02:02:55 +01:00
c4bc53b6f6 how to pass a render configuration strategy when creating a new play process 2011-12-17 22:37:53 +01:00
6852a6feff WIP refactor building of the active render feeds
RenderConfigurator becomes an internal strategy
controlled by the PlayService
2011-12-17 04:45:42 +01:00
bda0dea990 clarify the relation of PlayProcess, CalcStream and EngineFacade 2011-12-17 02:20:48 +01:00
76b24ce50d WIP draft the building of a render CalculationStream 2011-12-10 03:18:48 +01:00
8362145039 spelling and comments 2011-12-10 03:13:45 +01:00
477b443191 implement diagnostic OutputSlot simple frame tracking
...should be enough to run tests against the OutputSlot interface
2011-12-09 01:03:02 +01:00
e7ae9a3082 introduce marker time values to designate corner cases 2011-12-09 01:00:50 +01:00
aef3d50ffd implement basics of the diagnostic OutputSlot
...specific diagnostic facilities still lacking
2011-12-08 23:02:19 +01:00
07002ab3af SCons: new build target for experimental code 2011-12-03 06:10:12 +01:00
34f2de641f Remove Debian/Lenny workarounds
definitively requiring Squeeze now
2011-12-03 03:18:15 +01:00
77548e74c6 document a weakness of boost::hash for strings 2011-12-03 03:18:03 +01:00
7fd28e23eb cleanup configflags to use uint instead of char
using char for those flag template parameters
was never a good idea. It won't save us any space
and makes debugging harder
2011-12-03 03:16:08 +01:00
d9f84a9bfd clean up lib/meta namespaces 2011-12-03 03:15:59 +01:00
b2d6074097 cleanup test includes 2011-12-02 21:34:29 +01:00
b9d1899486 cleanup: rectify Proc-Layer namespaces (II) 2011-12-02 17:50:44 +01:00
eb79a00cf4 cleanup: rectify Proc-Layer namespaces (I) 2011-12-02 16:10:03 +01:00
89a9202c6c cleanup: remove precompiled headers
we don't need them and they even tend to
increase build times due to unnecessary
compound-includes at some core headers
2011-12-01 23:32:34 +01:00
c7d4412cec integrate recent GUI / timeline and work done on the player subsystem 2011-11-27 02:15:11 +01:00
d6fa67f2b8 refactor zoom smothing into TimelineViewWindow 2011-11-27 01:28:48 +01:00
a6392f5d14 review and annotate design aspects regarding zoom handling 2011-11-27 00:52:10 +01:00
d58fa9129c clean-up: remove direct access to the selection value 2011-11-26 23:32:56 +01:00
177b85ecf2 Integrate timeline work: zooming and scaling 2011-11-26 18:39:26 +01:00
7ba8ff432f BufferProvider interface finished thus far.
simulated lifecycle passes unit test
2011-11-26 00:09:59 +01:00
2fce2b1c8d make ctor-tracking test::Dummy more widely usable 2011-11-25 22:05:12 +01:00
55a77bdd73 factor out and treat the attaching of objects separately
this is an advanced feature not required
in the standard buffer usage cycle
2011-11-25 20:23:31 +01:00
ce25be6fa3 refactor relation of BuffHandle and BufferDescriptor
they are now tightly coupled and assumed to
work together; there is no need to relay half
of BuffHandle's interface through BufferDescriptor
2011-11-25 18:20:01 +01:00
d6b069fbbd clean-up after refactoring 2011-11-25 17:29:06 +01:00
eed6d8cd1e split out obsolete ChannelDescriptor for later refactoring
Meanwhile, BuffHanle became way more concrete,
making the separation of any kind of buffer or channel
type management concievable.

Thus: extract the obsolete ChannelDescriptor
and use switch at any location where the old
(superseeded) buffer handle is still referred
2011-11-25 17:16:33 +01:00
74702ebecd address the next test... 2011-11-24 03:33:23 +01:00
2ae1e3c8f9 test/dummy buffer provider finished and passes test 2011-11-21 03:26:08 +01:00
d6de8c8d1a implement some missing nits and bits 2011-11-21 02:28:44 +01:00
91b74ad7bd implement missing parts of test/dummy buffer provider 2011-11-20 01:35:52 +01:00
0a1256f4e3 cover and verify detaching from ScopedPtrVect 2011-11-19 21:41:50 +01:00
13b795016b comment rewording 2011-11-19 18:01:48 +01:00
3830ff7ce1 refactor the test/dummy provider, based on ScopedPtrVect solely
instead of using a vector directy, move the
additionally required functinoality in the
utility class. This forced me to adjust
the IterAdapter, to allow working with
STL algorithms
2011-11-19 17:51:08 +01:00
5947e0e3e1 allow to detach an object managed by ScopedPtrVect 2011-11-19 17:48:04 +01:00
1f966a02ec some rather tricky adjustments to PtrDerefIter
...allowing to use that custom iterator together
with STL algorithms
2011-11-19 17:46:24 +01:00
ca689ae5e0 WIP some musing about building an option monad 2011-11-18 01:24:43 +01:00
27449c1438 implementation details of a test/dummy provider 2011-11-18 01:23:50 +01:00
623bb401af clarify implementation extension points of BufferProvider
decide especially how to pass on the implementation
defined data like e.g. pointers to storage extents
2011-11-15 04:47:31 +01:00
d1d0f66fa8 allow LocalKey to carry arbitrary pointers or hashes as payload
...used to piggyback opaque implementation data,
deliberately no typecheck here
2011-11-15 04:46:00 +01:00
6bc94cccb5 WIP refactor BufferProvider public and protected API 2011-11-14 01:43:29 +01:00
890b6e8366 WIP implementation details of diagnostic BufferProvider 2011-11-13 04:20:14 +01:00
ca0aa23479 BufferProvider default impl: attaching a type 2011-11-12 00:36:53 +01:00
fd94367b9e stubs and changes to make the test compile 2011-11-11 23:33:59 +01:00
fe1ae51b49 WIP draft test for internal test buffer provider
a test to cover a helper for writing tests ;-)
2011-11-11 01:44:01 +01:00
f75e55a060 nail down a lot of OutputSlot implementation details 2011-11-08 02:59:56 +01:00
59dfb7c660 start drafting a (dummy) output slot implementation
this implicates a first attempt to build a
dummy buffer provider implementation.
Mostly just defining stubs here....
2011-11-07 01:57:33 +01:00
c8458ab397 improved diagnostics 2011-11-07 00:50:03 +01:00
a88ccd219d extract the diagnostic BufferProvider into separate header 2011-11-07 00:07:53 +01:00
7ab7c8073d remold OutputSlot implementation structure
Better solution where to place the extension points
to be implemented by concrete output systems
2011-11-06 02:37:22 +01:00
63dbc89b6f draft implementation setup for OutputSlot baseclass 2011-11-05 16:51:24 +01:00
d6e88c85e0 finish buffer metadata; cover state transitions
BufferMetadata complete and working for now
2011-11-02 01:34:05 +01:00
db3ea6638d use boost::random to ensure distinct test frame contents 2011-11-01 03:11:43 +01:00
931dc3f883 draft: automatically invoke an attached ctor/dtor functor 2011-10-30 05:35:36 +01:00
ccd130966b finish and pass the first round of tests
still missing:
- implementation of a Mock frame
- automatical invocation of the TypeHandler
2011-10-30 02:19:10 +02:00
e7f0211711 better solution for calculating the Key for a concrete Entry 2011-10-30 01:17:31 +02:00
f849ca62d9 implement metadata storage (hash)table
not passing all tests yet
2011-10-29 02:41:56 +02:00
c91e703682 rename the core type BufferMetadata
makes the purpose more clear, and moreover
it matches the header filename
2011-10-28 01:18:22 +02:00
c8cdf914eb review metadata storage, stub the actual access operations 2011-10-28 01:11:39 +02:00
9af0fb096f WIP draft implementation of buffer metadata creation/storage 2011-10-24 02:14:08 +02:00
c4ff87c3a8 decide about the basic way to implement concrete buffer metadata 2011-10-24 01:03:56 +02:00
76a6407a5e better formulation for the buffer metadata state machine 2011-10-23 22:07:39 +02:00
Michael R. Fisher
65a29244af The tool also needs updated on TimelineState Change 2011-10-23 09:52:12 -05:00
Michael R. Fisher
1bb584f895 Removed some TODO's 2011-10-23 04:52:30 -05:00
Michael R. Fisher
0aa3ca76d1 Created and Applied TimelineWidget::ZoomSmoothing 2011-10-23 04:45:10 -05:00
Michael R. Fisher
6c17d06e66 Timeline is no longer zoomed in to far on startup. See timline-view-window.hpp int64_t timeScale for explanation 2011-10-23 04:20:39 -05:00
Michael R. Fisher
b87b6078ad Adding TimeSpan param to SelectionListener's signal 2011-10-23 00:20:48 -05:00
Michael R. Fisher
3811183546 Added SelectionListener handling selection changing events 2011-10-22 21:53:23 -05:00
Michael R. Fisher
8ff36fc209 Timeline selection is now controlled by lib::time::Control 2011-10-22 20:27:29 -05:00
9c04637aea fix misspelling in library 2011-10-23 02:44:52 +02:00
0378f9266e fix misspelling in library 2011-10-23 02:42:25 +02:00
4acc9d247a maybe fix: try to connect the selection control the other way round 2011-10-23 02:41:57 +02:00
Michael R. Fisher
c9671b654e time::Control Integration First Commit 2011-10-22 19:03:17 -05:00
Michael R. Fisher
ca634bdd9c House Cleaning 2011-10-22 22:14:48 +02:00
Michael R. Fisher
6046749f19 Integrating time::Control into ibeam tool. 2011-10-22 21:48:57 +02:00
b39edad306 clean-up some additional mentions of boost::ref 2011-10-22 21:45:59 +02:00
4f1d7e1d3f clean-up GUI includes. Solving problems with tr1::ref vs. boost::ref 2011-10-22 21:45:52 +02:00
606251749e fix time::Control should properly include <tr1/functional> 2011-10-22 21:45:40 +02:00
2730fa8d7a a bit of stylistic cleanup
- using std::tr1::shared_ptr in namespace gui
- thus removing a lot of std::tr1 qualifications
- fix some includes. Should be relative to 'src'
- interface classes should declare a virtual dtor!
2011-10-22 02:49:30 +02:00
Michael R. Fisher
c9a0209a0b Fix ParentTrack: using std::tr1::enable_shared_from_this 2011-10-22 01:35:45 +02:00
Michael R. Fisher
9a1987ba24 Ticket #796: Switch GUI from boost::shared_ptr to std::tr1::shared_ptr.
ParentTrack and TimelineLayoutHelper need to be fixed
2011-10-22 01:26:24 +02:00
d48dc3b025 fix glitch in test definition
uncovered since rand() is now properly seeded
prior to each testsuite run
2011-10-21 02:41:20 +02:00
65b309e5cb Testsuite: automatically seed the random number generator 2011-10-21 01:09:12 +02:00
f1a4489470 Fix minor problems after merge 2011-10-21 00:58:15 +02:00
c06c49e782 Join latest GUI addions (zoom slider) and player design/implementation work 2011-10-20 04:29:14 +02:00
ca0ae9c120 stubbed relevant parts of BufferProvider and OutputSlot 2011-10-19 02:47:11 +02:00
991eec8185 draft test to simulate a complete buffer metadata usage cycle 2011-10-17 02:00:48 +02:00
1772659a00 start implementing buffer metadata records 2011-10-16 00:06:57 +02:00
011afa4be8 fix: ubiquitous constant defined in header
..resulting in that global constant being allocated a gazillion times
2011-10-15 23:41:31 +02:00
3d859c8b53 buffer metadata hash keys implemented and tested thus far 2011-10-15 22:46:08 +02:00
28c555aac7 define a type handler for attach an object to a buffer 2011-10-15 05:05:30 +02:00
2c380b5f99 draft a dedicated test for buffer metadata keys 2011-10-15 04:12:51 +02:00
1627698911 implement hash function for functor obejects. Unit-test pass 2011-10-14 14:49:55 +02:00
6baadbaef0 draft a workaround for hashing functor objects 2011-10-14 03:54:22 +02:00
3256b7fe11 implementing the hash functions for the buffer metadata content fields 2011-10-12 03:47:34 +02:00
Michael R. Fisher
f851c875ed Zoom Slider Position remains after a sequence change 2011-10-11 14:39:20 -05:00
63ba43d446 fix: TimelineBody not zooming was due to this omission in my change
silly me!
2011-10-11 01:24:39 +02:00
Michael R. Fisher
d1f07d7088 TimelineBody Is Zooming again now 2011-10-10 18:01:10 -05:00
Michael R. Fisher
540357de9f Comments added 2011-10-09 21:00:31 -05:00
Michael R. Fisher
91cc3f90a0 TimelineZoomScale::on_timeline_state_changed method implemented. Other timeline components need fixing now (seems only the ruler is zooming now) 2011-10-09 20:54:55 -05:00
fb28592082 more cleanup: use the propagated timelineState directly 2011-10-10 01:42:03 +02:00
5fe1debd5b ZoomScale: rely on the state change signal for the view window 2011-10-10 01:07:10 +02:00
5905fdf0cb change definition of TimelineStateChangeSignal
the timeline-state-change signal now delivers
the new TimelineState object immediately, instead
of requiring the listeners to pick it up
2011-10-10 00:08:50 +02:00
Michael R. Fisher
357bfaa674 Added pointer to TimelineViewWindow in TimelineZoomScroll 2011-10-09 15:34:21 -05:00
2477f2e682 outline of building a hierarchy of hash keys for buffer metadata 2011-10-09 16:03:51 +02:00
d9f64c94bf simple demo using a pointer and a struct 2011-10-09 14:52:58 +02:00
7ea9afd1bb first attempt to implement buffer metadata...
...leading to refactoring
2011-10-09 04:20:56 +02:00
3acf804988 flesh out the buffer metadata API
functionality just stubbed still
2011-10-08 02:21:29 +02:00
caace00dd5 Review the new TimelineZoomScale widget code 2011-10-07 03:49:51 +02:00
Michael R. Fisher
e0463da204 Added TimelineZoomScale widget 2011-10-06 22:58:50 +02:00
Michael R. Fisher
c79b28fe7c Replacing zoomIn and zoomOut buttons in the TimelinePanel with a new TimelineZoomScale widget 2011-10-06 22:49:20 +02:00
4df45c44e9 BufferMetadata: some musing about how to access the Allocator 2011-10-06 21:55:00 +02:00
7459c0a41f (cont) buffer metadate implementation
state transitions etc
2011-09-26 02:19:31 +02:00
f505c46d1d finish simple allocator frontend. Unit-test pass 2011-09-25 19:26:12 +02:00
5350ef6dbe split off and test-cover simple typelist utils
these simple utils (length of typelist, maximum size
containment test) are mostly not used in conjunction
with the more elaborate typelist manipulatino utils.
Moreover, we lacked a dedicated unit test
2011-09-25 19:26:11 +02:00
057f32e15b rename the typelist-manipulation header 2011-09-25 19:26:09 +02:00
db2b02f0c5 define a front-end for explicit allocations
...currently just defined by forwarding
to std::allocator
2011-09-25 19:26:09 +02:00
bc756e42d9 rewrite (planned) test to reflect the new metadata design 2011-09-25 19:26:09 +02:00
1ea3cba2f5 remold the buffer metadata into a PImple used by BufferProvider 2011-09-25 19:26:08 +02:00
8a2c94014c extract buffer metadata handling into separate entity 2011-09-25 19:26:08 +02:00
7ef85065ba impl: buffer provider metadata... 2011-09-25 19:26:08 +02:00
5b6ecbab1c start diagnostic buffer provider implementation 2011-09-25 19:26:07 +02:00
cafe271830 stubbing of basic buffer provider functionality 2011-09-25 19:26:07 +02:00
ca615b9933 start stubbing some of the functionality planned thus far 2011-09-25 19:26:07 +02:00
32f71cba6d more test-driven brainstorming 2011-09-25 19:26:06 +02:00
e1248d195a move asside obsoleted code
...will be removed soon, when reworking ProcNode
2011-09-25 19:26:05 +02:00
1f13931640 test driven brainstorming: using a BufferProvider 2011-09-25 19:26:05 +02:00
8016547d9c rework and clarify node invocation sequence
while passing by, identified quite some
node invocation code to be rewritten
2011-09-25 19:26:05 +02:00
95bb5e64aa WIP desiging the interplay of BufferProvider and BuffHandle 2011-09-25 19:26:05 +02:00
0706b83a46 fix a warning 2011-09-25 19:26:04 +02:00
d1a5b9a914 main: temporarily disable dependencies...
disable dependency declarations for subsystems
not yet implemented, to allow the lumiera executable
to start up
2011-09-25 19:26:04 +02:00
7efde06569 some stubs to make it compile... 2011-09-25 19:26:03 +02:00
737765260d Test-driven brainstorming: diagnostic adaptor for the engine 2011-09-25 19:26:03 +02:00
3125d1c573 a first draft for the Engine Interface 2011-09-25 19:26:03 +02:00
d1b6f7a57b polymorphic value builder functions: how to take arguments
Previously, I've added an additional '&' to be able
to pass references without much ado. This turned out
to be problematic when using constant values at the
invocation site. Well. C++ has really a fixation
ont passing things by value. This is fine, but
doesn't play so well at times when passing smart-ptrs
or similar ref-counting stuff, especially when we just
want to *use* the handle, not store it away.
Essentially the same situation as with for_each

Bottom line: from now on, we need to state the
template parameter for such arguments explicitly,
or just accept the overhead of creating an additional
transient copy of the smart-ptr.
2011-09-25 19:26:03 +02:00
1e7da409bb Fix logic error uncovered by GCC 4.4
benefits of using a newer compiler, yay!

Explanation: the Link<...> template combines
various policy templates and exposes a set
of functions, which can be bound as functor
into an concrete time::Control instance.

Actually, we need to mix in only the Mutation
baseclass, because we just want to inherit
the privilege to change time values, which
are otherwise immutable. We don't need to
mix in the Mutator template anymore (this
was a leftover from an earlier design)
2011-09-25 19:26:02 +02:00
4a62444ad4 WIP pick up on the design work regarding Engine, OutputSlot and Player 2011-09-25 19:26:02 +02:00
f8842c75ed WIP draft OutputSlot internal transitions 2011-09-25 19:26:01 +02:00
7adb8149db back to test-driven brainstorming again 2011-09-25 19:26:00 +02:00
a199bff92b BufferProvider as a frontend to buffer management 2011-09-25 19:26:00 +02:00
650e73c454 OutputSlot: draft buffer handover protocol, remove the diferent models 2011-09-25 19:25:59 +02:00
f46cc26851 factor out convenience shortcut
transform iterator and wrap result into IterSource
2011-09-25 19:25:59 +02:00
585adb88b6 Refactoring: use the output Feed as intermediary construction step 2011-09-25 19:25:58 +02:00
511d08adad WIP: bilding a PlayProcess... 2011-09-25 19:25:58 +02:00
9e53053944 WIP: draft building a PlayProcess 2011-09-25 19:25:58 +02:00
dea1fa57a2 draft play process structure; clarify handling of multiple channels 2011-09-25 19:25:58 +02:00
a19562942c further considerations regarding output and output slots 2011-09-25 19:25:57 +02:00
4ece135257 cont.. drafting OutputSlot 2011-09-25 19:25:56 +02:00
ce6a917b59 first draft spec for the OutputSlot 2011-09-25 19:25:56 +02:00
a379476414 create outline of PlayService, add stubs for Play::Controller 2011-09-25 19:25:56 +02:00
1b0cb56dcc implement PlayOut subsystem and draft OutputDirector 2011-09-25 19:25:55 +02:00
971dea6f6a PlayService: basic definition and link to facade 2011-09-25 19:25:55 +02:00
2099ecbcac finish and comment the new time::Control facility 2011-09-25 19:25:55 +02:00
f4d0d23e48 clean up leftovers from the first implementation attempts 2011-09-25 19:25:54 +02:00
fec2d25b52 additional quantisation and duration canges covered and passing test 2011-09-25 19:25:54 +02:00
15a3694cca more complete unit test pass 2011-09-25 19:25:54 +02:00
b54cd2c722 cont. defining time::Control special cases
the refactoring seems to work out OK, was able
to cover all the cases defined thus far....
2011-09-25 19:25:53 +02:00
9bd96a1b19 time-entities refactoring: Duration isn't an Offset
removed that inheritance relation; it was a typical
example of abusing inheritance and violated the
Liscov substitution principle. It is sufficient
to allow promotion of an offset into a Duration.
Note: Duration is the time metric
2011-09-25 19:25:53 +02:00
7c5f18643b cont. reworking based on that idea; refactor mutation base cases 2011-09-25 19:25:53 +02:00
d39ae8afc6 idea for better organisation of the template specialisations 2011-09-25 19:25:53 +02:00
a8fd0bf7c5 better avoid throwing and use a default time grid in some cases 2011-09-25 19:25:53 +02:00
47afbbeab0 first attempt towards covering the various special cases
the intention is to generate most combinations from
generic template cases, but to define the difficult
cases by explicit specialisation
2011-09-25 19:25:53 +02:00
eed2b0f320 time::Control simple unit test pass 2011-09-25 19:25:52 +02:00
c96cd66688 draft implementation for time change and propagation 2011-09-25 19:25:52 +02:00
27533c3bb9 WIP darft usage for the new time::Control (life change) element 2011-09-25 19:25:52 +02:00
5e8a9b50d1 define asset::Viewer 2011-09-25 19:25:52 +02:00
b25d85e1dd ProcNode hierarchy cleanup 2011-09-25 19:25:52 +02:00
ae36b2d941 stubs and adjustments to get it through the compiler 2011-09-25 19:25:52 +02:00
786ecbe829 WIP draft test helper for generating test cases (Cartesian product) 2011-09-25 19:25:51 +02:00
eb5e0ab9ff WIP: start building a Test for time::Control. Need Cartesian product of cases... 2011-09-25 19:25:51 +02:00
9004818d63 further planning the features of time::Change 2011-09-25 19:25:51 +02:00
4731afefb8 continue drafting the Player control elements -- life timevalue changes 2011-09-25 19:25:50 +02:00
c091b8e260 define Player / Output subsystem stub 2011-09-25 19:25:50 +02:00
20f95ca26f draft the player facade interface 2011-09-25 19:25:50 +02:00
cb6453afe1 detailed planning how to build the player subsystem
key idea is to grow and rework the design of the
DummyPlayer to yield the full featured Player
2011-09-25 19:25:49 +02:00
899ffa60ca WIP create (planned) new entities for the player subsystem 2011-09-25 19:25:49 +02:00
4a53ef4cd0 Clean-up: change some long standing TODOs into tickets
makes the test logs way more readable

Believe me: no one will ever notice a "TODO"
entry in the logs, when it showed up for
more than some months.

Thus I've created some new tickets, mostly
tagged as "QA" and placed the ticket number
at the corresponding locations in the source
2011-09-25 19:16:33 +02:00
Stefan Kangas
e34bb5ead1 Fix autotool build again, still fails on setup.ini 2011-09-15 04:35:08 +02:00
e103b4d8aa SCons: fix error in linking executables
a long standing error, uncovered recently due to more stringent
checks of the linker on newer platforms, not picking up direct
dependencies of an executable transitively from the linked-to
dynamic libs (which is fine).

The error was to *overwrite* the LIBS construction variable
in the definition of the executable to link, instead of just
adding our dynamic links to the sources to be linked.
2011-07-25 00:36:53 +02:00
49d5a9592a Fix drop-frame: remove float framerate 2011-05-21 07:09:22 +02:00
36cfaaa14d REVERT tmpbuf implementation to the state of July.2010 (bc989dab)
The new implementation provides differentiated buffers,
but is still buggy and causes double free alarms on shutdown
See Ticket #683
2011-05-21 06:52:39 +02:00
2dde33ec42 remove unecessary double calls to lumiera_config_destroy()
config system is initialised and closed automatically
2011-05-21 06:52:25 +02:00
1aafb07a43 fix remaining issues turned up by switching the time handling 2011-05-20 03:39:07 +02:00
51fa9fe735 MediaFactory now using MediaAccessFacade to determine media Duration 2011-05-20 02:59:29 +02:00
12f43078a2 fix some names 2011-05-20 02:17:20 +02:00
4b4fcb0c80 use (and verify) this with the MediaAccessMock_test 2011-05-20 02:02:14 +02:00
e5e6264493 technique to install a mock service temporarily 2011-05-19 23:21:50 +02:00
a207a9f003 adapt Media-Access (+Mock) to include an overall Duration 2011-05-18 01:37:33 +02:00
7656e5d500 adapt GUI to use the new Time framework 2011-05-16 08:38:01 +02:00
042598f04c adapt Core + Proc to use the new Time framework 2011-05-16 08:37:36 +02:00
ef126283eb add symbolic constant for "neutral" time.
Note: it's rather arbitrary choosen,
because any time grid can define its own origin.
You must not assume that the origin of any time axis
is located at Time::ZERO !!
2011-05-16 04:37:03 +02:00
481875a78a add check for time point contained in TimeSpan 2011-05-16 04:02:26 +02:00
b9861ef88f WIP completely remove the old Time wrapper 2011-05-15 22:51:02 +02:00
ee5c9910e1 dry-run: switch the lumitime-test.cpp to use the new Time framework 2011-05-15 22:10:26 +02:00
99bf3c6d81 join with latest work on timecodes and frame quantisation
Merge branch 'timequant' into gui
2011-05-15 04:28:20 +02:00
4bf53bba0f code unit test to demonstrate full time/timecode usage cycle 2011-05-15 04:19:27 +02:00
f85c86d6c8 parsing fractional seconds: unit test pass 2011-05-15 04:19:27 +02:00
c7bb7154a7 draft a test to cover parsing of timecode values 2011-05-15 04:19:27 +02:00
6b1b6cb805 draft how to integrate parsing of timecode formats 2011-05-15 04:19:27 +02:00
3139fb7f1e more 64/32bit fun 2011-05-15 04:19:27 +02:00
10215948a5 Fix another 64/32bit loss-of-precision problem 2011-05-15 04:19:26 +02:00
ccd40c3fee better use a dedicated 'materialise' operation on the Quantiser 2011-05-15 04:19:26 +02:00
80f7dba334 WIP some comments and considerations 2011-05-15 04:19:26 +02:00
11137f7634 provide implementation of the nudge-Mutation 2011-05-15 04:19:26 +02:00
af1561068e definitions and stubs to make it compile 2011-05-15 04:19:26 +02:00
bf61ff7248 WIP test-driven brainstorming: nudge by grid 2011-05-15 04:19:26 +02:00
2035405251 add time Mutation to adjust by offset 2011-05-15 04:19:26 +02:00
baf601c16b first time mutation test cases pass 2011-05-15 04:19:25 +02:00
5851332628 back to business: now able to implement time mutation messages 2011-05-15 04:19:25 +02:00
6fa11ffcf6 special case: support cloning, but not copy
needed to add yet another policy template,
so PolymorphicValue doesn't invoke the
assignment operator in such cases
2011-05-15 04:19:25 +02:00
6daf14211b Finish the PolymorphicValue support template 2011-05-15 04:19:25 +02:00
710ae8fa0f Allow for improved performance in special cases
Using a policy based switch in case the client
interface collaborates and provides copy operations;
in this case, a direct static downcast instead of
the expensive indirect (dynamic) cast to the
management interface can be employed.
2011-05-15 04:19:25 +02:00
9aa601d004 WIP first implementation version of PolymorphicValue holder template 2011-05-15 04:19:25 +02:00
eb733df1bb proof-of-concept: implement simple mutation 2011-05-15 04:19:24 +02:00
4d6bb3d54c design outline for a limited time::Mutation capability 2011-05-15 04:19:24 +02:00
9364d717b0 implement total order on time intervals 2011-05-15 04:19:24 +02:00
9eb4f66372 draft more convenience handling for TimeSpan 2011-05-15 04:19:24 +02:00
eafbd4b1cb fix a comment 2011-05-15 04:19:22 +02:00
Christian Thaeter
d4bb6cc906 fnv hash functions and tools 2011-04-29 04:04:01 +02:00
Christian Thaeter
e6cc7d3f99 WIP: autotools catchup, make it build again
Lumiera builds again, but some tests are missing and the new setup.ini
isn't loaded correctly which makes the plugin loader fail.
2011-04-28 13:14:29 +02:00
1e1c3706dc update some DIR_INFO entries 2011-04-05 00:44:30 +02:00
b843546922 cumulated build/release fixes
up to corresponding debian/0.pre.01-3
- compile issue (digxel.hpp)
- SCons missing config dependency on test-only
- 32/64bit fixes
2011-03-31 18:43:50 +02:00
dca5b81710 Fix: problems whith bare $ORIGIN without relative dir
actually the iterator was written quite contrieved;
now doing the token replacement as a separate first
step -- makes matters way simpler
2011-02-15 00:16:50 +01:00
aef929b3d9 better install the setup.ini direcly into $ORIGIN
seems to be the most obvious location to install it
2011-02-14 23:54:31 +01:00
cef1ff3dcc Fix: extract empty path relative to $ORIGIN 2011-02-14 23:54:30 +01:00
65d28b4018 Gui: rework resource loading to make the application fully relocatable 2011-02-07 09:56:27 +01:00
87c70d0b1f Gui: some typedefs for Glib::ustring
...helps to write way shorter signatures
2011-02-07 09:56:08 +01:00
421a81b25b Gui: WindowManager and GtkLumiera refactoring
- split off the tricky basic GTKmm includes
- reduce the clutter in the gtk-lumiera.header
- make GtkLumiera a singleton, placed into static memory
- remove all static functions from WindowManager
2011-02-07 09:55:57 +01:00
29e67e828d remove NoBug resourcetracker and switch back to plain pthreads
due to desing shortcomings, the resourcetracker
produces lots of false positives and inhibits
any further diagnostics regarding GUI startup.
2011-02-07 09:55:39 +01:00
88678209bc use setup.ini to retrieve the modulepath and configpath
connect config-facade with the new BasicSetup implementation
to fetch values from setup.ini, instead of the (not implemented)
Config-system. Hook this new lookup mechanism into the
plugin loader to retrieve the search path from there
2011-02-06 05:06:16 +01:00
87475fa3c1 Fix usage of field named "new" in configitem.h
This prevents including config.h into C++ code
2011-02-06 02:39:34 +01:00
11d709b85e incorporate basic setup.ini into the AppState object 2011-02-06 02:12:00 +01:00
e84ceec9b5 refactor some lib facilities
- Cmdline into namespace lib
- test coverage for the SearchPath iterator
2011-02-05 23:53:37 +01:00
e73bea379c Adjust some Copyright headers
List of years instead of a range is better
2011-02-05 20:56:51 +01:00
ad246ad31d Merge Buildsystem adaptations for installing Lumiera
- use custom builders
- clean up specification of target paths
- generated executable is fully relocatable
- read a bootstrap INI instead of compiled in searchpath
2011-02-05 15:54:24 +01:00
51ef755a4f Merge Timehandling draft and GUI DrawStrategy and TimelineEntiy refactorings
Merge branch 'gui' into install
2011-02-05 14:30:11 +01:00
babbe33d1d Demonstration of complete bootstrap, loading INI and resolving GUI module path 2011-02-04 16:10:59 +01:00
a42e6a5a8f draft solution loading an INI file for module path resolution
this would remove the need to compile any path into the EXE
2011-02-03 17:34:24 +01:00
208b552955 Demonstration how the application could resolve the module loading location
The real application likely will consult the configuration file
to search alternative module installation locations.
2011-02-01 05:10:45 +01:00
29e2233e6a an exercise: how to get the path of the current executable
Note: this is a non-portable Linux solution
2011-01-31 05:35:43 +01:00
abf1bc776b SCons: remove all explicit target and install specifications
now superfluous, because our custom builder handles that automatically
2011-01-30 18:56:51 +01:00
609873d90b switch to use the new (better) builder implementation
especially this means to use the common well-known names again,
like "Program" "SharedLibrary". The customisation now happens
invisible in LumieraEnvironment.
2011-01-30 17:00:15 +01:00
014c22b40a SCons: rework build directory configuration. All customisations to LuimieraEnvironment 2011-01-30 15:27:21 +01:00
35953b335b SCons: rearrange output directory to target/modules 2011-01-29 02:06:21 +01:00
764a38abe6 SCons: experimental support for some library lookup concerns
- setting -rpath with $ORIGIN  to build a relocatable package
 - fix missing DT_SONAME (likely just a problem of very old SCons version)
2011-01-28 23:31:00 +01:00
faf579c4c5 enforce generally imutable time values 2011-01-22 23:20:12 +01:00
69eb659d4e refactor to extract a special "flip representation" operation 2011-01-22 18:33:15 +01:00
acc7a19fbd Fix: now able to handle negative extended SMPTE
changed the order of propagation when wrapping
the individual digxels of the SMPTE Timecode
2011-01-22 14:41:58 +01:00
ac9e9a99df change the way the Digxel mutator is invoked
this refactoring prepares a change to address
the problems with negative extended SMPTE Timecode
2011-01-22 14:04:43 +01:00
14f233f83b WIP: some more test coverage ... unveiling yet more bugs 2011-01-22 02:35:58 +01:00
9d75739089 SMPTE Timecode (without drop frame) unit test pass 2011-01-21 20:24:41 +01:00
1a07cc9bb2 SMPTE Timecode: first round of debugging and testing 2011-01-21 16:22:01 +01:00
0493caac1d first complete implementation of SMPTE timecode
first integration of the various components
developed thus far; design still needs some
improvements, esp. regarding the effectiveFramerate
Note NTSC-drop-frame not yet supported...
2011-01-21 11:42:29 +01:00
f930703e86 WIP draft cascading breakdown of time into timecode components
TODO not entirely correct... and how to access the framerate?
2011-01-20 22:17:25 +01:00
c55260d4e4 generalise to long and int; improve test coverage 2011-01-20 21:30:48 +01:00
05383ea44a crafting a integer scale wrapping util, for timecode conversions 2011-01-20 13:21:14 +01:00
e1c025778b Digxel: ensure the mutator functor is also called on increment 2011-01-19 11:47:14 +01:00
c3d0fda495 remove superfluous type qualifier 2011-01-19 11:32:38 +01:00
5418902442 remove superfluous default parameters from Tuple constructor function 2011-01-19 11:32:27 +01:00
9df0df6145 Merge Stefan's work on timeconversion and SMPTE drop-frame 2011-01-19 11:32:03 +01:00
Stefan Kangas
551ec8f011 Remove preconditions requiring correct formatting of input times in time lib.
For example, one could not specify minutes > 59 nor milliseconds > 999.  Other
parts of the code however relied on the fact that one could give arbitrary times
in all fields (hours, milliseconds and minutes).
2011-01-19 11:10:39 +01:00
Stefan Kangas
6a44134833 Add support for NTSC drop-frame timecode. 2011-01-19 11:10:39 +01:00
Stefan Kangas
94f8379aa2 Improved frame counting capabilities for time lib. Unit tests. 2011-01-19 11:10:39 +01:00
Stefan Kangas
d2702e8254 Add frame counting capabilities to time conversion lib. 2011-01-19 11:10:39 +01:00
95a1687a5b draft how a SMPTE-Timecode element could be implemented
passes Compiler, but thats about all...
2011-01-18 05:01:25 +01:00
ce420a1570 special digxel to represent the sign 2011-01-18 04:59:40 +01:00
38844b9050 get simple quantisation/timecode integration to run
passing the basic tests now;
still missing: implementation of specific timecodes,
e.g. SMPTE, HMS,....
2011-01-17 07:25:22 +01:00
02653621f6 adapt the TimeGrid meta asset, so it can be published as Quantiser 2011-01-17 06:38:10 +01:00
484c771d2a establish hidden advice link to the session 2011-01-16 23:58:42 +01:00
71a80d3df6 integrate check for supported formats into Quantiser 2011-01-16 22:19:48 +01:00
92c4516cae implement this format-support descriptor 2011-01-16 19:50:42 +01:00
2c90335b1d WIP idea how to represent support for some timecode formats
concrete quantiser instances need a way to state
support for just some timecode formats -- yet I dont
want to push vectors aroud all over the place
2011-01-16 15:41:34 +01:00
aa5c78a30f TimeGridBasics_test pass 2011-01-15 15:04:23 +01:00
240c5ac232 extract asset iostream display into separate header 2011-01-15 14:43:50 +01:00
a70376dc4b grid asset passes first basic unit test! 2011-01-15 14:07:25 +01:00
8bc5bf88c9 fill in the missing parts to create a grid asset 2011-01-15 13:10:02 +01:00
ee0dcf3ba0 introduce generic grid API to subsume quantiser and grid asset 2011-01-15 03:49:35 +01:00
bdc1800470 add support for offset linear combinations 2011-01-15 01:45:55 +01:00
eb89547265 get rid of the QuantiserRef
this is going to become soooo complicated
better just bite the bullet and use a shared_ptr
2011-01-15 00:52:02 +01:00
Stefan Kangas
2fba7aba2c Move draw functionality to timeline::Entity base class 2011-01-14 18:46:41 +01:00
Stefan Kangas
1c284fb497 remove three unnecessary #includes 2011-01-14 18:36:26 +01:00
Stefan Kangas
a127ec7873 fix three #include paths for cairomm 2011-01-14 16:57:34 +01:00
Stefan Kangas
e947d6f053 Add DrawStrategy object for timeline entities 2011-01-14 16:57:34 +01:00
Stefan Kangas
944406f4a3 Remove redundant '*' in many doxygen style comments 2011-01-14 16:57:34 +01:00
Stefan Kangas
62a05d003c add new baseclass Entity for things placed on timeline 2011-01-14 16:57:34 +01:00
Stefan Kangas
7f615d734f WIP: make clips selectable in timeline 2011-01-14 16:57:34 +01:00
Stefan Kangas
5c4992310e several style fixes, underscore to camel case 2011-01-14 16:57:34 +01:00
Stefan Kangas
7500732976 Move Clips for ClipTracks to the GUI model. 2011-01-14 16:57:33 +01:00
Stefan Kangas
3f4c7a5e46 Spelling and style fixes 2011-01-14 16:57:33 +01:00
Stefan Kangas
aed9193cfa Move clip name and duration to GUI model. 2011-01-14 16:57:33 +01:00
Stefan Kangas
c01d6dbd0b Move Track enabled/locked state to GUI model. 2011-01-14 16:57:33 +01:00
457d4fb7c4 define or stub to get it to compile; add function time-from gridnr 2011-01-14 05:33:50 +01:00
a1f2a60427 WIP design draft regarding the interplay of quantisation and timecode 2011-01-13 23:56:52 +01:00
debe032f49 basic quantisation now working and covered by unit test 2011-01-13 03:36:12 +01:00
e2cab1f512 some more smoothing of rough edges 2011-01-13 03:36:12 +01:00
c7a887a528 Quantiser basic unit test pass, including corner case
ufff... finally
2011-01-13 03:36:12 +01:00
edc2598f27 cover additional time handling convenience shortcuts 2011-01-13 03:36:12 +01:00
af9c799fc8 Fix time quantisation to circumvent the precision problem
required to re-arrange several functions in order
to use the new util::floordiv and to get all relevant
calculations into time.h
2011-01-13 03:36:12 +01:00
237d287021 change time.h into a multilingual header 2011-01-13 03:36:12 +01:00
71aacc7698 implement an Integer-floor function for time quantisation
Contrary to the built-in division operator, this
function always truncates towards the next smaller
integer (also for negative numbers)
2011-01-13 03:36:11 +01:00
52eb4c4709 set an explicit artificial limit on the allowed time range
this is the first building block in an attempt to
protrect against time wraparound. The intention is
not to be airtight, but practically effective.

A really airtight solution would require writing
our own SafeInt class
2011-01-13 03:36:11 +01:00
3cf9974211 provide unary minus to flip a TimeVar around origin 2011-01-13 03:36:11 +01:00
d30515c37e analysis of range limit problems in quantisation 2011-01-13 03:36:11 +01:00
48b3f39c49 improve and cover Time convenience handling shortcuts 2011-01-13 03:36:11 +01:00
b66b778c42 implement and test simple demo quantiser 2011-01-13 03:36:11 +01:00
dede87d384 implement basic quantisation operation for timehandling library 2011-01-13 03:36:11 +01:00
84c73c645d draft unit-test to cover basic quantiser behaviour 2011-01-13 03:36:10 +01:00
c85f7e0715 Add more special formatters and Digxel testcases
The Digxel implementation draft can be considered complete now
2011-01-13 03:36:10 +01:00
8e90b3d5dc Digxel unit test pass 2011-01-13 03:36:10 +01:00
159d3928d8 Timecode stub implementation...
now passes Compiler and Linker again
2011-01-13 03:36:10 +01:00
031f61f31d WIP prototypical Digxel implementation complete 2011-01-13 03:36:10 +01:00
e66bed65e4 WIP stubs for timecode string representation 2011-01-13 03:36:10 +01:00
2edaae5c5b simplify util::isnil implementation
doh!
2011-01-13 03:36:10 +01:00
25d7af449e WIP adapt / rewrite Digxel implementation 2011-01-13 03:36:10 +01:00
e7f5ce9e33 WIP rework timecode format hierarchy
second try: eliminate base class,
work with concrete formats allways...
2011-01-13 03:36:09 +01:00
336264a6be WIP first implementation draft for Digxel -- problematic
This draft highlights problems with poliferation of
generated virtual methods (code bloat). Also it's
unnecessarily complex and especially the automatic
conversion to double *and* int creates a whole
shitload of problems....
2011-01-13 03:36:09 +01:00
b19fd1e634 WIP rework and adjust "Digxel" draft 2011-01-13 03:36:09 +01:00
6638120ec2 WIP test-driven dreaming... inventing a "Digxel" entity 2011-01-13 03:36:09 +01:00
607c8a2338 WIP enough stubbing to get it through the Compiler...
...but NOT yet the linker
2011-01-13 03:36:09 +01:00
62f9e84f2d reduce the prerequisites of trait.hpp
the AssignableRefWrapper is not in use anymore...
by not pulling in wrapper.hpp, we avoid <functional>
2011-01-13 03:36:09 +01:00
c40ba74bc6 WIP clarify ambiguity with fractional seconds
They are *not* intended to stand-in for gavl_time_t
Indeed, Time values should be handled as opaque
2011-01-13 03:36:09 +01:00
15214cc069 WIP start stubbing and defining time quantisation and timecode entities 2011-01-13 03:36:08 +01:00
f798428428 WIP start a unit test to cover simple time grids 2011-01-13 03:36:08 +01:00
04db5655f1 Implementation: building a simple time grid 2011-01-13 03:36:08 +01:00
640d061de6 Meta Assets as a framework for specifiyng a TimeGrid 2011-01-13 03:36:08 +01:00
3d4227d374 cover offsets, durations and timespans by unit test 2011-01-13 03:36:07 +01:00
f7588c36c4 basic time value entites defined roughly complete 2011-01-13 03:36:07 +01:00
ebd93b0f12 fix inclue path error pointed out by "esevece" 2011-01-13 03:35:22 +01:00
643859f6b8 add a mutable time value with full arithmetics 2010-12-28 02:27:42 +01:00
0c45fc47f3 defining the first elementary operations for time values 2010-12-28 02:27:41 +01:00
9d91869098 move Variant to lib namespace, a bit of cleanup and clarifying the code 2010-12-28 02:27:41 +01:00
09d400d5bc put asside the existing "lumitime" to build a new hierarchy from scratch
existing code will still use lumitime.hpp for now
while we're about to reorganise time handling altogether
2010-12-28 02:27:41 +01:00
Stefan Kangas
7a5ed1220d Replace relative #include paths with absolute paths. 2010-12-27 05:50:40 +01:00
784b094fa7 fix compilation problems with draft code 2010-12-26 23:00:34 +01:00
c1be39eacb Merge recent time quantisation analysis
Merge branch 'timequant' into proc
2010-12-26 22:30:28 +01:00
Stefan Kangas
bdb9832f29 Rename "Resources" to "Assets" 2010-12-26 22:30:07 +01:00
Stefan Kangas
86c7003d6d Commit CairoUtil class forgotten in commit 60ccdd. 2010-12-26 22:19:09 +01:00
Stefan Kangas
fffb1b89da Fix compilation problems on the buildserver, cont. (Ticket #735) 2010-12-26 09:55:34 +01:00
Stefan Kangas
60ccdda018 Replace several uses of GdkColor with Cairo::SolidPattern. 2010-12-25 21:29:53 +01:00
Stefan Kangas
063e5887b4 Fix Ardour Timecode widget: compilation problems on the buildserver. (Ticket #735) 2010-12-25 04:39:30 +01:00
Stefan Kangas
87ad80f17e Fix typos. 2010-12-24 23:19:04 +01:00
Stefan Kangas
e0da4c2378 Make Timeline default to Arrow Tool instead of Ibeamer Tool. 2010-12-24 23:10:00 +01:00
Stefan Kangas
0594ea26ad Make Timeline Arrow Tool use the standard left cursor. 2010-12-24 22:46:22 +01:00
Stefan Kangas
1166339387 Use Time instead of gavl_time_t in the timecode widget. 2010-12-24 19:39:12 +01:00
Stefan Kangas
799a8188de First implementation of track visible in timeline. 2010-12-24 19:34:25 +01:00
Stefan Kangas
74fce587bd Fix several incorrect comments (refering to the wrong file). 2010-12-24 19:34:25 +01:00
f18226e8ac WIP start drafting simple time values, offsets and intervals
questions: what is mutable / immutable?
what is the distinction between TimeValue and Time ?
what conversions make sense?
what mutations / operators to support?
2010-12-22 04:49:57 +01:00
000486e126 WIP create empty unit tests for time quantisation/handling 2010-12-22 04:09:27 +01:00
Stefan Kangas
a6fd1ec6fd Give names to the default ClipTracks in the GUI test code. 2010-12-21 09:52:27 +01:00
cce72e611e WIP: new namespace and compliation units for time quantisation
namespace lib::time
lumitime.cpp will define the basic time wrapper
quantiser.cpp the grid alitnment and formatting wrapper

header for
- timevalues / ranges
- quantised time valuse
- timecode valuse

"lumitime.hpp" will contain the interface facilities
2010-12-21 02:05:13 +01:00
e1708f33b9 Merge testsuite and builder changes from Lumiera master 2010-12-18 02:30:02 +01:00
459b1a061f Autotools fixes 2010-12-18 02:22:25 +01:00
2c992a1a4d Fix a printf warning in GUI 2010-12-18 01:01:27 +01:00
7fc462209e some naming cleanup and namespace indentation fixes 2010-12-18 00:58:19 +01:00
3f1b7651e9 GPL header whitespace 2010-12-17 23:28:49 +01:00
4410830f72 Merge Fixture datastructure and Testsuite work 2010-12-17 22:51:27 +01:00
Stefan Kangas
46d4b4ac66 First version of timecode widget adapted from Ardour. 2010-12-17 19:28:10 +01:00
e7191ed3c6 Planning Fixure: Segmentation datastructure (#726) 2010-12-13 03:22:11 +01:00
c4282560ce fix two regressions 2010-12-12 01:53:23 +01:00
8a54e00b6b ModelPort registry unit test pass (closes #727) 2010-12-11 23:40:12 +01:00
be6f555e04 Builder: registry for model ports coded up
passes compiler, but not yet unit test....
Needed to change asset::ID to encapsulate the embedded hash value
2010-12-11 01:52:02 +01:00
0464ca965c fill in ModelPort and ModelPortRegistry definition stubs
making test pass the compiler
2010-12-10 18:12:56 +01:00
7043db90ee introduce an explicit StreamType::ID 2010-12-10 17:39:39 +01:00
9c86deb18c augment asset ID: automatic conversion, typed NIL ID constants 2010-12-10 15:29:43 +01:00
2827961385 WIP: test driven brainstorming about model port registry 2010-12-10 01:27:17 +01:00
8802beb753 rereading (and rewrapping) the builder/engine code...
started this a long time ago, then got sidelined....
2010-12-09 22:43:32 +01:00
Stefan Kangas
41e6750163 Move time conversion logic from lumitime.cpp to time.c 2010-12-06 16:18:54 +01:00
Stefan Kangas
cc95c0df97 Fix two minor typos 2010-12-06 13:46:50 +01:00
Stefan Kangas
2909804538 Add preliminary implementation of a menu option Window/Close Window 2010-12-06 13:40:32 +01:00
Stefan Kangas
df15c3d654 Change format of placeholder in About/Credits to stop it from being a clickable link 2010-12-06 03:41:07 +01:00
Stefan Kangas
9a881c95df Enable lock/unlock and disable/enable individual tracks in the GUI 2010-12-06 03:40:15 +01:00
ee56ab36a0 Definition of ModelPort, model port reference and -table (#718) 2010-12-05 02:46:37 +01:00
145ad6c3a5 more (trivial) cleanup and renaming 2010-12-05 02:46:37 +01:00
828206e6b1 OutputMapping unit test pass (closes #651 and #716) 2010-11-28 05:18:57 +01:00
c7794e7cbf rewrite to retrieve default-pipe query from the defintion context 2010-11-28 02:16:39 +01:00
5ba7468f41 OutputMapping implementation complete, pending unit test 2010-11-28 01:43:55 +01:00
fc051dfcba OutputMapping implementation draft
coded up the easy part, omitting the actual resolution
based on an configuration query
2010-11-27 06:01:31 +01:00
1e2d4d90f6 start using a typedef HashVal instead of size_t (#722) 2010-11-27 05:11:02 +01:00
f9bc292ac3 better use boost::operators for full equality comparison support 2010-11-27 04:21:39 +01:00
c3d29d1eb3 OutputMapping: interface refactorings to yield a cleaner structure 2010-11-27 03:59:07 +01:00
56c1387cd5 OutputMapping: finish interface draft (stubbed) 2010-11-25 05:35:50 +01:00
645ddd284c WIP Solution draft for defining an output mapping type 2010-11-25 04:52:49 +01:00
a7ec680955 WIP chewing on the problem how to define a output mapping type 2010-11-24 06:21:32 +01:00
0866d2c191 convenience lookup function for pipes 2010-11-24 06:20:53 +01:00
b42e5c859f Test-driven brainstorming: how should output mapping be used? 2010-11-23 03:40:11 +01:00
5ae1f819f2 Finished the design of global pipes 2010-11-21 02:29:26 +01:00
272f3d75ff finish OutputDesignation definition and outline. (closes #312) 2010-11-19 19:10:24 +01:00
9473fd3d67 OutputDesignation implementation draft 2010-11-19 05:01:43 +01:00
71f1dfede8 WIP output mapping draft (#716) 2010-11-17 04:49:21 +01:00
250bfeaee5 use the new OptionalRef to protect session shutdown
The original version was sensible to static initialisation order,
which shold be resolved now, because of OptionalLink's dtor
explicitly disabling any further access.
2010-11-06 22:56:17 +01:00
bd361523d1 better use functor-style access instead of implicit conversion 2010-11-06 22:49:32 +01:00
f597e7c8b4 optional object link implemented and working 2010-11-06 22:32:08 +01:00
07f7837a7b draft behaviour of a optional/switchable object link 2010-11-06 21:23:35 +01:00
1b95a02f14 Autotools fixes 2010-11-06 18:17:25 +01:00
40627b1c12 fix a regression, caused by removing the special Struct-ID handling 2010-11-05 04:32:35 +01:00
4cef8474ed fake-configrules: remove magic "make" token (closes #707)
use backdoor function on the StructFactory instead
Mark such backdoor-functions with Ticket #710
2010-11-02 04:09:06 +01:00
1f511c327a try to get rid of the query functions on asset::Struct (#706) 2010-10-31 02:02:31 +01:00
7a53f65508 remove the separate pipeID field, because now the asset name is sufficient 2010-10-29 06:09:06 +02:00
de54e46a12 remove the encoded capabilities from Struct asset ID (#565) 2010-10-29 06:04:03 +02:00
08d90be1b6 get the sesison element-tracker integration test to pass 2010-10-29 05:24:19 +02:00
7c758b04db rename Struct-Asset factory function to better reflect the semantics 2010-10-29 04:28:46 +02:00
da04e13213 re-thinking the pattern of the fake implementation 2010-10-28 03:57:12 +02:00
61a2e26bc8 rework fake-resolution, now searching the session
this whole creation-logic seems to be somewhat broken
2010-10-27 07:26:33 +02:00
fcbd18621e session: attaching and detaching objects 2010-10-26 05:37:14 +02:00
0733b0c39b add a faked query resolution, creating new Timelines and Sequences on demand 2010-10-26 04:54:51 +02:00
987026f4c8 implement creation of "default" Timeline 2010-10-25 06:08:36 +02:00
13e1a3a943 mostly unimplemented... referring the relevant tickets 2010-10-25 03:08:52 +02:00
9fc366bd25 session lifecycle implementation.. 2010-10-24 06:50:00 +02:00
85b62d99dc stubbed the lifecycle operations 2010-10-24 02:48:00 +02:00
9bdfface63 implementation draft of session lifecycle 2010-10-24 02:27:38 +02:00
796c4488a5 planning session lifecycle implementation 2010-10-23 05:58:14 +02:00
ad452a9dd4 activate complete SessionElementTracker_test
(doesn't pass yet -- missing sesison initialisation)
2010-10-20 05:12:13 +02:00
d1dd3e2677 saveguard against deregistering from an alredy destroyed session 2010-10-20 04:42:22 +02:00
da45bb06f7 connect Timeline/Sequence tracking to current session on initialisation 2010-10-20 04:08:58 +02:00
6cda74c31e connect element-tracking to the asset unlink mechanism 2010-10-20 04:00:05 +02:00
83ea56e3ec hook automatic element-tracking into Sequence asset 2010-10-19 04:29:05 +02:00
b35c4b4871 hook automatic element-tracking into Timeline asset 2010-10-19 04:19:38 +02:00
fc0cefcadc review the asset dependency handling in AssetManager 2010-10-19 03:53:36 +02:00
3e9c337ac0 review and verify lib::ElementTracker 2010-10-18 05:33:46 +02:00
884e3600bd experimental: allow implicit converisons to/from Placement-ID 2010-10-17 06:30:56 +02:00
120973311a Session ElementQuery unit test pass (closes #639) 2010-10-17 05:54:21 +02:00
da994cf9fd draft a test to cover ElementQuery (Session API)
trying to get #639 closed...
discovered, that I had already implemented this
filtering query in 6/2010
2010-10-17 05:08:47 +02:00
d8c06fac1e add diagnostic self display to QueryFocus 2010-10-16 02:21:20 +02:00
c772359440 add diagnostic self display to ScopePath 2010-10-16 02:21:20 +02:00
e48a9fb811 add diagnostic self display to placement-Scope 2010-10-16 02:21:20 +02:00
48605827a6 Add test to cover the very basic MObject interface 2010-10-16 02:21:20 +02:00
b9e99a2be2 add ability to generate a short-ID to MObject hierarchy 2010-10-16 02:21:20 +02:00
b15a1c2d3c changed wording of the error message 2010-10-16 02:21:20 +02:00
73a1adcdf5 QueryFocus_test working now (still without diagnostic output) 2010-10-16 02:21:19 +02:00
a0234ecc38 get QueryFocus_test to compile with the (now existing) implementation 2010-10-16 02:21:19 +02:00
64f017da43 QueryFocusStack_test pass 2010-10-16 02:21:19 +02:00
46597009f9 get the basic ScopePath_test to pass 2010-10-16 02:21:19 +02:00
5c28b5d46e re-read, verify and finish off the Scope, ScopeLocator and QueryFocus implementation 2010-10-16 02:21:19 +02:00
119f7be36c define copy operations explicitly (closes #662)
ScopePath and Scope implementation should be roughly complete
2010-10-16 02:21:19 +02:00
bba9ce2570 code up the remaining Scope operations. Closes #430 2010-10-16 02:21:18 +02:00
6dd18f96c6 extend the session services API to support scope discovery
This allows the implementation of the Scope class to access
the current Session / PlacementIndex behind the scenes
2010-10-16 02:21:18 +02:00
99f29f9795 now able to build a IterSource based opaque const Scope iterator
for this to work, scope-path.hpp injects an explicit specialisation,
causing the RangeIter defined in ScopePath to yield const Scope
2010-10-16 02:21:18 +02:00
02d6d6a65c extract iter::TypeBinding into separate header to allow explicit specialisation 2010-10-16 02:21:18 +02:00
fdfb946d63 preparation to allow explicit type bindings for iter-adapter 2010-10-16 02:21:18 +02:00
e5de12fc7a (draft) maybe solved the problem defining a scope iterator
actually that would require to extract the IterTraits
from iter-adapter.hpp to allow for such dedicate specialisations
2010-10-16 02:21:18 +02:00
2c58e595c0 augment IterSource adapters by definition through classical iterator range 2010-10-16 02:21:18 +02:00
9593d388cc back out that caching query, it's nonsense
defeating the whole purpose of that interface
2010-10-16 02:21:18 +02:00
001a45f64a WIP implementation idea how to get both iterations unified 2010-10-16 02:21:18 +02:00
e14aba833e remove the parent-iteration capability from Scope
its not needed yet, and would be surprisingly tricky
to implement, so lets get rid of it!
Use QueryFocus or ScopeLocator instead
2010-10-16 02:21:17 +02:00
d5cdd39f52 WIP trying to code up the public query function for scope paths
problem is how to get an iterator compatible with ScopeQuery...
2010-10-16 02:21:17 +02:00
088922a790 remove obsolete helper
seems to be a leftover, obsoleted by the simplifications done this june
in c80b1894e6 Ticket #641
2010-10-16 02:21:17 +02:00
58757281b0 rearrange the query functions to suit the changed ScopePath internals 2010-10-16 02:21:17 +02:00
1fe76e33a2 WIP: move the (planned) logic for virtual paths to ScopePath::navigate() 2010-10-16 02:21:17 +02:00
d1d7f3bc58 decided on an extension point to add virtual/effective paths
we need that later to get full meta-clip functionality
2010-10-16 02:21:17 +02:00
8078357e3c revisiting the binding scope problem 2010-10-16 02:21:17 +02:00
a29591c299 SCons: several small improvements, e.g. valgrind-suppressionfile 2010-07-26 03:24:15 +02:00
Christian Thaeter
c66b71deb2 extend fileheader with some flags and endianess mark 2010-07-21 06:13:59 +02:00
Christian Thaeter
c908cf4807 Start of 'fileheader' implementation
Lumiera will create and use some files on its own (caches, indices). This
lies the foundation for identifying this files.
2010-07-21 06:13:59 +02:00
Christian Thaeter
51e5b8a90c FIX: missing stdint.h include in tmpbuf.c for SIZE_MAX 2010-07-21 06:13:07 +02:00
Christian Thaeter
25c3b04ec8 FIX: tmpbuf.h include for tools 2010-07-21 05:05:33 +02:00
Christian Thaeter
c34e6d547e FIX: tmpbuf.h for lib/time 2010-07-21 05:05:33 +02:00
Christian Thaeter
3c338d1b19 FIX: tmpbuf.h include for common/plugin 2010-07-21 05:05:33 +02:00
Christian Thaeter
2f92a958a8 FIX: tmpbuf.h includes in common/config 2010-07-21 05:05:33 +02:00
Christian Thaeter
f967f9427b FIX: tmpbuf.h includes in backend 2010-07-21 05:05:32 +02:00
Christian Thaeter
0158c1b88d WIP: factor tmpbuf out of safeclib
* tmpbuf got its own implementation files
 * Some optimizations on the tmpbuf implementation, handling tiny,
   small and huge allocations better.
 * tiny allocation smaller than sizeof(void*) are not aligned
 * Reduced the ring sizes to 16 (configureable in tmpbuf.h)

This is only the tmpbuf refactoring, fixes following on the next
commits.
2010-07-21 05:05:26 +02:00
Christian Thaeter
bc989dab7a put 'VCALL' into its own lib header
There will be some use for it at other places too (config system)
2010-07-21 04:50:04 +02:00
Christian Thaeter
81da2ebc5d Small fix in nobug assertions for mmap_address() 2010-07-21 04:50:04 +02:00
Christian Thaeter
677f8712ee FIX: glitch in filehandle cache refcounters 2010-07-21 04:50:03 +02:00
Christian Thaeter
da23204bf3 Exclusive file locking
This adds global exclusive advisory file locks on a per-thread basis.
Only exclusive locking for a whole file is supported to setup headers etc.
Finer grained locking will be handled somewhere else.
2010-07-21 04:49:51 +02:00
Christian Thaeter
2dfef6cac4 add nobug flag to FILE_MMAP_SECTION() macro 2010-07-21 04:49:50 +02:00