+ pthread_set_name (X_("audioengine"));
+
+ PBD::notify_gui_about_thread_creation ("gui", pthread_self(), X_("Audioengine"), 4096);
+ PBD::notify_gui_about_thread_creation ("midiui", pthread_self(), X_("Audioengine"), 128);
+
+ SessionEvent::create_per_thread_pool (X_("Audioengine"), 512);
+
+ MIDI::JackMIDIPort::set_process_thread (pthread_self());
+}
+
+static void
+ardour_jack_error (const char* msg)
+{
+ error << "JACK: " << msg << endmsg;
+}
+
+void
+AudioEngine::set_jack_callbacks ()
+{
+ GET_PRIVATE_JACK_POINTER (_jack);
+
+ if (jack_on_info_shutdown) {
+ jack_on_info_shutdown (_priv_jack, halted_info, this);
+ } else {
+ jack_on_shutdown (_priv_jack, halted, this);
+ }
+
+ jack_set_thread_init_callback (_priv_jack, _thread_init_callback, this);
+ jack_set_process_thread (_priv_jack, _process_thread, this);
+ jack_set_sample_rate_callback (_priv_jack, _sample_rate_callback, this);
+ jack_set_buffer_size_callback (_priv_jack, _bufsize_callback, this);
+ jack_set_graph_order_callback (_priv_jack, _graph_order_callback, this);
+ jack_set_port_registration_callback (_priv_jack, _registration_callback, this);
+ jack_set_port_connect_callback (_priv_jack, _connect_callback, this);
+ jack_set_xrun_callback (_priv_jack, _xrun_callback, this);
+ jack_set_sync_callback (_priv_jack, _jack_sync_callback, this);
+ jack_set_freewheel_callback (_priv_jack, _freewheel_callback, this);
+
+ if (_session && _session->config.get_jack_time_master()) {
+ jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this);
+ }
+
+#ifdef HAVE_JACK_SESSION
+ if( jack_set_session_callback)
+ jack_set_session_callback (_priv_jack, _session_callback, this);
+#endif
+
+ if (jack_set_latency_callback) {
+ jack_set_latency_callback (_priv_jack, _latency_callback, this);
+ }
+
+ jack_set_error_function (ardour_jack_error);