1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-11-26 09:48:45 -05:00

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();
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();
}
}

View File

@ -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,8 +585,10 @@ void DSPDeviceSourceEngine::handleSynchronousMessages()
DSPSignalNotification msg(m_sampleRate, m_centerFrequency);
threadedSink->handleSinkMessage(msg);
// start the sink:
if(m_state == StRunning) {
threadedSink->start();
}
}
else if (DSPRemoveThreadedBasebandSampleSink::match(*message))
{
ThreadedBasebandSampleSink* threadedSink = ((DSPRemoveThreadedBasebandSampleSink*) message)->getThreadedSampleSink();