diff --git a/sdrbase/dsp/dspdevicesinkengine.cpp b/sdrbase/dsp/dspdevicesinkengine.cpp index 53d39895b..82d65701a 100644 --- a/sdrbase/dsp/dspdevicesinkengine.cpp +++ b/sdrbase/dsp/dspdevicesinkengine.cpp @@ -479,12 +479,12 @@ void DSPDeviceSinkEngine::handleSynchronousMessages() { BasebandSampleSource* source = ((DSPAddBasebandSampleSource*) message)->getSampleSource(); m_basebandSampleSources.push_back(source); + DSPSignalNotification notif(m_sampleRate, m_centerFrequency); + source->handleMessage(notif); checkNumberOfBasebandSources(); if (m_state == StRunning) { - DSPSignalNotification notif(m_sampleRate, m_centerFrequency); - source->handleMessage(notif); source->start(); } } @@ -503,12 +503,12 @@ void DSPDeviceSinkEngine::handleSynchronousMessages() { ThreadedBasebandSampleSource *threadedSource = ((DSPAddThreadedBasebandSampleSource*) message)->getThreadedSampleSource(); m_threadedBasebandSampleSources.push_back(threadedSource); + DSPSignalNotification notif(m_sampleRate, m_centerFrequency); + threadedSource->handleSourceMessage(notif); checkNumberOfBasebandSources(); if (m_state == StRunning) { - DSPSignalNotification notif(m_sampleRate, m_centerFrequency); - threadedSource->handleSourceMessage(notif); threadedSource->start(); } } diff --git a/sdrbase/dsp/dspdevicesourceengine.cpp b/sdrbase/dsp/dspdevicesourceengine.cpp index 8d77af6e0..a641de94e 100644 --- a/sdrbase/dsp/dspdevicesourceengine.cpp +++ b/sdrbase/dsp/dspdevicesourceengine.cpp @@ -559,6 +559,13 @@ void DSPDeviceSourceEngine::handleSynchronousMessages() { BasebandSampleSink* sink = ((DSPAddBasebandSampleSink*) message)->getSampleSink(); m_basebandSampleSinks.push_back(sink); + // initialize sample rate and center frequency in the sink: + DSPSignalNotification msg(m_sampleRate, m_centerFrequency); + sink->handleMessage(msg); + // start the sink: + if(m_state == StRunning) { + sink->start(); + } } else if (DSPRemoveBasebandSampleSink::match(*message)) { @@ -578,7 +585,9 @@ void DSPDeviceSourceEngine::handleSynchronousMessages() DSPSignalNotification msg(m_sampleRate, m_centerFrequency); threadedSink->handleSinkMessage(msg); // start the sink: - threadedSink->start(); + if(m_state == StRunning) { + threadedSink->start(); + } } else if (DSPRemoveThreadedBasebandSampleSink::match(*message)) {