From 34bf0c4c612425d032a7dbff9d0d98e47ef8480f Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 30 Oct 2016 20:57:27 +0100 Subject: [PATCH] Tx ph.2: fixed core dump in AM modulator by properly locking the settings mutex in the pull method --- plugins/channeltx/modam/ammod.cpp | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/plugins/channeltx/modam/ammod.cpp b/plugins/channeltx/modam/ammod.cpp index e67335a07..f83175eb8 100644 --- a/plugins/channeltx/modam/ammod.cpp +++ b/plugins/channeltx/modam/ammod.cpp @@ -65,25 +65,7 @@ void AMMod::pull(Sample& sample) { Complex ci; -// Resampler used for interpolation only -// m_interpolator.resample(&m_interpolatorDistanceRemain, m_modSample, &m_interpolatorConsumed, &ci); -// m_interpolatorDistanceRemain += m_interpolatorDistance; -// -// if (m_interpolatorConsumed) -// { -// Real t = m_toneNco.next(); -// m_modSample.real(((t+1.0f) * m_running.m_modFactor * 16384.0f)); // modulate and scale zero frequency carrier -// m_modSample.imag(0.0f); -// m_interpolatorConsumed = false; -// } - -// Specialized interpolator -// if (m_interpolator.interpolate(&m_interpolatorDistanceRemain, m_modSample, &ci)) -// { -// Real t = m_toneNco.next(); -// m_modSample.real(((t+1.0f) * m_running.m_modFactor * 16384.0f)); // modulate and scale zero frequency carrier -// m_modSample.imag(0.0f); -// } + m_settingsMutex.lock(); if (m_interpolatorDistance > 1.0f) // decimate { @@ -112,6 +94,8 @@ void AMMod::pull(Sample& sample) ci *= m_carrierNco.nextIQ(); // shift to carrier frequency + m_settingsMutex.unlock(); + Real magsq = ci.real() * ci.real() + ci.imag() * ci.imag(); magsq /= (1<<30); m_movingAverage.feed(magsq);