mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-08 14:45:43 +01:00
Extend API to allow calling new_midi_source_path() with source_lock held
This is in preparation for cloning MIDI-sources during snapshot save.
This commit is contained in:
parent
86ee4de7a9
commit
a1c5d1be43
2 changed files with 9 additions and 6 deletions
|
|
@ -249,7 +249,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
|
|||
std::string format_audio_source_name (const std::string& legalized_base, uint32_t nchan, uint32_t chan, bool destructive, bool take_required, uint32_t cnt, bool related_exists);
|
||||
std::string new_audio_source_path_for_embedded (const std::string& existing_path);
|
||||
std::string new_audio_source_path (const std::string&, uint32_t nchans, uint32_t chan, bool destructive, bool take_required);
|
||||
std::string new_midi_source_path (const std::string&);
|
||||
std::string new_midi_source_path (const std::string&, bool need_source_lock = true);
|
||||
/** create a new track or bus from a template (XML path)
|
||||
* @param how_many how many tracks or busses to create
|
||||
* @param template_path path to xml template file
|
||||
|
|
@ -801,7 +801,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop
|
|||
|
||||
boost::shared_ptr<Source> source_by_id (const PBD::ID&);
|
||||
boost::shared_ptr<AudioFileSource> audio_source_by_path_and_channel (const std::string&, uint16_t) const;
|
||||
boost::shared_ptr<MidiSource> midi_source_by_path (const std::string&) const;
|
||||
boost::shared_ptr<MidiSource> midi_source_by_path (const std::string&, bool need_source_lock) const;
|
||||
uint32_t count_sources_by_origin (const std::string&);
|
||||
|
||||
void add_playlist (boost::shared_ptr<Playlist>, bool unused = false);
|
||||
|
|
|
|||
|
|
@ -4887,13 +4887,16 @@ Session::audio_source_by_path_and_channel (const string& path, uint16_t chn) con
|
|||
}
|
||||
|
||||
boost::shared_ptr<MidiSource>
|
||||
Session::midi_source_by_path (const std::string& path) const
|
||||
Session::midi_source_by_path (const std::string& path, bool need_source_lock) const
|
||||
{
|
||||
/* Restricted to MIDI files because audio sources require a channel
|
||||
for unique identification, in addition to a path.
|
||||
*/
|
||||
|
||||
Glib::Threads::Mutex::Lock lm (source_lock);
|
||||
Glib::Threads::Mutex::Lock lm (source_lock, Glib::Threads::NOT_LOCK);
|
||||
if (need_source_lock) {
|
||||
lm.acquire ();
|
||||
}
|
||||
|
||||
for (SourceMap::const_iterator s = sources.begin(); s != sources.end(); ++s) {
|
||||
boost::shared_ptr<MidiSource> ms
|
||||
|
|
@ -5194,7 +5197,7 @@ Session::new_audio_source_path (const string& base, uint32_t nchan, uint32_t cha
|
|||
|
||||
/** Return a unique name based on `base` for a new internal MIDI source */
|
||||
string
|
||||
Session::new_midi_source_path (const string& base)
|
||||
Session::new_midi_source_path (const string& base, bool need_lock)
|
||||
{
|
||||
uint32_t cnt;
|
||||
char buf[PATH_MAX+1];
|
||||
|
|
@ -5235,7 +5238,7 @@ Session::new_midi_source_path (const string& base)
|
|||
existing++;
|
||||
}
|
||||
|
||||
if (midi_source_by_path (possible_path)) {
|
||||
if (midi_source_by_path (possible_path, need_lock)) {
|
||||
existing++;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue