temporal: always use Temporal::reset() for superclock and TempoMap default values
Make sure all code paths that use Temporal will initialize and reset it properly. Some code paths (in tet runners) doesn't use Sessions, so Temporal::reset() has to be invoked directly. Just set the static superclock variable to 0 as initial value. TempoMap will still be initialized early as a singleton, but we introduce a new constructor so it is created empty (and thus not really usable until Temporal::reset() or similar has populated it). We can thus drop the static initialization of superclock. The default superclock rate of 282240000 will now only live in Temporal::reset(). With this change there should no longer be any uninitialized use of superclock_ticks_per_second(), and there should not be any problems for DEBUG_EARLY_SCTS_USE to catch. (It is however broken in other ways - that will be fixed next.)
This commit is contained in:
parent
622876c8ab
commit
91314b68a5
@ -11,6 +11,7 @@
|
||||
|
||||
#include "pbd/debug.h"
|
||||
#include "ardour/ardour.h"
|
||||
#include "temporal/types.h"
|
||||
#include "test_ui.h"
|
||||
|
||||
static const char* localedir = LOCALEDIR;
|
||||
@ -51,6 +52,8 @@ main(int argc, char* argv[])
|
||||
|
||||
CPPUNIT_ASSERT (ARDOUR::init (true, localedir));
|
||||
|
||||
Temporal::reset();
|
||||
|
||||
TestUI* test_ui = new TestUI();
|
||||
|
||||
CppUnit::TestResult testresult;
|
||||
|
@ -19,7 +19,7 @@
|
||||
#include "temporal/superclock.h"
|
||||
|
||||
#ifndef COMPILER_MSVC
|
||||
Temporal::superclock_t Temporal::_superclock_ticks_per_second = 282240000 ; /* 2^10 * 3^2 * 5^4 * 7^2 */
|
||||
Temporal::superclock_t Temporal::_superclock_ticks_per_second = 0;
|
||||
#endif
|
||||
|
||||
int Temporal::most_recent_engine_sample_rate = 48000; /* have to pick something as a default */
|
||||
|
@ -4373,7 +4373,7 @@ TempoMap::ramped_twist_tempi (TempoPoint& unused, TempoPoint& focus, TempoPoint&
|
||||
void
|
||||
TempoMap::init ()
|
||||
{
|
||||
WritableSharedPtr new_map (new TempoMap (Tempo (120, 4), Meter (4, 4)));
|
||||
WritableSharedPtr new_map (new TempoMap ());
|
||||
_map_mgr.init (new_map);
|
||||
fetch ();
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ typedef int64_t superclock_t;
|
||||
#ifndef COMPILER_MSVC
|
||||
extern superclock_t _superclock_ticks_per_second;
|
||||
#else
|
||||
static superclock_t _superclock_ticks_per_second = 282240000; /* 2^10 * 3^2 * 5^4 * 7^2 */
|
||||
static superclock_t _superclock_ticks_per_second = 0;
|
||||
#endif
|
||||
|
||||
extern bool scts_set;
|
||||
|
@ -792,6 +792,7 @@ class /*LIBTEMPORAL_API*/ TempoMap : public PBD::StatefulDestructible
|
||||
/* and now on with the rest of the show ... */
|
||||
|
||||
public:
|
||||
LIBTEMPORAL_API TempoMap () {}
|
||||
LIBTEMPORAL_API TempoMap (Tempo const& initial_tempo, Meter const& initial_meter);
|
||||
LIBTEMPORAL_API TempoMap (TempoMap const&);
|
||||
LIBTEMPORAL_API TempoMap (XMLNode const&, int version);
|
||||
|
@ -51,9 +51,7 @@ main(int argc, char* argv[])
|
||||
if (!PBD::init ()) return 1;
|
||||
Temporal::init ();
|
||||
|
||||
// TempoMap::SharedPtr tmap = TempoMap::write_copy (); /* get writable copy of current tempo map */
|
||||
// change it
|
||||
// TempoMap::update (tmap); /* update the global tempo map manager */
|
||||
Temporal::reset();
|
||||
|
||||
CppUnit::TestResult testresult;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user