From cfc9c3166e88aad36d64da0c3114143a229a6d42 Mon Sep 17 00:00:00 2001 From: Roland Winklmeier Date: Mon, 24 Sep 2018 17:09:48 +0200 Subject: [PATCH] Decouple flightloop processing from DBus There are needs to not only run DBus tasks, but also different generic tasks during the processing loop. --- src/xswiftbus/dbusobject.h | 3 --- src/xswiftbus/plugin.cpp | 6 +++--- src/xswiftbus/service.cpp | 2 +- src/xswiftbus/service.h | 3 ++- src/xswiftbus/traffic.cpp | 2 +- src/xswiftbus/traffic.h | 3 ++- src/xswiftbus/weather.cpp | 2 +- src/xswiftbus/weather.h | 4 +++- 8 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/xswiftbus/dbusobject.h b/src/xswiftbus/dbusobject.h index 107a27eb6..d5753f756 100644 --- a/src/xswiftbus/dbusobject.h +++ b/src/xswiftbus/dbusobject.h @@ -35,9 +35,6 @@ namespace XSwiftBus //! \warning Before calling this method, make sure that a valid DBus connection was set. void registerDBusObjectPath(const std::string &interfaceName, const std::string &objectPath); - //! Process DBus messages. Needs to be implemented by deriving classes - virtual int processDBus() = 0; - protected: //! DBus message handler virtual DBusHandlerResult dbusMessageHandler(const CDBusMessage &message) = 0; diff --git a/src/xswiftbus/plugin.cpp b/src/xswiftbus/plugin.cpp index 3a8610031..7ba0bc30b 100644 --- a/src/xswiftbus/plugin.cpp +++ b/src/xswiftbus/plugin.cpp @@ -156,9 +156,9 @@ namespace XSwiftBus { auto *plugin = static_cast(refcon); plugin->m_dbusDispatcher.runOnce(); - if (plugin->m_service) { plugin->m_service->processDBus(); } - if (plugin->m_weather) { plugin->m_weather->processDBus(); } - if (plugin->m_traffic) { plugin->m_traffic->processDBus(); } + if (plugin->m_service) { plugin->m_service->process(); } + if (plugin->m_weather) { plugin->m_weather->process(); } + if (plugin->m_traffic) { plugin->m_traffic->process(); } return -1; } diff --git a/src/xswiftbus/service.cpp b/src/xswiftbus/service.cpp index 3f9467423..4be4c2b81 100644 --- a/src/xswiftbus/service.cpp +++ b/src/xswiftbus/service.cpp @@ -625,7 +625,7 @@ namespace XSwiftBus return DBUS_HANDLER_RESULT_HANDLED; } - int CService::processDBus() + int CService::process() { invokeQueuedDBusCalls(); return 1; diff --git a/src/xswiftbus/service.h b/src/xswiftbus/service.h index 63b0e07ac..12fc1716b 100644 --- a/src/xswiftbus/service.h +++ b/src/xswiftbus/service.h @@ -226,7 +226,8 @@ namespace XSwiftBus //! \copydoc XSwiftBus::CMessageBoxControl::toggle void toggleMessageBoxVisibility() { m_messages.toggle(); } - int processDBus() override; + //! Perform generic processing + int process(); protected: DBusHandlerResult dbusMessageHandler(const CDBusMessage &message) override; diff --git a/src/xswiftbus/traffic.cpp b/src/xswiftbus/traffic.cpp index 1320caa1c..27b11b4a4 100644 --- a/src/xswiftbus/traffic.cpp +++ b/src/xswiftbus/traffic.cpp @@ -723,7 +723,7 @@ namespace XSwiftBus return DBUS_HANDLER_RESULT_HANDLED; } - int CTraffic::processDBus() + int CTraffic::process() { invokeQueuedDBusCalls(); return 1; diff --git a/src/xswiftbus/traffic.h b/src/xswiftbus/traffic.h index e52af449b..0abf62cec 100644 --- a/src/xswiftbus/traffic.h +++ b/src/xswiftbus/traffic.h @@ -118,7 +118,8 @@ namespace XSwiftBus //! Sets the aircraft with callsign to be followed in plane view void setFollowedAircraft(const std::string &callsign); - int processDBus() override; + //! Perform generic processing + int process(); protected: DBusHandlerResult dbusMessageHandler(const CDBusMessage &message) override; diff --git a/src/xswiftbus/weather.cpp b/src/xswiftbus/weather.cpp index bf8355b2e..1f214fbfa 100644 --- a/src/xswiftbus/weather.cpp +++ b/src/xswiftbus/weather.cpp @@ -241,7 +241,7 @@ namespace XSwiftBus return DBUS_HANDLER_RESULT_HANDLED; } - int CWeather::processDBus() + int CWeather::process() { invokeQueuedDBusCalls(); return 1; diff --git a/src/xswiftbus/weather.h b/src/xswiftbus/weather.h index 03505857a..f53a349d8 100644 --- a/src/xswiftbus/weather.h +++ b/src/xswiftbus/weather.h @@ -97,7 +97,9 @@ namespace XSwiftBus //! \param turbulence Amount of turbulence [0,10]. void setWindLayer(int layer, int altitude, double direction, int speed, int shearDirection, int shearSpeed, int turbulence); - virtual int processDBus() override; + //! Perform generic processing + int process(); + protected: virtual DBusHandlerResult dbusMessageHandler(const CDBusMessage &message) override;