Consistent AU factory Preset IDs
[ardour.git] / libs / ardour / audio_port.cc
index 44e0298f1d7325a59eabd05b91bc23d825a0a879..1a6c30dcf25b5e6b07c66a27257603d59ad1d76c 100644 (file)
@@ -30,6 +30,7 @@
 using namespace ARDOUR;
 using namespace std;
 
+#define ENGINE AudioEngine::instance()
 #define port_engine AudioEngine::instance()->port_engine()
 
 AudioPort::AudioPort (const std::string& name, PortFlags flags)
@@ -121,12 +122,18 @@ AudioPort::get_audio_buffer (pframes_t nframes)
 {
        /* caller must hold process lock */
        assert (_port_handle);
+
+       Sample* addr;
+
        if (!externally_connected ()) {
-               _buffer->set_data ((Sample *) port_engine.get_buffer (_port_handle, _cycle_nframes) +
-                               _global_port_buffer_offset, nframes);
+               addr = (Sample *) port_engine.get_buffer (_port_handle, nframes);
        } else {
-               _buffer->set_data (&_data[_global_port_buffer_offset], nframes);
+               /* _data was read and resampled as necessary in ::cycle_start */
+               addr = &_data[_global_port_buffer_offset];
        }
+
+       _buffer->set_data (addr, nframes);
+
        return *_buffer;
 }
 
@@ -135,5 +142,5 @@ AudioPort::engine_get_whole_audio_buffer ()
 {
        /* caller must hold process lock */
        assert (_port_handle);
-       return (Sample *) port_engine.get_buffer (_port_handle, _cycle_nframes);
+       return (Sample *) port_engine.get_buffer (_port_handle, ENGINE->samples_per_cycle());
 }