summaryrefslogtreecommitdiffstats
path: root/src/libs/engine/MidiBuffer.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-04-08 08:11:59 +0000
committerDavid Robillard <d@drobilla.net>2007-04-08 08:11:59 +0000
commitb59584b387c4b77d09ba4c791eb711597f67c8c8 (patch)
treecef114efdfc9807124b243c09547cfb9f6004a48 /src/libs/engine/MidiBuffer.cpp
parente96c36c1a7abb062e36efc0ac95c35fedcef922e (diff)
downloadingen-b59584b387c4b77d09ba4c791eb711597f67c8c8.tar.gz
ingen-b59584b387c4b77d09ba4c791eb711597f67c8c8.tar.bz2
ingen-b59584b387c4b77d09ba4c791eb711597f67c8c8.zip
MIDI patching fixes (clean disconnecting).
git-svn-id: http://svn.drobilla.net/lad/ingen@416 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/MidiBuffer.cpp')
-rw-r--r--src/libs/engine/MidiBuffer.cpp26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/libs/engine/MidiBuffer.cpp b/src/libs/engine/MidiBuffer.cpp
index 7dfe72e6..35bda0a0 100644
--- a/src/libs/engine/MidiBuffer.cpp
+++ b/src/libs/engine/MidiBuffer.cpp
@@ -15,8 +15,11 @@
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
+//#include <iostream>
#include "MidiBuffer.h"
+using namespace std;
+
namespace Ingen {
@@ -48,6 +51,8 @@ MidiBuffer::unjoin()
_joined_buf = NULL;
_buf = _local_buf;
_state = &_local_state;
+ clear();
+ reset(_this_nframes);
}
@@ -63,14 +68,23 @@ MidiBuffer::is_joined_to(Buffer* buf) const
void
-MidiBuffer::prepare(SampleCount nframes)
+MidiBuffer::prepare_read(SampleCount nframes)
+{
+ assert(!_joined_buf || data() == _joined_buf->data());
+ assert(!_joined_buf || state() == _joined_buf->state());
+
+ reset(nframes);
+}
+
+
+void
+MidiBuffer::prepare_write(SampleCount nframes)
{
- if (_joined_buf)
- _local_state = *_joined_buf->state();
- else
- reset_state(nframes);
+ clear();
+ reset(nframes);
- _this_nframes = nframes;
+ assert(!_joined_buf || data() == _joined_buf->data());
+ assert(!_joined_buf || state() == _joined_buf->state());
}