diff --git a/app/main.cpp b/app/main.cpp index c50a5a874..5400508f7 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -34,7 +34,7 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo */ QCoreApplication::setOrganizationName("f4exb"); QCoreApplication::setApplicationName("SDRangel"); - QCoreApplication::setApplicationVersion("3.10.0"); + QCoreApplication::setApplicationVersion("3.10.1"); #if 1 qApp->setStyle(QStyleFactory::create("fusion")); diff --git a/appsrv/main.cpp b/appsrv/main.cpp index 8e508bae6..27041b134 100644 --- a/appsrv/main.cpp +++ b/appsrv/main.cpp @@ -55,7 +55,7 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo QCoreApplication::setOrganizationName("f4exb"); QCoreApplication::setApplicationName("SDRangelSrv"); - QCoreApplication::setApplicationVersion("3.10.0"); + QCoreApplication::setApplicationVersion("3.10.1"); int catchSignals[] = {SIGQUIT, SIGINT, SIGTERM, SIGHUP}; std::vector vsig(catchSignals, catchSignals + sizeof(catchSignals) / sizeof(int)); diff --git a/debian/changelog b/debian/changelog index ca9adf957..58a962188 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +sdrangel (3.10.1-1) unstable; urgency=medium + + * LimeSDR: fixed segfault when stopping one device in multiple stream confguration + + -- Edouard Griffiths, F4EXB Sun, 07 Jan 2018 23:14:18 +0100 + sdrangel (3.10.0-1) unstable; urgency=medium * Implemented external command handling from the GUI diff --git a/plugins/samplesink/limesdroutput/limesdroutput.cpp b/plugins/samplesink/limesdroutput/limesdroutput.cpp index 3faa02b9e..841cbb67c 100644 --- a/plugins/samplesink/limesdroutput/limesdroutput.cpp +++ b/plugins/samplesink/limesdroutput/limesdroutput.cpp @@ -83,7 +83,10 @@ bool LimeSDROutput::openDevice() qDebug("LimeSDROutput::openDevice: look in Ix buddies"); DeviceSinkAPI *sinkBuddy = m_deviceAPI->getSinkBuddies()[0]; - m_deviceShared = *((DeviceLimeSDRShared *) sinkBuddy->getBuddySharedPtr()); // copy shared data + //m_deviceShared = *((DeviceLimeSDRShared *) sinkBuddy->getBuddySharedPtr()); // copy shared data + DeviceLimeSDRShared *deviceLimeSDRShared = (DeviceLimeSDRShared*) sinkBuddy->getBuddySharedPtr(); + m_deviceShared.m_deviceParams = deviceLimeSDRShared->m_deviceParams; + DeviceLimeSDRParams *deviceParams = m_deviceShared.m_deviceParams; // get device parameters if (deviceParams == 0) @@ -134,7 +137,9 @@ bool LimeSDROutput::openDevice() qDebug("LimeSDROutput::openDevice: look in Rx buddies"); DeviceSourceAPI *sourceBuddy = m_deviceAPI->getSourceBuddies()[0]; - m_deviceShared = *((DeviceLimeSDRShared *) sourceBuddy->getBuddySharedPtr()); // copy parameters + //m_deviceShared = *((DeviceLimeSDRShared *) sourceBuddy->getBuddySharedPtr()); // copy parameters + DeviceLimeSDRShared *deviceLimeSDRShared = (DeviceLimeSDRShared*) sourceBuddy->getBuddySharedPtr(); + m_deviceShared.m_deviceParams = deviceLimeSDRShared->m_deviceParams; if (m_deviceShared.m_deviceParams == 0) { diff --git a/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp b/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp index f334a89ba..a53c37602 100644 --- a/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp +++ b/plugins/samplesink/limesdroutput/limesdroutputplugin.cpp @@ -34,7 +34,7 @@ const PluginDescriptor LimeSDROutputPlugin::m_pluginDescriptor = { QString("LimeSDR Output"), - QString("3.9.0"), + QString("3.10.1"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/limesdrinput/limesdrinput.cpp b/plugins/samplesource/limesdrinput/limesdrinput.cpp index 3d38c8a65..d9299751d 100644 --- a/plugins/samplesource/limesdrinput/limesdrinput.cpp +++ b/plugins/samplesource/limesdrinput/limesdrinput.cpp @@ -101,7 +101,10 @@ bool LimeSDRInput::openDevice() qDebug("LimeSDRInput::openDevice: look in Rx buddies"); DeviceSourceAPI *sourceBuddy = m_deviceAPI->getSourceBuddies()[0]; - m_deviceShared = *((DeviceLimeSDRShared *) sourceBuddy->getBuddySharedPtr()); // copy shared data + //m_deviceShared = *((DeviceLimeSDRShared *) sourceBuddy->getBuddySharedPtr()); // copy shared data + DeviceLimeSDRShared *deviceLimeSDRShared = (DeviceLimeSDRShared*) sourceBuddy->getBuddySharedPtr(); + m_deviceShared.m_deviceParams = deviceLimeSDRShared->m_deviceParams; + DeviceLimeSDRParams *deviceParams = m_deviceShared.m_deviceParams; // get device parameters if (deviceParams == 0) @@ -152,7 +155,9 @@ bool LimeSDRInput::openDevice() qDebug("LimeSDRInput::openDevice: look in Tx buddies"); DeviceSinkAPI *sinkBuddy = m_deviceAPI->getSinkBuddies()[0]; - m_deviceShared = *((DeviceLimeSDRShared *) sinkBuddy->getBuddySharedPtr()); // copy parameters + //m_deviceShared = *((DeviceLimeSDRShared *) sinkBuddy->getBuddySharedPtr()); // copy parameters + DeviceLimeSDRShared *deviceLimeSDRShared = (DeviceLimeSDRShared*) sinkBuddy->getBuddySharedPtr(); + m_deviceShared.m_deviceParams = deviceLimeSDRShared->m_deviceParams; if (m_deviceShared.m_deviceParams == 0) { @@ -219,7 +224,8 @@ void LimeSDRInput::suspendTxBuddies() { DeviceLimeSDRShared *buddySharedPtr = (DeviceLimeSDRShared *) (*itSink)->getBuddySharedPtr(); - if (buddySharedPtr->m_thread) { + if ((buddySharedPtr->m_thread) && buddySharedPtr->m_thread->isRunning()) + { buddySharedPtr->m_thread->stopWork(); buddySharedPtr->m_threadWasRunning = true; } diff --git a/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp b/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp index 721afdc27..21c043c48 100644 --- a/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp +++ b/plugins/samplesource/limesdrinput/limesdrinputplugin.cpp @@ -33,7 +33,7 @@ const PluginDescriptor LimeSDRInputPlugin::m_pluginDescriptor = { QString("LimeSDR Input"), - QString("3.9.0"), + QString("3.10.1"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true,