From aed6a432ab88c63dba40b66a983bfd8b371ac8eb Mon Sep 17 00:00:00 2001 From: Peter L Jones Date: Fri, 22 May 2020 18:02:50 +0100 Subject: [PATCH] #234 Fix from @Snayler for offset problem in recorder --- src/recorder/jamrecorder.cpp | 11 +++++++++-- src/recorder/jamrecorder.h | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/recorder/jamrecorder.cpp b/src/recorder/jamrecorder.cpp index 4327ccf2..ea79a57b 100755 --- a/src/recorder/jamrecorder.cpp +++ b/src/recorder/jamrecorder.cpp @@ -109,6 +109,7 @@ void CJamClient::Disconnect() CJamSession::CJamSession(QDir recordBaseDir) : sessionDir (QDir(recordBaseDir.absoluteFilePath("Jam-" + QDateTime().currentDateTimeUtc().toString("yyyyMMdd-HHmmsszzz")))), currentFrame (0), + chIdDisconnected (-1), vecptrJamClients (MAX_NUM_CHANNELS), jamClientConnections() { @@ -130,8 +131,6 @@ CJamSession::CJamSession(QDir recordBaseDir) : // Explicitly set all the pointers to "empty" vecptrJamClients.fill(nullptr); - - currentFrame = 0; } /** @@ -150,6 +149,7 @@ void CJamSession::DisconnectClient(int iChID) delete vecptrJamClients[iChID]; vecptrJamClients[iChID] = nullptr; + chIdDisconnected = iChID; } /** @@ -167,6 +167,13 @@ void CJamSession::DisconnectClient(int iChID) */ void CJamSession::Frame(const int iChID, const QString name, const CHostAddress address, const int numAudioChannels, const CVector data, int iServerFrameSizeSamples) { + if ( iChID == chIdDisconnected ) + { + // DisconnectClient has just been called for this channel - this frame is "too late" + chIdDisconnected = -1; + return; + } + if (vecptrJamClients[iChID] == nullptr) { // then we have not seen this client this session diff --git a/src/recorder/jamrecorder.h b/src/recorder/jamrecorder.h index 2bc128db..7ebbbe54 100755 --- a/src/recorder/jamrecorder.h +++ b/src/recorder/jamrecorder.h @@ -128,6 +128,7 @@ private: const QDir sessionDir; qint64 currentFrame; + int chIdDisconnected; QVector vecptrJamClients; QList jamClientConnections; };