mark session dirty when dragging tempo markers.

This commit is contained in:
nick_m 2017-01-27 03:05:32 +11:00
parent 666ed3a0bd
commit 7b9784fff4
10 changed files with 10 additions and 28 deletions

View File

@ -773,12 +773,6 @@ AudioClock::session_property_changed (const PropertyChange&)
set (last_when, true);
}
void
AudioClock::metric_position_changed ()
{
set (last_when, true);
}
void
AudioClock::session_configuration_changed (std::string p)
{
@ -1194,7 +1188,7 @@ AudioClock::set_session (Session *s)
Config->ParameterChanged.connect (_session_connections, invalidator (*this), boost::bind (&AudioClock::session_configuration_changed, this, _1), gui_context());
_session->config.ParameterChanged.connect (_session_connections, invalidator (*this), boost::bind (&AudioClock::session_configuration_changed, this, _1), gui_context());
_session->tempo_map().PropertyChanged.connect (_session_connections, invalidator (*this), boost::bind (&AudioClock::session_property_changed, this, _1), gui_context());
_session->tempo_map().MetricPositionChanged.connect (_session_connections, invalidator (*this), boost::bind (&AudioClock::metric_position_changed, this), gui_context());
_session->tempo_map().MetricPositionChanged.connect (_session_connections, invalidator (*this), boost::bind (&AudioClock::session_property_changed, this, _1), gui_context());
XMLProperty const * prop;
XMLNode* node = _session->extra_xml (X_("ClockModes"));

View File

@ -223,7 +223,6 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
void session_configuration_changed (std::string);
void session_property_changed (const PBD::PropertyChange&);
void metric_position_changed ();
Field index_to_field () const;

View File

@ -1395,7 +1395,7 @@ Editor::set_session (Session *t)
_session->RouteAdded.connect (_session_connections, invalidator (*this), boost::bind (&Editor::add_routes, this, _1), gui_context());
_session->DirtyChanged.connect (_session_connections, invalidator (*this), boost::bind (&Editor::update_title, this), gui_context());
_session->tempo_map().PropertyChanged.connect (_session_connections, invalidator (*this), boost::bind (&Editor::tempo_map_changed, this, _1), gui_context());
_session->tempo_map().MetricPositionChanged.connect (_session_connections, invalidator (*this), boost::bind (&Editor::marker_position_changed, this), gui_context());
_session->tempo_map().MetricPositionChanged.connect (_session_connections, invalidator (*this), boost::bind (&Editor::tempometric_position_changed, this, _1), gui_context());
_session->Located.connect (_session_connections, invalidator (*this), boost::bind (&Editor::located, this), gui_context());
_session->config.ParameterChanged.connect (_session_connections, invalidator (*this), boost::bind (&Editor::parameter_changed, this, _1), gui_context());
_session->StateSaved.connect (_session_connections, invalidator (*this), boost::bind (&Editor::session_state_saved, this, _1), gui_context());

View File

@ -1729,7 +1729,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void compute_current_bbt_points (std::vector<ARDOUR::TempoMap::BBTPoint>& grid, framepos_t left, framepos_t right);
void tempo_map_changed (const PBD::PropertyChange&);
void marker_position_changed ();
void tempometric_position_changed (const PBD::PropertyChange&);
void redisplay_tempo (bool immediate_redraw);
uint32_t bbt_beat_subdivision;

View File

@ -189,7 +189,7 @@ Editor::tempo_map_changed (const PropertyChange& /*ignored*/)
}
void
Editor::marker_position_changed ()
Editor::tempometric_position_changed (const PropertyChange& /*ignored*/)
{
if (!_session) {
return;

View File

@ -1705,7 +1705,6 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
TempoMap *_tempo_map;
void tempo_map_changed (const PBD::PropertyChange&);
void gui_tempo_map_changed ();
/* edit/mix groups */

View File

@ -495,7 +495,7 @@ class LIBARDOUR_API TempoMap : public PBD::StatefulDestructible
std::pair<double, framepos_t> predict_tempo_position (TempoSection* section, const Timecode::BBT_Time& bbt);
bool can_solve_bbt (TempoSection* section, const Timecode::BBT_Time& bbt);
PBD::Signal0<void> MetricPositionChanged;
PBD::Signal1<void,const PBD::PropertyChange&> MetricPositionChanged;
void fix_legacy_session();
private:

View File

@ -5626,16 +5626,6 @@ Session::tempo_map_changed (const PropertyChange&)
set_dirty ();
}
void
Session::gui_tempo_map_changed ()
{
clear_clicks ();
playlists->update_after_tempo_map_change ();
_locations->apply (*this, &Session::update_locations_after_tempo_map_change);
}
void
Session::update_locations_after_tempo_map_change (const Locations::LocationList& loc)
{

View File

@ -260,7 +260,7 @@ Session::post_engine_init ()
delete _tempo_map;
_tempo_map = new TempoMap (_current_frame_rate);
_tempo_map->PropertyChanged.connect_same_thread (*this, boost::bind (&Session::tempo_map_changed, this, _1));
_tempo_map->MetricPositionChanged.connect_same_thread (*this, boost::bind (&Session::gui_tempo_map_changed, this));
_tempo_map->MetricPositionChanged.connect_same_thread (*this, boost::bind (&Session::tempo_map_changed, this, _1));
/* MidiClock requires a tempo map */

View File

@ -3271,7 +3271,7 @@ TempoMap::gui_set_tempo_position (TempoSection* ts, const framepos_t& frame, con
++d;
}
MetricPositionChanged (); // Emit Signal
MetricPositionChanged (PropertyChange ()); // Emit Signal
}
/** moves a MeterSection to a specified position.
@ -3319,7 +3319,7 @@ TempoMap::gui_set_meter_position (MeterSection* ms, const framepos_t& frame)
++d;
}
MetricPositionChanged (); // Emit Signal
MetricPositionChanged (PropertyChange ()); // Emit Signal
}
bool
@ -3346,7 +3346,7 @@ TempoMap::gui_change_tempo (TempoSection* ts, const Tempo& bpm)
++d;
}
if (can_solve) {
MetricPositionChanged (); // Emit Signal
MetricPositionChanged (PropertyChange ()); // Emit Signal
}
return can_solve;
}
@ -3498,7 +3498,7 @@ TempoMap::gui_stretch_tempo (TempoSection* ts, const framepos_t& frame, const fr
++d;
}
MetricPositionChanged (); // Emit Signal
MetricPositionChanged (PropertyChange ()); // Emit Signal
}
/** Returns the exact bbt-based beat corresponding to the bar, beat or quarter note subdivision nearest to