diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-08-31 01:49:33 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-08-31 01:49:33 +0000 |
commit | f13b700944c73fb629f6ac99ecb42f60018e9e9b (patch) | |
tree | 9fbdbc7622b66f2a667d675a2c9f633f6a7a6749 | |
parent | b9dca83832afe48f8f3f94e702c571a3f57aef7a (diff) |
mostly fix 3409 by making it impossible to sync to JACK if video pull up/down is non-zero. missing: can still alter video pull up/down after syncing to JACK, will likely wait till post-3.0
git-svn-id: svn://localhost/ardour2/branches/3.0@7721 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/ardour3_ui_dark.rc.in | 8 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui2.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_options.cc | 61 | ||||
-rw-r--r-- | gtk2_ardour/editor.cc | 2 | ||||
-rw-r--r-- | libs/ardour/session_transport.cc | 4 |
6 files changed, 73 insertions, 7 deletions
diff --git a/gtk2_ardour/ardour3_ui_dark.rc.in b/gtk2_ardour/ardour3_ui_dark.rc.in index dc560699d0..0085b62976 100644 --- a/gtk2_ardour/ardour3_ui_dark.rc.in +++ b/gtk2_ardour/ardour3_ui_dark.rc.in @@ -1281,10 +1281,10 @@ style "sync_alert" # active, and alternates with another style if sync is active # but we are not locked # - bg[ACTIVE] = { 0.52, 1.0, 0} - bg[PRELIGHT] = { 0.52, 1.0, 0} - bg[SELECTED] = { 0.52, 1.0, 0} - bg[NORMAL] = { 0.52, 1.0, 0} + bg[ACTIVE] = { 0.98, 0.4, 0} + bg[PRELIGHT] = { 0.98, 0.4, 0} + bg[SELECTED] = { 0.98, 0.4, 0} + bg[NORMAL] = { 0.98, 0.4, 0} fg[NORMAL] = { 0, 0, 0 } fg[PRELIGHT] = { 0, 0, 0 } diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index bf9a88d29e..f733a73ae9 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -201,6 +201,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void restore_clock_modes (); void reset_main_clocks (); + void synchronize_sync_source_and_video_pullup (); + void add_route (Gtk::Window* float_window); void session_add_audio_track (int input_channels, int32_t output_channels, ARDOUR::TrackMode mode, ARDOUR::RouteGroup* route_group, uint32_t how_many) { diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 65f165aa6e..9b975a7461 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -131,7 +131,6 @@ ARDOUR_UI::setup_tooltips () set_tip (punch_in_button, _("Start recording at auto-punch start")); set_tip (punch_out_button, _("Stop recording at auto-punch end")); set_tip (click_button, _("Enable/Disable audio click")); - set_tip (sync_button, _("Enable/Disable external positional sync")); set_tip (time_master_button, string_compose (_("Does %1 control the time?"), PROGRAM_NAME)); set_tip (shuttle_box, _("Shuttle speed control")); set_tip (shuttle_units_button, _("Select semitones or %%-age for speed display")); @@ -141,6 +140,8 @@ ARDOUR_UI::setup_tooltips () set_tip (primary_clock, _("Primary Clock")); set_tip (secondary_clock, _("Secondary Clock")); + synchronize_sync_source_and_video_pullup (); + editor->setup_tooltips (); } diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc index fd914b95dd..8bd2508292 100644 --- a/gtk2_ardour/ardour_ui_options.cc +++ b/gtk2_ardour/ardour_ui_options.cc @@ -57,7 +57,19 @@ ARDOUR_UI::toggle_keep_tearoffs () void ARDOUR_UI::toggle_external_sync() { - 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)); + if (_session) { + if (_session->config.get_video_pullup() != 0.0f) { + if (_session->config.get_sync_source() == JACK) { + 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)); + } } void @@ -400,7 +412,14 @@ ARDOUR_UI::parameter_changed (std::string p) break; } } else if (p == "video-pullup" || p == "timecode-format") { + + synchronize_sync_source_and_video_pullup (); reset_main_clocks (); + + } else if (p == "sync-source") { + + synchronize_sync_source_and_video_pullup (); + } else if (p == "show-track-meters") { editor->toggle_meter_updating(); } @@ -419,3 +438,43 @@ ARDOUR_UI::reset_main_clocks () secondary_clock.set (0, true); } } + +void +ARDOUR_UI::synchronize_sync_source_and_video_pullup () +{ + Glib::RefPtr<Action> act = ActionManager::get_action (X_("Transport"), X_("ToggleExternalSync")); + + if (!act) { + return; + } + + if (!_session) { + goto just_label; + } + + if (_session->config.get_video_pullup() == 0.0f) { + /* with no video pull up/down, any sync source is OK */ + act->set_sensitive (true); + } else { + /* can't sync to JACK if video pullup != 0.0 */ + if (_session->config.get_sync_source() == JACK) { + act->set_sensitive (false); + } else { + act->set_sensitive (true); + } + } + + /* XXX should really be able to set the video pull up + action to insensitive/sensitive, but there is no action. + FIXME + */ + + just_label: + if (act->get_sensitive ()) { + set_tip (sync_button, _("Enable/Disable external positional sync")); + } else { + set_tip (sync_button, _("Sync to JACK is not possible: video pull up/down is set")); + } + +} + diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index f71ed86f66..724f2dc5d7 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -1783,7 +1783,7 @@ Editor::add_region_context_items (StreamView* sv, list<boost::shared_ptr<Region> RegionView* rv = sv->find_view (ar); AudioRegionView* arv = dynamic_cast<AudioRegionView*> (rv); - if (arv->envelope_visible()) { + if (rv && arv && arv->envelope_visible()) { have_envelope_visible = true; } else { have_envelope_invisible = true; diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index bc4ef8decc..946d3ea890 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -1281,6 +1281,10 @@ Session::switch_to_sync_source (SyncSource src) return; } + if (config.get_video_pullup() != 0.0f) { + return; + } + new_slave = new JACK_Slave (_engine.jack()); break; |