move away from "sync source" concepts
This commit is contained in:
parent
4c7e5dbc74
commit
58e9bb0a14
|
@ -2304,9 +2304,8 @@ ARDOUR_UI::transport_roll ()
|
|||
return;
|
||||
}
|
||||
|
||||
#if 0
|
||||
if (_session->config.get_external_sync()) {
|
||||
switch (Config->get_sync_source()) {
|
||||
switch (TransportMasterManager::instance().current()->type()) {
|
||||
case Engine:
|
||||
break;
|
||||
default:
|
||||
|
@ -2314,7 +2313,6 @@ ARDOUR_UI::transport_roll ()
|
|||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
bool rolling = _session->transport_rolling();
|
||||
|
||||
|
@ -2368,7 +2366,7 @@ ARDOUR_UI::toggle_roll (bool with_abort, bool roll_out_of_bounded_mode)
|
|||
}
|
||||
|
||||
if (_session->config.get_external_sync()) {
|
||||
switch (Config->get_sync_source()) {
|
||||
switch (TransportMasterManager::instance().current()->type()) {
|
||||
case Engine:
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
|
||||
#include "ardour/rc_configuration.h"
|
||||
#include "ardour/session.h"
|
||||
#include "ardour/transport_master_manager.h"
|
||||
|
||||
#include "gtkmm2ext/utils.h"
|
||||
#include "waveview/wave_view.h"
|
||||
|
@ -50,14 +51,10 @@ void
|
|||
ARDOUR_UI::toggle_external_sync()
|
||||
{
|
||||
if (_session) {
|
||||
if (_session->config.get_video_pullup() != 0.0f) {
|
||||
if (Config->get_sync_source() == Engine) {
|
||||
MessageDialog msg (
|
||||
_("It is not possible to use JACK as the the sync source\n\
|
||||
when the pull up/down setting is non-zero."));
|
||||
msg.run ();
|
||||
return;
|
||||
}
|
||||
if (_session->config.get_video_pullup() != 0.0f && (TransportMasterManager::instance().current()->type() == Engine)) {
|
||||
MessageDialog msg (_("It is not possible to use JACK as the the sync source\n when the pull up/down setting is non-zero."));
|
||||
msg.run ();
|
||||
return;
|
||||
}
|
||||
|
||||
ActionManager::toggle_config_state_foo ("Transport", "ToggleExternalSync", sigc::mem_fun (_session->config, &SessionConfiguration::set_external_sync), sigc::mem_fun (_session->config, &SessionConfiguration::get_external_sync));
|
||||
|
@ -373,11 +370,11 @@ ARDOUR_UI::parameter_changed (std::string p)
|
|||
if (!_session->config.get_external_sync()) {
|
||||
sync_button.set_text (S_("SyncSource|Int."));
|
||||
} else {
|
||||
sync_button.set_text (sync_source_to_string (Config->get_sync_source(), true));
|
||||
sync_button.set_text (TransportMasterManager::instance().current()->display_name());
|
||||
}
|
||||
} else {
|
||||
/* changing sync source without a session is unlikely/impossible , except during startup */
|
||||
sync_button.set_text (sync_source_to_string (Config->get_sync_source(), true));
|
||||
sync_button.set_text (TransportMasterManager::instance().current()->display_name());
|
||||
}
|
||||
|
||||
} else if (p == "follow-edits") {
|
||||
|
@ -595,7 +592,7 @@ ARDOUR_UI::synchronize_sync_source_and_video_pullup ()
|
|||
act->set_sensitive (true);
|
||||
} else {
|
||||
/* can't sync to JACK if video pullup != 0.0 */
|
||||
if (Config->get_sync_source() == Engine) {
|
||||
if (TransportMasterManager::instance().current()->type() == Engine) {
|
||||
act->set_sensitive (false);
|
||||
} else {
|
||||
act->set_sensitive (true);
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include "ardour/session.h"
|
||||
#include "ardour/transport_master.h"
|
||||
#include "ardour/tempo.h"
|
||||
#include "ardour/transport_master_manager.h"
|
||||
#include "ardour/types.h"
|
||||
|
||||
#include "ardour_ui.h"
|
||||
|
@ -938,12 +939,10 @@ AudioClock::set_slave_info ()
|
|||
return;
|
||||
}
|
||||
|
||||
const SyncSource sync_src = Config->get_sync_source();
|
||||
boost::shared_ptr<TransportMaster> tm = TransportMasterManager::instance().current();
|
||||
|
||||
if (_session->transport_master_is_external()) {
|
||||
|
||||
boost::shared_ptr<TransportMaster> tm = _session->transport_master();
|
||||
|
||||
switch (tm->type()) {
|
||||
case Engine:
|
||||
_left_btn.set_text (tm->name(), true);
|
||||
|
@ -951,7 +950,7 @@ AudioClock::set_slave_info ()
|
|||
break;
|
||||
case MIDIClock:
|
||||
if (tm) {
|
||||
_left_btn.set_text (sync_source_to_string (tm->type(), true), true);
|
||||
_left_btn.set_text (tm->display_name(), true);
|
||||
_right_btn.set_text (tm->delta_string (), true);
|
||||
} else {
|
||||
_left_btn.set_text (_("--pending--"), true);
|
||||
|
@ -966,7 +965,7 @@ AudioClock::set_slave_info ()
|
|||
if ((tcmaster = boost::dynamic_pointer_cast<TimecodeTransportMaster>(tm)) != 0) {
|
||||
matching = (tcmaster->apparent_timecode_format() == _session->config.get_timecode_format());
|
||||
_left_btn.set_text (string_compose ("%1<span face=\"monospace\" foreground=\"%3\">%2</span>",
|
||||
sync_source_to_string(tm->type(), true)[0],
|
||||
tm->display_name()[0],
|
||||
tcmaster->position_string (),
|
||||
matching ? "#66ff66" : "#ff3333"
|
||||
), true);
|
||||
|
@ -979,7 +978,7 @@ AudioClock::set_slave_info ()
|
|||
break;
|
||||
}
|
||||
} else {
|
||||
_left_btn.set_text (string_compose ("%1/%2", _("INT"), sync_source_to_string (sync_src, true)), true);
|
||||
_left_btn.set_text (string_compose ("%1/%2", _("INT"), tm->display_name()), true);
|
||||
_right_btn.set_text ("", true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
#include "ardour/session_playlists.h"
|
||||
#include "ardour/strip_silence.h"
|
||||
#include "ardour/transient_detector.h"
|
||||
#include "ardour/transport_master_manager.h"
|
||||
#include "ardour/transpose.h"
|
||||
#include "ardour/vca_manager.h"
|
||||
|
||||
|
@ -2595,7 +2596,7 @@ Editor::transition_to_rolling (bool fwd)
|
|||
}
|
||||
|
||||
if (_session->config.get_external_sync()) {
|
||||
switch (Config->get_sync_source()) {
|
||||
switch (TransportMasterManager::instance().current()->type()) {
|
||||
case Engine:
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -52,7 +52,6 @@ private:
|
|||
BoolOption* _solo_control_is_listen_control;
|
||||
ComboOption<ARDOUR::ListenPosition>* _listen_position;
|
||||
VisibilityGroup _mixer_strip_visibility;
|
||||
ComboOption<ARDOUR::SyncSource>* _sync_source;
|
||||
BoolOption* _sync_framerate;
|
||||
ComboStringOption* _ltc_port;
|
||||
HSliderOption* _ltc_volume_slider;
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
|
||||
#include "ardour/session.h"
|
||||
#include "ardour/transport_master_manager.h"
|
||||
|
||||
#include "gui_thread.h"
|
||||
#include "session_option_editor.h"
|
||||
|
@ -414,7 +415,7 @@ SessionOptionEditor::parameter_changed (std::string const & p)
|
|||
{
|
||||
OptionEditor::parameter_changed (p);
|
||||
if (p == "external-sync") {
|
||||
if (Config->get_sync_source() == Engine) {
|
||||
if (TransportMasterManager::instance().current()->type() == Engine) {
|
||||
_vpu->set_sensitive(!_session_config->get_external_sync());
|
||||
} else {
|
||||
_vpu->set_sensitive(true);
|
||||
|
|
|
@ -52,6 +52,8 @@ TransportMastersWidget::TransportMastersWidget ()
|
|||
pack_start (table, PACK_EXPAND_WIDGET, 12);
|
||||
pack_start (add_button, FALSE, FALSE);
|
||||
|
||||
add_button.signal_clicked ().connect (sigc::mem_fun (*this, &TransportMastersWidget::add_master));
|
||||
|
||||
col_title[0].set_markup (string_compose ("<span weight=\"bold\">%1</span>", _("Use")));
|
||||
col_title[1].set_markup (string_compose ("<span weight=\"bold\">%1</span>", _("Name")));
|
||||
col_title[2].set_markup (string_compose ("<span weight=\"bold\">%1</span>", _("Type")));
|
||||
|
@ -64,7 +66,7 @@ TransportMastersWidget::TransportMastersWidget ()
|
|||
col_title[9].set_markup (string_compose ("<span weight=\"bold\">%1</span>", _("Data Source")));
|
||||
col_title[10].set_markup (string_compose ("<span weight=\"bold\">%1</span>", _("Active\nCommands")));
|
||||
col_title[11].set_markup (string_compose ("<span weight=\"bold\">%1</span>", _("Clock\nSynced")));
|
||||
col_title[12].set_markup (string_compose ("<span weight=\"bold\">%1</span>", _("29.97/30")));
|
||||
col_title[12].set_markup (string_compose ("<span weight=\"bold\">%1</span>", _("29.97/\n30")));
|
||||
col_title[13].set_markup (string_compose ("<span weight=\"bold\">%1</span>", _("Remove")));
|
||||
|
||||
set_tooltip (col_title[12], _("<b>When enabled</b> the external timecode source is assumed to use 29.97 fps instead of 30000/1001.\n"
|
||||
|
@ -92,6 +94,12 @@ TransportMastersWidget::~TransportMastersWidget ()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
TransportMastersWidget::set_transport_master (boost::shared_ptr<TransportMaster> tm)
|
||||
{
|
||||
_session->request_sync_source (tm);
|
||||
}
|
||||
|
||||
void
|
||||
TransportMastersWidget::current_changed (boost::shared_ptr<TransportMaster> old_master, boost::shared_ptr<TransportMaster> new_master)
|
||||
{
|
||||
|
@ -103,6 +111,14 @@ TransportMastersWidget::current_changed (boost::shared_ptr<TransportMaster> old_
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
TransportMastersWidget::add_master ()
|
||||
{
|
||||
if (!TransportMasterManager::instance().add (LTC, "new ltc")) {
|
||||
rebuild ();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
TransportMastersWidget::rebuild ()
|
||||
{
|
||||
|
@ -123,11 +139,17 @@ TransportMastersWidget::rebuild ()
|
|||
|
||||
uint32_t n = 1;
|
||||
|
||||
cerr << "There are " << masters.size() << endl;
|
||||
|
||||
Gtk::RadioButtonGroup use_button_group;
|
||||
|
||||
for (TransportMasterManager::TransportMasters::const_iterator m = masters.begin(); m != masters.end(); ++m, ++n) {
|
||||
|
||||
Row* r = new Row;
|
||||
Row* r = new Row (*this);
|
||||
rows.push_back (r);
|
||||
|
||||
cerr << "Rows now holds " << rows.size() << endl;
|
||||
|
||||
r->tm = *m;
|
||||
r->label.set_text ((*m)->name());
|
||||
r->type.set_text (enum_2_string ((*m)->type()));
|
||||
|
@ -170,7 +192,9 @@ TransportMastersWidget::rebuild ()
|
|||
col++;
|
||||
}
|
||||
|
||||
r->label_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
|
||||
table.show_all ();
|
||||
|
||||
// r->label_box.set_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
|
||||
r->label_box.signal_button_press_event().connect (sigc::mem_fun (*r, &TransportMastersWidget::Row::name_press));
|
||||
r->port_combo.signal_changed().connect (sigc::mem_fun (*r, &TransportMastersWidget::Row::port_choice_changed));
|
||||
r->use_button.signal_toggled().connect (sigc::mem_fun (*r, &TransportMastersWidget::Row::use_button_toggled));
|
||||
|
@ -198,8 +222,9 @@ TransportMastersWidget::rebuild ()
|
|||
}
|
||||
}
|
||||
|
||||
TransportMastersWidget::Row::Row ()
|
||||
: request_option_menu (0)
|
||||
TransportMastersWidget::Row::Row (TransportMastersWidget& p)
|
||||
: parent (p)
|
||||
, request_option_menu (0)
|
||||
, remove_button (X_("x"))
|
||||
, name_editor (0)
|
||||
, save_when (0)
|
||||
|
@ -267,7 +292,7 @@ void
|
|||
TransportMastersWidget::Row::use_button_toggled ()
|
||||
{
|
||||
if (use_button.get_active()) {
|
||||
Config->set_sync_source (tm->type());
|
||||
parent.set_transport_master (tm);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr
|
|||
~TransportMastersWidget ();
|
||||
|
||||
void update (ARDOUR::samplepos_t);
|
||||
void set_transport_master (boost::shared_ptr<ARDOUR::TransportMaster>);
|
||||
|
||||
protected:
|
||||
void on_map ();
|
||||
|
@ -57,6 +58,7 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr
|
|||
private:
|
||||
|
||||
struct Row : sigc::trackable, PBD::ScopedConnectionList {
|
||||
TransportMastersWidget& parent;
|
||||
Gtk::EventBox label_box;
|
||||
Gtk::Label label;
|
||||
Gtk::Label type;
|
||||
|
@ -82,7 +84,7 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr
|
|||
|
||||
void update (ARDOUR::Session*, ARDOUR::samplepos_t);
|
||||
|
||||
Row ();
|
||||
Row (TransportMastersWidget& parent);
|
||||
|
||||
struct PortColumns : public Gtk::TreeModel::ColumnRecord {
|
||||
PortColumns() {
|
||||
|
@ -117,7 +119,6 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr
|
|||
|
||||
std::vector<Row*> rows;
|
||||
|
||||
Gtk::RadioButtonGroup use_button_group;
|
||||
Gtk::Table table;
|
||||
Gtk::Label col_title[14];
|
||||
Gtk::Button add_button;
|
||||
|
@ -127,7 +128,7 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr
|
|||
|
||||
void rebuild ();
|
||||
void current_changed (boost::shared_ptr<ARDOUR::TransportMaster> old_master, boost::shared_ptr<ARDOUR::TransportMaster> new_master);
|
||||
|
||||
void add_master ();
|
||||
};
|
||||
|
||||
class TransportMastersWindow : public ArdourWindow
|
||||
|
|
|
@ -556,9 +556,8 @@ VideoMonitor::xjadeo_sync_setup ()
|
|||
if (!_session) { return; }
|
||||
|
||||
bool my_manual_seek = true;
|
||||
if (_session->config.get_external_sync()) {
|
||||
if (ARDOUR::Config->get_sync_source() == ARDOUR::Engine)
|
||||
my_manual_seek = false;
|
||||
if (_session->synced_to_engine ()) {
|
||||
my_manual_seek = false;
|
||||
}
|
||||
|
||||
if (my_manual_seek != sync_by_manual_seek) {
|
||||
|
|
Loading…
Reference in New Issue