Fix crash on DeviceManager destruction
Commands register for state changes, so they need to be destroyed
first before the StateChangeQueue is destroyed.
Change-Id: I06ed3d3f3841a8b03c2825547f0077f292ca6179
diff --git a/src/device_manager.cc b/src/device_manager.cc
index c0b8e9a..f21f235 100644
--- a/src/device_manager.cc
+++ b/src/device_manager.cc
@@ -33,9 +33,9 @@
provider::HttpServer* http_server,
provider::Wifi* wifi,
provider::Bluetooth* bluetooth) {
- command_manager_ = std::make_shared<CommandManager>();
state_change_queue_.reset(new StateChangeQueue(kMaxStateChangeQueueSize));
state_manager_ = std::make_shared<StateManager>(state_change_queue_.get());
+ command_manager_ = std::make_shared<CommandManager>();
std::unique_ptr<Config> config{new Config{config_store}};
config->Load();
diff --git a/src/device_manager.h b/src/device_manager.h
index ccf8778..489404e 100644
--- a/src/device_manager.h
+++ b/src/device_manager.h
@@ -77,9 +77,9 @@
provider::Wifi* wifi,
provider::Bluetooth* bluetooth);
- std::shared_ptr<CommandManager> command_manager_;
std::unique_ptr<StateChangeQueue> state_change_queue_;
std::shared_ptr<StateManager> state_manager_;
+ std::shared_ptr<CommandManager> command_manager_;
std::unique_ptr<DeviceRegistrationInfo> device_info_;
std::unique_ptr<BaseApiHandler> base_api_handler_;
std::unique_ptr<privet::Manager> privet_;