osc: provide human readable reading for gain.
[ardour.git] / session_utils / common.cc
index 9353c760bdc07c1a4d67efb353808dc7691d037a..8d1cdec950d8afb39c3b9c8650701b23ef9b6efb 100644 (file)
@@ -86,7 +86,7 @@ class MyEventLoop : public sigc::trackable, public EventLoop
 static MyEventLoop *event_loop;
 
 void
-SessionUtils::init ()
+SessionUtils::init (bool print_log)
 {
        if (!ARDOUR::init (false, true, localedir)) {
                cerr << "Ardour failed to initialize\n" << endl;
@@ -97,10 +97,12 @@ SessionUtils::init ()
        EventLoop::set_event_loop_for_thread (event_loop);
        SessionEvent::create_per_thread_pool ("util", 512);
 
-       test_receiver.listen_to (error);
-       test_receiver.listen_to (info);
-       test_receiver.listen_to (fatal);
-       test_receiver.listen_to (warning);
+       if (print_log) {
+               test_receiver.listen_to (error);
+               test_receiver.listen_to (info);
+               test_receiver.listen_to (fatal);
+               test_receiver.listen_to (warning);
+       }
 }
 
 // TODO return NULL, rather than exit() ?!
@@ -113,6 +115,9 @@ static Session * _load_session (string dir, string state)
                ::exit (EXIT_FAILURE);
        }
 
+       engine->set_input_channels (256);
+       engine->set_output_channels (256);
+
        float sr;
        SampleFormat sf;
 
@@ -120,18 +125,18 @@ static Session * _load_session (string dir, string state)
        if (Session::get_info_from_path (s, sr, sf) == 0) {
                if (engine->set_sample_rate (sr)) {
                        std::cerr << "Cannot set session's samplerate.\n";
-                       ::exit (EXIT_FAILURE);
+                       return 0;
                }
        } else {
                std::cerr << "Cannot get samplerate from session.\n";
-               ::exit (EXIT_FAILURE);
+               return 0;
        }
 
        init_post_engine ();
 
        if (engine->start () != 0) {
                std::cerr << "Cannot start Audio/MIDI engine\n";
-               ::exit (EXIT_FAILURE);
+               return 0;
        }
 
        Session* session = new Session (*engine, dir, state);
@@ -140,7 +145,7 @@ static Session * _load_session (string dir, string state)
 }
 
 Session *
-SessionUtils::load_session (string dir, string state)
+SessionUtils::load_session (string dir, string state, bool exit_at_failure)
 {
        Session* s = 0;
        try {
@@ -158,6 +163,9 @@ SessionUtils::load_session (string dir, string state)
                cerr << "unknown exception.\n";
                ::exit (EXIT_FAILURE);
        }
+       if (!s && exit_at_failure) {
+               ::exit (EXIT_FAILURE);
+       }
        return s;
 }