mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-11-01 18:00:06 +00:00
Only create a new position source once when multiple settings change
This commit is contained in:
parent
44698a593f
commit
2efdd1b046
1 changed files with 22 additions and 3 deletions
|
|
@ -1,4 +1,5 @@
|
|||
#include <scwx/qt/manager/position_manager.hpp>
|
||||
#include <scwx/qt/manager/settings_manager.hpp>
|
||||
#include <scwx/qt/settings/general_settings.hpp>
|
||||
#include <scwx/qt/types/location_types.hpp>
|
||||
#include <scwx/common/geographic.hpp>
|
||||
|
|
@ -36,13 +37,27 @@ public:
|
|||
|
||||
positioningPluginCallbackUuid_ =
|
||||
generalSettings.positioning_plugin().RegisterValueChangedCallback(
|
||||
[this](const std::string&) { CreatePositionSource(); });
|
||||
[this](const std::string&)
|
||||
{ createPositionSourcePending_ = true; });
|
||||
nmeaBaudRateCallbackUuid_ =
|
||||
generalSettings.nmea_baud_rate().RegisterValueChangedCallback(
|
||||
[this](const std::int64_t&) { CreatePositionSource(); });
|
||||
[this](const std::int64_t&)
|
||||
{ createPositionSourcePending_ = true; });
|
||||
nmeaSourceCallbackUuid_ =
|
||||
generalSettings.nmea_source().RegisterValueChangedCallback(
|
||||
[this](const std::string&) { CreatePositionSource(); });
|
||||
[this](const std::string&)
|
||||
{ createPositionSourcePending_ = true; });
|
||||
|
||||
connect(&SettingsManager::Instance(),
|
||||
&SettingsManager::SettingsSaved,
|
||||
self_,
|
||||
[this]()
|
||||
{
|
||||
if (createPositionSourcePending_)
|
||||
{
|
||||
CreatePositionSource();
|
||||
}
|
||||
});
|
||||
}
|
||||
~Impl()
|
||||
{
|
||||
|
|
@ -78,6 +93,8 @@ public:
|
|||
boost::uuids::uuid positioningPluginCallbackUuid_ {};
|
||||
boost::uuids::uuid nmeaBaudRateCallbackUuid_ {};
|
||||
boost::uuids::uuid nmeaSourceCallbackUuid_ {};
|
||||
|
||||
bool createPositionSourcePending_ {false};
|
||||
};
|
||||
|
||||
PositionManager::PositionManager() : p(std::make_unique<Impl>(this)) {}
|
||||
|
|
@ -97,6 +114,8 @@ void PositionManager::Impl::CreatePositionSource()
|
|||
{
|
||||
auto& generalSettings = settings::GeneralSettings::Instance();
|
||||
|
||||
createPositionSourcePending_ = false;
|
||||
|
||||
types::PositioningPlugin positioningPlugin = types::GetPositioningPlugin(
|
||||
generalSettings.positioning_plugin().GetValue());
|
||||
std::int64_t nmeaBaudRate = generalSettings.nmea_baud_rate().GetValue();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue