diff --git a/src/AppFrame.cpp b/src/AppFrame.cpp index 92a71b8..9a68285 100644 --- a/src/AppFrame.cpp +++ b/src/AppFrame.cpp @@ -34,7 +34,7 @@ EVT_IDLE(AppFrame::OnIdle) wxEND_EVENT_TABLE() AppFrame::AppFrame() : - wxFrame(NULL, wxID_ANY, CUBICSDR_TITLE), activeDemodulator(NULL) { +wxFrame(NULL, wxID_ANY, CUBICSDR_TITLE), activeDemodulator(NULL) { wxBoxSizer *vbox = new wxBoxSizer(wxVERTICAL); wxBoxSizer *demodOpts = new wxBoxSizer(wxVERTICAL); @@ -405,6 +405,11 @@ void AppFrame::OnIdle(wxIdleEvent& event) { mgr->setLastGain(demodGainMeter->getInputValue()); demodGainMeter->setLevel(demodGainMeter->getInputValue()); } + + if (wxGetApp().getFrequency() != demodWaterfallCanvas->getCenterFrequency()) { + demodWaterfallCanvas->setCenterFrequency(wxGetApp().getFrequency()); + demodSpectrumCanvas->setCenterFrequency(wxGetApp().getFrequency()); + } } if (!waterfallCanvas->HasFocus()) { diff --git a/src/demod/DemodulatorMgr.cpp b/src/demod/DemodulatorMgr.cpp index 0801915..d26a9e3 100644 --- a/src/demod/DemodulatorMgr.cpp +++ b/src/demod/DemodulatorMgr.cpp @@ -115,6 +115,9 @@ void DemodulatorMgr::setActiveDemodulator(DemodulatorInstance *demod, bool tempo } DemodulatorInstance *DemodulatorMgr::getActiveDemodulator() { + if (activeDemodulator && !activeDemodulator->isActive()) { + activeDemodulator = getLastActiveDemodulator(); + } return activeDemodulator; } @@ -144,7 +147,16 @@ void DemodulatorMgr::garbageCollect() { void DemodulatorMgr::updateLastState() { if (std::find(demods.begin(), demods.end(), lastActiveDemodulator) == demods.end()) { - lastActiveDemodulator = activeDemodulator; + if (activeDemodulator && activeDemodulator->isActive()) { + lastActiveDemodulator = activeDemodulator; + } else if (activeDemodulator && !activeDemodulator->isActive()){ + activeDemodulator = NULL; + lastActiveDemodulator = NULL; + } + } + + if (lastActiveDemodulator && !lastActiveDemodulator->isActive()) { + lastActiveDemodulator = NULL; } if (lastActiveDemodulator) { diff --git a/src/sdr/SDRPostThread.cpp b/src/sdr/SDRPostThread.cpp index 1fa8896..81c9ef4 100644 --- a/src/sdr/SDRPostThread.cpp +++ b/src/sdr/SDRPostThread.cpp @@ -196,6 +196,9 @@ void SDRPostThread::threadMain() { } } else if (!demod->isActive()) { demod->setActive(true); + if (wxGetApp().getDemodMgr().getLastActiveDemodulator() == NULL) { + wxGetApp().getDemodMgr().setActiveDemodulator(demod); + } } if (!demod->isActive()) {