MODEMARGINFOLIST crash: fixed by removing 'ModemArgInfoList newModemArgs' from AppFrame, actually not needed

This commit is contained in:
vsonnier 2016-07-28 16:46:18 +02:00
parent 61aa57884f
commit 11ed2bd20b
3 changed files with 10 additions and 7 deletions

View File

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

View File

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

View File

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