diff --git a/src/plugins/simulator/xplane/simulatorxplane.cpp b/src/plugins/simulator/xplane/simulatorxplane.cpp index 81e655040..5120a2f53 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.cpp +++ b/src/plugins/simulator/xplane/simulatorxplane.cpp @@ -226,6 +226,15 @@ namespace BlackSimPlugin CSimulatorPluginCommon::callbackReceivedRequestedElevation(plane, callsign, isWater); } + void CSimulatorXPlane::setFlightNetworkConnected(bool connected) + { + if (connected && !this->isShuttingDownOrDisconnected()) + { + m_serviceProxy->resetFrameTotals(); + } + CSimulatorPluginCommon::setFlightNetworkConnected(connected); + } + bool CSimulatorXPlane::isSuspiciousTerrainValue(const CElevationPlane &elevation) { if (!elevation.hasMSLGeodeticHeight()) { return true; } diff --git a/src/plugins/simulator/xplane/simulatorxplane.h b/src/plugins/simulator/xplane/simulatorxplane.h index a95447995..520a0ce3e 100644 --- a/src/plugins/simulator/xplane/simulatorxplane.h +++ b/src/plugins/simulator/xplane/simulatorxplane.h @@ -146,6 +146,7 @@ namespace BlackSimPlugin virtual bool testSendSituationAndParts(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation, const BlackMisc::Aviation::CAircraftParts &parts) override; virtual void injectWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid) override; virtual void callbackReceivedRequestedElevation(const BlackMisc::Geo::CElevationPlane &plane, const BlackMisc::Aviation::CCallsign &callsign, bool isWater) override; + virtual void setFlightNetworkConnected(bool connected) override; //! @} //! \copydoc BlackMisc::Simulation::ISimulationEnvironmentProvider::requestElevation diff --git a/src/plugins/simulator/xplane/xswiftbusserviceproxy.cpp b/src/plugins/simulator/xplane/xswiftbusserviceproxy.cpp index 4fbfe3424..e1279eb4e 100644 --- a/src/plugins/simulator/xplane/xswiftbusserviceproxy.cpp +++ b/src/plugins/simulator/xplane/xswiftbusserviceproxy.cpp @@ -358,6 +358,11 @@ namespace BlackSimPlugin m_dbusInterface->callDBusAsync(QLatin1String("getFrameStats"), callback); } + void CXSwiftBusServiceProxy::resetFrameTotals() + { + m_dbusInterface->callDBus(QLatin1String("resetFrameTotals")); + } + double CXSwiftBusServiceProxy::getLatitudeDeg() const { return m_dbusInterface->callDBusRet(QLatin1String("getLatitudeDeg")); @@ -746,5 +751,6 @@ namespace BlackSimPlugin { m_dbusInterface->callDBus(QLatin1String("setSettingsJson"), json); } - } // ns + } + // ns } // ns diff --git a/src/plugins/simulator/xplane/xswiftbusserviceproxy.h b/src/plugins/simulator/xplane/xswiftbusserviceproxy.h index 36569d844..27703e2f6 100644 --- a/src/plugins/simulator/xplane/xswiftbusserviceproxy.h +++ b/src/plugins/simulator/xplane/xswiftbusserviceproxy.h @@ -217,6 +217,9 @@ namespace BlackSimPlugin void getFrameStatsAsync(double *o_averageFps, double *o_simTimeRatio, double *o_trackMilesShort, double *o_minutesLate); //! @} + //! \copydoc XSwiftBus::CService::resetFrameTotals + void resetFrameTotals(); + //! \copydoc XSwiftBus::CService::getLatitudeDeg //! @{ double getLatitudeDeg() const; diff --git a/src/xswiftbus/org.swift_project.xswiftbus.service.xml b/src/xswiftbus/org.swift_project.xswiftbus.service.xml index d79e15189..3a86634d6 100644 --- a/src/xswiftbus/org.swift_project.xswiftbus.service.xml +++ b/src/xswiftbus/org.swift_project.xswiftbus.service.xml @@ -105,6 +105,8 @@ R"XML( + + diff --git a/src/xswiftbus/service.cpp b/src/xswiftbus/service.cpp index c3820cfa1..16f2fcbdc 100644 --- a/src/xswiftbus/service.cpp +++ b/src/xswiftbus/service.cpp @@ -607,6 +607,14 @@ namespace XSwiftBus sendDBusMessage(reply); }); } + else if (message.getMethodName() == "resetFrameTotals") + { + maybeSendEmptyDBusReply(wantsReply, sender, serial); + queueDBusCall([=]() + { + resetFrameTotals(); + }); + } else if (message.getMethodName() == "getLatitudeDeg") { queueDBusCall([ = ]()