diff --git a/src/binarystreamreader.cpp b/src/binarystreamreader.cpp --- a/src/binarystreamreader.cpp +++ b/src/binarystreamreader.cpp @@ -122,6 +122,16 @@ void BinaryStreamReader::onDataReady() // a package is a set of channel data like {CHAN0_SAMPLE, CHAN1_SAMPLE...} int packageSize = sampleSize * _numOfChannels; int bytesAvailable = _device->bytesAvailable(); + + if (bytesAvailable > 0 && skipByteRequested) + { + _device->read(1); + skipByteRequested = false; + bytesAvailable--; + } + + if (bytesAvailable < packageSize) return; + int numOfPackagesToRead = (bytesAvailable - (bytesAvailable % packageSize)) / packageSize; @@ -132,15 +142,6 @@ void BinaryStreamReader::onDataReady() return; } - if (bytesAvailable > 0 && skipByteRequested) - { - _device->read(1); - skipByteRequested = false; - bytesAvailable--; - } - - if (bytesAvailable < packageSize) return; - double* channelSamples = new double[numOfPackagesToRead*_numOfChannels]; for (int i = 0; i < numOfPackagesToRead; i++)