diff --git a/src/plugins/simulator/fscommon/fsuipcimpl.cpp b/src/plugins/simulator/fscommon/fsuipcimpl.cpp index d49cc73f4..ac43661f9 100644 --- a/src/plugins/simulator/fscommon/fsuipcimpl.cpp +++ b/src/plugins/simulator/fscommon/fsuipcimpl.cpp @@ -18,13 +18,17 @@ // bug in FSUIPC_User.h, windows.h not included, so we have to import it first #ifdef SWIFT_USING_FSUIPC32 +extern "C" { #include "../fsuipc32/IPCuser.h" #include "../fsuipc32/FSUIPC_User.h" #include "../fsuipc32/NewWeather.h" +} #elif SWIFT_USING_FSUIPC64 +extern "C" { #include "../fsuipc64/IPCuser64.h" #include "../fsuipc64/FSUIPC_User64.h" #include "../fsuipc64/NewWeather.h" +} #endif #include "blackmisc/simulation/fscommon/bcdconversions.h" @@ -526,6 +530,7 @@ namespace BlackSimPlugin void CFsuipc::processWeatherMessages() { if (m_weatherMessageQueue.empty()) { return; } + if (!m_connected) { return; } FsuipcWeatherMessage &weatherMessage = m_weatherMessageQueue.first(); DWORD dwResult; diff --git a/src/plugins/simulator/fscommon/simulatorfscommon.cpp b/src/plugins/simulator/fscommon/simulatorfscommon.cpp index 215327b56..46afd579f 100644 --- a/src/plugins/simulator/fscommon/simulatorfscommon.cpp +++ b/src/plugins/simulator/fscommon/simulatorfscommon.cpp @@ -30,13 +30,13 @@ namespace BlackSimPlugin { CSimulatorFsCommon::CSimulatorFsCommon( const CSimulatorPluginInfo &info, - IOwnAircraftProvider *ownAircraftProvider, + IOwnAircraftProvider *ownAircraftProvider, IRemoteAircraftProvider *renderedAircraftProvider, - IWeatherGridProvider *weatherGridProvider, - IClientProvider *clientProvider, + IWeatherGridProvider *weatherGridProvider, + IClientProvider *clientProvider, QObject *parent) : CSimulatorPluginCommon(info, ownAircraftProvider, renderedAircraftProvider, weatherGridProvider, clientProvider, parent), - m_fsuipc(std::make_unique(this)) + m_fsuipc(new CFsuipc(this)) { CSimulatorFsCommon::registerHelp(); } diff --git a/src/plugins/simulator/fscommon/simulatorfscommon.h b/src/plugins/simulator/fscommon/simulatorfscommon.h index 06d30687d..1ced21612 100644 --- a/src/plugins/simulator/fscommon/simulatorfscommon.h +++ b/src/plugins/simulator/fscommon/simulatorfscommon.h @@ -79,9 +79,9 @@ namespace BlackSimPlugin //! Register help static void registerHelp(); - std::unique_ptr m_fsuipc; //!< FSUIPC - bool m_useFsuipc = false; //!< use FSUIPC - bool m_simPaused = false; //!< Simulator paused? + CFsuipc *m_fsuipc = nullptr; //!< FSUIPC + bool m_useFsuipc = false; //!< use FSUIPC + bool m_simPaused = false; //!< Simulator paused? bool m_simTimeSynced = false; //!< Time synchronized? BlackMisc::PhysicalQuantities::CTime m_syncTimeOffset; //!< time offset BlackMisc::Aviation::CAirportList m_airportsInRangeFromSimulator; //!< airports in range of own aircraft