mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 08:10: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
	
	 Dan Paulat
						Dan Paulat