+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);
+}
+