engine = 0;
_session_is_new = false;
big_clock_window = 0;
+ big_clock_height = 0;
+ big_clock_resize_in_progress = false;
session_selector_window = 0;
last_key_press_time = 0;
_will_create_new_session_automatically = false;
last_shuttle_request = last_peak_grab = 0; // get_microseconds();
- ARDOUR::Diskstream::DiskOverrun.connect (sigc::mem_fun(*this, &ARDOUR_UI::disk_overrun_handler));
- ARDOUR::Diskstream::DiskUnderrun.connect (sigc::mem_fun(*this, &ARDOUR_UI::disk_underrun_handler));
+ ARDOUR::Diskstream::DiskOverrun.connect (forever_connections, boost::bind (&ARDOUR_UI::disk_overrun_handler, this), gui_context());
+ ARDOUR::Diskstream::DiskUnderrun.connect (forever_connections, boost::bind (&ARDOUR_UI::disk_underrun_handler, this), gui_context());
/* handle dialog requests */
- ARDOUR::Session::Dialog.connect (sigc::mem_fun(*this, &ARDOUR_UI::session_dialog));
+ ARDOUR::Session::Dialog.connect (forever_connections, ui_bind (&ARDOUR_UI::session_dialog, this, _1), gui_context());
- /* handle pending state with a dialog */
+ /* handle pending state with a dialog (PROBLEM: needs to return a value and thus cannot be x-thread) */
- ARDOUR::Session::AskAboutPendingState.connect (sigc::mem_fun(*this, &ARDOUR_UI::pending_state_dialog));
+ ARDOUR::Session::AskAboutPendingState.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::pending_state_dialog, this));
- /* handle sr mismatch with a dialog */
+ /* handle sr mismatch with a dialog (PROBLEM: needs to return a value and thus cannot be x-thread) */
- ARDOUR::Session::AskAboutSampleRateMismatch.connect (sigc::mem_fun(*this, &ARDOUR_UI::sr_mismatch_dialog));
+ ARDOUR::Session::AskAboutSampleRateMismatch.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::sr_mismatch_dialog, this, _1, _2));
/* lets get this party started */
/* we like keyboards */
- keyboard = new ArdourKeyboard;
+ keyboard = new ArdourKeyboard(*this);
XMLNode* node = ARDOUR_UI::instance()->keyboard_settings();
if (node) {
return -1;
}
- engine->Stopped.connect (sigc::mem_fun(*this, &ARDOUR_UI::engine_stopped));
- engine->Running.connect (sigc::mem_fun(*this, &ARDOUR_UI::engine_running));
- engine->Halted.connect (sigc::mem_fun(*this, &ARDOUR_UI::engine_halted));
- engine->SampleRateChanged.connect (sigc::mem_fun(*this, &ARDOUR_UI::update_sample_rate));
+ engine->Stopped.connect (forever_connections, boost::bind (&ARDOUR_UI::engine_stopped, this), gui_context());
+ engine->Running.connect (forever_connections, boost::bind (&ARDOUR_UI::engine_running, this), gui_context());
+ engine->Halted.connect (forever_connections, boost::bind (&ARDOUR_UI::engine_halted, this), gui_context());
+ engine->SampleRateChanged.connect (forever_connections, ui_bind (&ARDOUR_UI::update_sample_rate, this, _1), gui_context());
post_engine ();
update_cpu_load ();
update_sample_rate (engine->frame_rate());
- Config->ParameterChanged.connect (sigc::mem_fun (*this, &ARDOUR_UI::parameter_changed));
+ Config->ParameterChanged.connect (forever_connections, ui_bind (&ARDOUR_UI::parameter_changed, this, _1), gui_context());
boost::function<void (string)> pc (boost::bind (&ARDOUR_UI::parameter_changed, this, _1));
Config->map_parameters (pc);
}
void
-ARDOUR_UI::update_sample_rate (nframes_t ignored)
+ARDOUR_UI::update_sample_rate (nframes_t)
{
char buf[32];
if (_session) {
_session->request_locate (0);
-
/* force displayed area in editor to start no matter
what "follow playhead" setting is.
*/
if (_session->get_play_loop()) {
_session->request_play_loop (false, true);
- } else if (_session->get_play_range ()) {
- _session->request_play_range (false, true);
- }
+ } else if (_session->get_play_range () && !join_play_range_button.get_active()) {
+ /* stop playing a range if we currently are */
+ _session->request_play_range (0, true);
+ }
+
+ if (join_play_range_button.get_active()) {
+ _session->request_play_range (&editor->get_selection().time, true);
+ }
if (!rolling) {
_session->request_transport_speed (1.0f);
if (rolling) {
_session->request_stop (with_abort, true);
} else {
+ if (join_play_range_button.get_active()) {
+ _session->request_play_range (&editor->get_selection().time, true);
+ }
+
_session->request_transport_speed (1.0f);
}
}
if (sp != 0.0) {
+ /* we're rolling */
+
if (_session->get_play_range()) {
play_selection_button.set_visual_state (1);
roll_button.set_visual_state (0);
auto_loop_button.set_visual_state (0);
-
+
} else if (_session->get_play_loop ()) {
auto_loop_button.set_visual_state (1);
auto_loop_button.set_visual_state (0);
}
+ if (join_play_range_button.get_active()) {
+ /* light up both roll and play-selection if they are joined */
+ roll_button.set_visual_state (1);
+ play_selection_button.set_visual_state (1);
+ }
+
stop_button.set_visual_state (0);
} else {
void
ARDOUR_UI::write_buffer_stats ()
{
-
std::ofstream fout;
struct tm tm;
char buf[64];
ARDOUR_UI::TransportControllable::TransportControllable (std::string name, ARDOUR_UI& u, ToggleType tp)
- : Controllable (name, string() /* missing URI */), ui (u), type(tp)
+ : Controllable (name), ui (u), type(tp)
{
}