Hi Kai,
I've appended a patch to v2_6_0. It works for me so far, but I haven't
tested it vigorously.
On Fri, Jun 26, 2009 at 9:59 AM, Kai Vehmanen <kvehmanen@email-addr-hidden> wrote:
>
> Hi,
>
> [...]
>
> hmm, that could indeed happen -- IOW a good catch! At least one way to fix this is to modify
>
> void AUDIO_IO_JACK_MANAGER::write_samples()
>
> .. so that full 'buffersize_rep' of samples is copied every time
> to '(*p)->cb_buffer'. In current code, 'samples' could be zero, in which case old data could remain in the buffer.
diff --git a/libecasound/plugins/audioio_jack_manager.cpp
b/libecasound/plugins/audioio_jack_manager.cpp
index 0af5846..d6e9b58 100644
--- a/libecasound/plugins/audioio_jack_manager.cpp
+++ b/libecasound/plugins/audioio_jack_manager.cpp
@@ -1621,6 +1621,7 @@ void AUDIO_IO_JACK_MANAGER::write_samples(int
client_id, void* target_buffer, lo
{
// DEBUG_CFLOW_STATEMENT(cerr << endl << "write_samples:" << client_id);
+ size_t sample_size = sizeof(jack_default_audio_sample_t);
long int writesamples = (samples <= buffersize_rep) ? samples :
buffersize_rep;
jack_default_audio_sample_t* ptr =
static_cast<jack_default_audio_sample_t*>(target_buffer);
@@ -1629,8 +1630,11 @@ void AUDIO_IO_JACK_MANAGER::write_samples(int
client_id, void* target_buffer, lo
list<eca_jack_port_data*>::const_iterator p = node->ports.begin();
while(p != node->ports.end()) {
if ((*p)->cb_buffer != 0) {
- memcpy((*p)->cb_buffer, ptr, writesamples *
sizeof(jack_default_audio_sample_t));
+ memcpy((*p)->cb_buffer, ptr, writesamples * sample_size);
ptr += writesamples;
+ memset((*p)->cb_buffer + (writesamples * sample_size),
+ 0,
+ (buffersize_rep - writesamples) * sample_size);
}
++p;
}
------------------------------------------------------------------------------
_______________________________________________
Ecasound-list mailing list
Ecasound-list@email-addr-hidden
https://lists.sourceforge.net/lists/listinfo/ecasound-list
Received on Fri Jun 26 04:15:02 2009
This archive was generated by hypermail 2.1.8 : Fri Jun 26 2009 - 04:15:02 EEST