fix ordering in session construction so that new sessions and existing ones both work
This commit is contained in:
parent
bde50d5396
commit
31157cb343
|
@ -264,11 +264,18 @@ Session::Session (AudioEngine &eng,
|
||||||
pre_engine_init (fullpath);
|
pre_engine_init (fullpath);
|
||||||
|
|
||||||
if (_is_new) {
|
if (_is_new) {
|
||||||
|
if (ensure_engine (sr)) {
|
||||||
|
destroy ();
|
||||||
|
throw failed_constructor ();
|
||||||
|
}
|
||||||
|
|
||||||
if (create (mix_template, bus_profile)) {
|
if (create (mix_template, bus_profile)) {
|
||||||
destroy ();
|
destroy ();
|
||||||
throw failed_constructor ();
|
throw failed_constructor ();
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (load_state (_current_snapshot_name)) {
|
if (load_state (_current_snapshot_name)) {
|
||||||
throw failed_constructor ();
|
throw failed_constructor ();
|
||||||
}
|
}
|
||||||
|
@ -284,11 +291,11 @@ Session::Session (AudioEngine &eng,
|
||||||
sr = atoi (prop->value());
|
sr = atoi (prop->value());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (ensure_engine (sr)) {
|
if (ensure_engine (sr)) {
|
||||||
destroy ();
|
destroy ();
|
||||||
throw failed_constructor ();
|
throw failed_constructor ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (post_engine_init ()) {
|
if (post_engine_init ()) {
|
||||||
|
@ -361,6 +368,21 @@ Session::ensure_engine (uint32_t desired_sample_rate)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* the graph is just about as basic to everything else as the engine
|
||||||
|
so we create it here. this results in it coming into being at just
|
||||||
|
the right time for both new and existing sessions.
|
||||||
|
|
||||||
|
XXX some cleanup in the new/existing path is still waiting to be
|
||||||
|
done
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (how_many_dsp_threads () > 1) {
|
||||||
|
/* For now, only create the graph if we are using >1 DSP threads, as
|
||||||
|
it is a bit slower than the old code with 1 thread.
|
||||||
|
*/
|
||||||
|
_process_graph.reset (new Graph (*this));
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -210,13 +210,6 @@ Session::post_engine_init ()
|
||||||
set_block_size (_engine.samples_per_cycle());
|
set_block_size (_engine.samples_per_cycle());
|
||||||
set_frame_rate (_engine.sample_rate());
|
set_frame_rate (_engine.sample_rate());
|
||||||
|
|
||||||
if (how_many_dsp_threads () > 1) {
|
|
||||||
/* For now, only create the graph if we are using >1 DSP threads, as
|
|
||||||
it is a bit slower than the old code with 1 thread.
|
|
||||||
*/
|
|
||||||
_process_graph.reset (new Graph (*this));
|
|
||||||
}
|
|
||||||
|
|
||||||
n_physical_outputs = _engine.n_physical_outputs ();
|
n_physical_outputs = _engine.n_physical_outputs ();
|
||||||
n_physical_inputs = _engine.n_physical_inputs ();
|
n_physical_inputs = _engine.n_physical_inputs ();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user