DSP device source/sink engines: reworked add source sequence of actions

This commit is contained in:
f4exb 2018-01-02 16:25:34 +01:00
parent 80d243811f
commit 36b3137a48
2 changed files with 14 additions and 5 deletions

View File

@ -479,12 +479,12 @@ void DSPDeviceSinkEngine::handleSynchronousMessages()
{ {
BasebandSampleSource* source = ((DSPAddBasebandSampleSource*) message)->getSampleSource(); BasebandSampleSource* source = ((DSPAddBasebandSampleSource*) message)->getSampleSource();
m_basebandSampleSources.push_back(source); m_basebandSampleSources.push_back(source);
DSPSignalNotification notif(m_sampleRate, m_centerFrequency);
source->handleMessage(notif);
checkNumberOfBasebandSources(); checkNumberOfBasebandSources();
if (m_state == StRunning) if (m_state == StRunning)
{ {
DSPSignalNotification notif(m_sampleRate, m_centerFrequency);
source->handleMessage(notif);
source->start(); source->start();
} }
} }
@ -503,12 +503,12 @@ void DSPDeviceSinkEngine::handleSynchronousMessages()
{ {
ThreadedBasebandSampleSource *threadedSource = ((DSPAddThreadedBasebandSampleSource*) message)->getThreadedSampleSource(); ThreadedBasebandSampleSource *threadedSource = ((DSPAddThreadedBasebandSampleSource*) message)->getThreadedSampleSource();
m_threadedBasebandSampleSources.push_back(threadedSource); m_threadedBasebandSampleSources.push_back(threadedSource);
DSPSignalNotification notif(m_sampleRate, m_centerFrequency);
threadedSource->handleSourceMessage(notif);
checkNumberOfBasebandSources(); checkNumberOfBasebandSources();
if (m_state == StRunning) if (m_state == StRunning)
{ {
DSPSignalNotification notif(m_sampleRate, m_centerFrequency);
threadedSource->handleSourceMessage(notif);
threadedSource->start(); threadedSource->start();
} }
} }

View File

@ -559,6 +559,13 @@ void DSPDeviceSourceEngine::handleSynchronousMessages()
{ {
BasebandSampleSink* sink = ((DSPAddBasebandSampleSink*) message)->getSampleSink(); BasebandSampleSink* sink = ((DSPAddBasebandSampleSink*) message)->getSampleSink();
m_basebandSampleSinks.push_back(sink); 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)) else if (DSPRemoveBasebandSampleSink::match(*message))
{ {
@ -578,7 +585,9 @@ void DSPDeviceSourceEngine::handleSynchronousMessages()
DSPSignalNotification msg(m_sampleRate, m_centerFrequency); DSPSignalNotification msg(m_sampleRate, m_centerFrequency);
threadedSink->handleSinkMessage(msg); threadedSink->handleSinkMessage(msg);
// start the sink: // start the sink:
threadedSink->start(); if(m_state == StRunning) {
threadedSink->start();
}
} }
else if (DSPRemoveThreadedBasebandSampleSink::match(*message)) else if (DSPRemoveThreadedBasebandSampleSink::match(*message))
{ {