#include "libardour-config.h"
#endif
-#include <vector>
-#include <cstdio>
-
-#include <glibmm/fileutils.h>
-#include <glibmm/miscutils.h>
-
#include "pbd/error.h"
-#include "pbd/convert.h"
-#include "pbd/enumwriter.h"
#include "ardour/midi_playlist.h"
#include "ardour/midi_playlist_source.h"
-#include "ardour/midi_region.h"
-#include "ardour/debug.h"
-#include "ardour/filename_extensions.h"
-#include "ardour/session.h"
-#include "ardour/session_directory.h"
-#include "ardour/session_playlists.h"
-#include "ardour/source_factory.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace std;
using namespace ARDOUR;
using namespace PBD;
+namespace ARDOUR {
+class MidiStateTracker;
+class Session;
+template <typename T> class MidiRingBuffer;
+}
+
+namespace Evoral {
+template <typename T> class EventSink;
+template <typename Time> class Event;
+}
+
/*******************************************************************************
As of May 2011, it appears too complex to support compound regions for MIDI
because of the need to be able to edit the data represented by the region. It
on other ways to approach this issue.
********************************************************************************/
-MidiPlaylistSource::MidiPlaylistSource (Session& s, const ID& orig, const std::string& name, boost::shared_ptr<MidiPlaylist> p,
- uint32_t chn, frameoffset_t begin, framecnt_t len, Source::Flag flags)
+MidiPlaylistSource::MidiPlaylistSource (Session& s, const ID& orig, const std::string& name, boost::shared_ptr<MidiPlaylist> p,
+ uint32_t /*chn*/, frameoffset_t begin, framecnt_t len, Source::Flag flags)
: Source (s, DataType::MIDI, name)
, MidiSource (s, name, flags)
, PlaylistSource (s, orig, name, p, DataType::MIDI, begin, len, flags)
/* ancestors have already called ::set_state() in their XML-based
constructors.
*/
-
+
if (set_state (node, Stateful::loading_state_version, false)) {
throw failed_constructor ();
}
return node;
}
-
int
-MidiPlaylistSource::set_state (const XMLNode& node, int version)
+MidiPlaylistSource::set_state (const XMLNode& node, int version)
{
return set_state (node, version, true);
}
int
-MidiPlaylistSource::set_state (const XMLNode& node, int version, bool with_descendants)
+MidiPlaylistSource::set_state (const XMLNode& node, int version, bool with_descendants)
{
if (with_descendants) {
- if (Source::set_state (node, version) ||
+ if (Source::set_state (node, version) ||
MidiSource::set_state (node, version) ||
PlaylistSource::set_state (node, version)) {
return -1;
return extent.second - extent.first;
}
-framepos_t
-MidiPlaylistSource::read_unlocked (Evoral::EventSink<framepos_t>& dst,
- framepos_t position,
+framecnt_t
+MidiPlaylistSource::read_unlocked (const Lock& lock,
+ Evoral::EventSink<framepos_t>& dst,
+ framepos_t /*position*/,
framepos_t start, framecnt_t cnt,
- MidiStateTracker* tracker) const
+ MidiStateTracker*,
+ MidiChannelFilter*) const
{
boost::shared_ptr<MidiPlaylist> mp = boost::dynamic_pointer_cast<MidiPlaylist> (_playlist);
return mp->read (dst, start, cnt);
}
-framepos_t
-MidiPlaylistSource::write_unlocked (MidiRingBuffer<framepos_t>& dst,
- framepos_t position,
- framecnt_t cnt)
+framecnt_t
+MidiPlaylistSource::write_unlocked (const Lock&,
+ MidiRingBuffer<framepos_t>&,
+ framepos_t,
+ framecnt_t)
{
fatal << string_compose (_("programming error: %1"), "MidiPlaylistSource::write_unlocked() called - should be impossible") << endmsg;
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
return 0;
}
-void
-MidiPlaylistSource::append_event_unlocked_beats(const Evoral::Event<Evoral::MusicalTime>& /*ev*/)
+void
+MidiPlaylistSource::append_event_beats(const Glib::Threads::Mutex::Lock& /*lock*/, const Evoral::Event<Evoral::Beats>& /*ev*/)
{
- fatal << string_compose (_("programming error: %1"), "MidiPlaylistSource::append_event_unlocked_beats() called - should be impossible") << endmsg;
- /*NOTREACHED*/
+ fatal << string_compose (_("programming error: %1"), "MidiPlaylistSource::append_event_beats() called - should be impossible") << endmsg;
+ abort(); /*NOTREACHED*/
}
-void
-MidiPlaylistSource::append_event_unlocked_frames(const Evoral::Event<framepos_t>& ev, framepos_t source_start)
+void
+MidiPlaylistSource::append_event_frames(const Glib::Threads::Mutex::Lock& /*lock*/, const Evoral::Event<framepos_t>& /* ev */, framepos_t /*source_start*/)
{
- fatal << string_compose (_("programming error: %1"), "MidiPlaylistSource::append_event_unlocked_frames() called - should be impossible") << endmsg;
- /*NOTREACHED*/
+ fatal << string_compose (_("programming error: %1"), "MidiPlaylistSource::append_event_frames() called - should be impossible") << endmsg;
+ abort(); /*NOTREACHED*/
}
void
-MidiPlaylistSource::load_model (bool, bool)
+MidiPlaylistSource::load_model (const Glib::Threads::Mutex::Lock&, bool)
{
/* nothing to do */
}
void
-MidiPlaylistSource::destroy_model ()
+MidiPlaylistSource::destroy_model (const Glib::Threads::Mutex::Lock&)
{
/* nothing to do */
}
void
-MidiPlaylistSource::flush_midi ()
+MidiPlaylistSource::flush_midi (const Lock& lock)
{
}