1
0
Fork 0
mirror of https://github.com/EdgeTX/edgetx.git synced 2025-07-23 00:05:13 +03:00

[Simulator] Fix crash if error happens at startup before timer was created.

This commit is contained in:
Max Paperno 2017-02-12 16:00:16 -05:00
parent 586567927a
commit d90b1e0640

View file

@ -46,7 +46,7 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface *simulator
simulator(simulator), simulator(simulator),
firmware(getCurrentFirmware()), firmware(getCurrentFirmware()),
radioSettings(GeneralSettings()), radioSettings(GeneralSettings()),
timer(NULL), timer(new QTimer(this)),
radioUiWidget(NULL), radioUiWidget(NULL),
vJoyLeft(NULL), vJoyLeft(NULL),
vJoyRight(NULL), vJoyRight(NULL),
@ -118,6 +118,10 @@ SimulatorWidget::SimulatorWidget(QWidget * parent, SimulatorInterface *simulator
connect(vJoyRight, SIGNAL(trimButtonPressed(int)), this, SLOT(onTrimPressed(int))); connect(vJoyRight, SIGNAL(trimButtonPressed(int)), this, SLOT(onTrimPressed(int)));
connect(vJoyRight, SIGNAL(trimButtonReleased()), this, SLOT(onTrimReleased())); connect(vJoyRight, SIGNAL(trimButtonReleased()), this, SLOT(onTrimReleased()));
connect(vJoyRight, SIGNAL(trimSliderMoved(int,int)), this, SLOT(onTrimSliderMoved(int,int))); connect(vJoyRight, SIGNAL(trimSliderMoved(int,int)), this, SLOT(onTrimSliderMoved(int,int)));
timer->setInterval(10);
connect(timer, SIGNAL(timeout()), this, SLOT(onTimerEvent()));
connect(timer, SIGNAL(timeout()), radioUiWidget, SLOT(updateUi()));
} }
SimulatorWidget::~SimulatorWidget() SimulatorWidget::~SimulatorWidget()
@ -443,13 +447,16 @@ void SimulatorWidget::start()
void SimulatorWidget::stop() void SimulatorWidget::stop()
{ {
if (timer)
timer->stop(); timer->stop();
if (simulator) {
simulator->stop(); simulator->stop();
if (saveTempRadioData) { if (saveTempRadioData) {
startupData.fill(0, getEEpromSize(m_board)); startupData.fill(0, getEEpromSize(m_board));
simulator->readEepromData(startupData); simulator->readEepromData(startupData);
} }
} }
}
void SimulatorWidget::restart() void SimulatorWidget::restart()
{ {
@ -629,18 +636,13 @@ void SimulatorWidget::setupJoysticks()
void SimulatorWidget::setupTimer() void SimulatorWidget::setupTimer()
{ {
if (timer) { if (!timer)
timer->stop(); return;
disconnect(timer, 0, this, 0);
disconnect(timer, 0, radioUiWidget, 0);
timer->deleteLater();
timer = NULL;
}
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(onTimerEvent()));
connect(timer, SIGNAL(timeout()), radioUiWidget, SLOT(updateUi()));
timer->start(10); if (timer->isActive())
timer->stop();
timer->start();
} }
void SimulatorWidget::restoreRadioWidgetsState() void SimulatorWidget::restoreRadioWidgetsState()