Merge pull request #416 from vsonnier/ModemArgInfoList_concurrent_access_crash

Crash with non-empty ModemArgInfoList (in FM Stereo)
This commit is contained in:
Charles J. Cliffe 2016-07-28 12:19:32 -05:00 committed by GitHub
commit a984ce5b41
3 changed files with 10 additions and 7 deletions

View File

@ -1496,8 +1496,12 @@ void AppFrame::OnIdle(wxIdleEvent& event) {
demod = wxGetApp().getDemodMgr().getLastActiveDemodulator();
if (modemPropertiesUpdated.load() && demod && demod->isModemInitialized()) {
modemProps->initProperties(demod->getModemArgs());
//reset notification flag
modemPropertiesUpdated.store(false);
modemProps->initProperties(demod->getModemArgs());
demodTray->Layout();
modemProps->fitColumns();
#if ENABLE_DIGITAL_LAB
@ -1509,7 +1513,7 @@ void AppFrame::OnIdle(wxIdleEvent& event) {
}
demod->showOutput();
}
#endif
#endif
}
if (modemProps->isCollapsed() && modemProps->GetMinWidth() > 22) {
@ -1873,8 +1877,8 @@ FFTVisualDataThread *AppFrame::getWaterfallDataThread() {
return waterfallDataThread;
}
void AppFrame::updateModemProperties(ModemArgInfoList args) {
newModemArgs = args;
void AppFrame::notifyUpdateModemProperties() {
modemPropertiesUpdated.store(true);
}

View File

@ -83,7 +83,7 @@ public:
FFTVisualDataThread *getWaterfallDataThread();
void updateModemProperties(ModemArgInfoList args);
void notifyUpdateModemProperties();
void setMainWaterfallFFTSize(int fftSize);
void gkNudgeLeft(DemodulatorInstance *demod, int snap);
@ -163,7 +163,6 @@ private:
ModemProperties *modemProps;
std::atomic_bool modemPropertiesUpdated;
ModemArgInfoList newModemArgs;
wxMenuItem *showTipMenuItem;
bool lowPerfMode;

View File

@ -61,7 +61,7 @@ void DemodulatorWorkerThread::run() {
cModem->writeSettings(demodCommand.settings);
}
result.sampleRate = demodCommand.sampleRate;
wxGetApp().getAppFrame()->updateModemProperties(cModem->getSettings());
wxGetApp().getAppFrame()->notifyUpdateModemProperties();
}
result.modem = cModem;