-int
-Session::ensure_engine (uint32_t desired_sample_rate, bool isnew)
-{
- if (_engine.current_backend() == 0) {
- /* backend is unknown ... */
- boost::optional<int> r = AudioEngineSetupRequired (desired_sample_rate);
- if (r.get_value_or (-1) != 0) {
- return -1;
- }
- } else if (!isnew && _engine.running() && _engine.sample_rate () == desired_sample_rate) {
- /* keep engine */
- } else if (_engine.setup_required()) {
- /* backend is known, but setup is needed */
- boost::optional<int> r = AudioEngineSetupRequired (desired_sample_rate);
- if (r.get_value_or (-1) != 0) {
- return -1;
- }
- } else if (!_engine.running()) {
- if (_engine.start()) {
- return -1;
- }
- }
-
- /* at this point the engine should be running */
-
- if (!_engine.running()) {
- return -1;
- }
-
- return immediately_post_engine ();
-
-}
-