refs #848, check flags for FSUIPC parts before using them

This commit is contained in:
Klaus Basan
2016-12-31 05:10:03 +01:00
committed by Mathew Sutcliffe
parent c609c555b4
commit 4f1dc00d67
2 changed files with 17 additions and 15 deletions

View File

@@ -301,7 +301,7 @@ namespace BlackSimPlugin
void CSimulatorFs9::ps_dispatch()
{
if (m_useFsuipc && m_fsuipc)
if (m_useFsuipc && m_fsuipc && m_fsuipc->isConnected())
{
CSimulatedAircraft fsuipcAircraft(getOwnAircraft());
const bool ok = m_fsuipc->read(fsuipcAircraft, true, true, true);
@@ -385,19 +385,20 @@ namespace BlackSimPlugin
void CSimulatorFs9::injectWeatherGrid(const Weather::CWeatherGrid &weatherGrid)
{
if (!m_useFsuipc || !m_fsuipc) { return; }
if (!m_fsuipc->isConnected()) { return; }
m_fsuipc->write(weatherGrid);
}
void CSimulatorFs9::reloadWeatherSettings()
{
if (m_fsuipc->isConnected())
if (!m_useFsuipc || !m_fsuipc) { return; }
if (!m_fsuipc->isConnected()) { return; }
const auto selectedWeatherScenario = m_weatherScenarioSettings.get();
if (!CWeatherScenario::isRealWeatherScenario(selectedWeatherScenario))
{
auto selectedWeatherScenario = m_weatherScenarioSettings.get();
if (!CWeatherScenario::isRealWeatherScenario(selectedWeatherScenario))
{
m_lastWeatherPosition = {};
injectWeatherGrid(CWeatherGrid::getByScenario(selectedWeatherScenario));
}
m_lastWeatherPosition = {};
injectWeatherGrid(CWeatherGrid::getByScenario(selectedWeatherScenario));
}
}

View File

@@ -1055,19 +1055,20 @@ namespace BlackSimPlugin
void CSimulatorFsx::injectWeatherGrid(const Weather::CWeatherGrid &weatherGrid)
{
if (!m_useFsuipc || !m_fsuipc) { return; }
if (!m_fsuipc->isConnected()) { return; }
m_fsuipc->write(weatherGrid);
}
void CSimulatorFsx::reloadWeatherSettings()
{
if (m_fsuipc->isConnected())
if (!m_useFsuipc || !m_fsuipc) { return; }
if (!m_fsuipc->isConnected()) { return; }
const auto selectedWeatherScenario = m_weatherScenarioSettings.get();
if (!CWeatherScenario::isRealWeatherScenario(selectedWeatherScenario))
{
auto selectedWeatherScenario = m_weatherScenarioSettings.get();
if (!CWeatherScenario::isRealWeatherScenario(selectedWeatherScenario))
{
m_lastWeatherPosition = {};
injectWeatherGrid(CWeatherGrid::getByScenario(selectedWeatherScenario));
}
m_lastWeatherPosition = {};
injectWeatherGrid(CWeatherGrid::getByScenario(selectedWeatherScenario));
}
}