mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-30 18:37:40 +01:00
libardour: small changes to cue marker API to return bool from Source modification methods
This commit is contained in:
parent
1a1e67f595
commit
ca44f54ed6
2 changed files with 34 additions and 11 deletions
|
|
@ -113,10 +113,10 @@ public:
|
|||
void set_captured_xruns (XrunPositions const& xruns) { _xruns = xruns; }
|
||||
|
||||
CueMarkers const & cue_markers() const { return _cue_markers; }
|
||||
void add_cue_marker (CueMarker const &);
|
||||
void move_cue_marker (CueMarker const &, samplepos_t source_relative_position);
|
||||
bool add_cue_marker (CueMarker const &);
|
||||
bool move_cue_marker (CueMarker const &, samplepos_t source_relative_position);
|
||||
bool remove_cue_marker (CueMarker const &);
|
||||
void rename_cue_marker (CueMarker&, std::string const &);
|
||||
bool rename_cue_marker (CueMarker&, std::string const &);
|
||||
bool clear_cue_markers ();
|
||||
PBD::Signal0<void> CueMarkersChanged;
|
||||
|
||||
|
|
|
|||
|
|
@ -215,6 +215,8 @@ Source::set_state (const XMLNode& node, int version)
|
|||
|
||||
} else if ((*niter)->name() == X_("Cues")) {
|
||||
|
||||
CueMarkers old (_cue_markers);
|
||||
|
||||
_cue_markers.clear ();
|
||||
|
||||
const XMLNode& cues (*(*niter));
|
||||
|
|
@ -230,6 +232,9 @@ Source::set_state (const XMLNode& node, int version)
|
|||
|
||||
_cue_markers.insert (CueMarker (text, position));
|
||||
}
|
||||
|
||||
cues_changed = (old == _cue_markers);
|
||||
cerr << "reset state, cues changed " << cues_changed << endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -257,6 +262,16 @@ Source::set_state (const XMLNode& node, int version)
|
|||
_flags = Flag (_flags & ~(Writable|Removable|RemovableIfEmpty|RemoveAtDestroy|CanRename));
|
||||
}
|
||||
|
||||
/* support to make undo/redo actually function. Very few things about
|
||||
* Sources are ever part of undo/redo history, but this can
|
||||
* be. Undo/Redo uses a MementoCommand<> pattern, which will not in
|
||||
* itself notify anyone when the operation changes the cue markers.
|
||||
*/
|
||||
|
||||
if (cues_changed) {
|
||||
CueMarkersChanged (); /* EMIT SIGNAL */
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -413,34 +428,42 @@ Source::writable () const
|
|||
return (_flags & Writable) && _session.writable();
|
||||
}
|
||||
|
||||
void
|
||||
bool
|
||||
Source::add_cue_marker (CueMarker const & cm)
|
||||
{
|
||||
_cue_markers.insert (cm);
|
||||
CueMarkersChanged(); /* EMIT SIGNAL */
|
||||
if (_cue_markers.insert (cm).second) {
|
||||
CueMarkersChanged(); /* EMIT SIGNAL */
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
bool
|
||||
Source::move_cue_marker (CueMarker const & cm, samplepos_t source_relative_position)
|
||||
{
|
||||
if (source_relative_position > length (0)) {
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (remove_cue_marker (cm)) {
|
||||
add_cue_marker (CueMarker (cm.text(), source_relative_position));
|
||||
return add_cue_marker (CueMarker (cm.text(), source_relative_position));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
bool
|
||||
Source::rename_cue_marker (CueMarker& cm, std::string const & str)
|
||||
{
|
||||
CueMarkers::iterator m = _cue_markers.find (cm);
|
||||
|
||||
if (m != _cue_markers.end()) {
|
||||
_cue_markers.erase (m);
|
||||
add_cue_marker (CueMarker (str, cm.position()));
|
||||
return add_cue_marker (CueMarker (str, cm.position()));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue