From 6cda29433af8af686d93fbce9d45388d6afd0e74 Mon Sep 17 00:00:00 2001 From: Robert Judka Date: Sun, 26 Apr 2020 00:46:57 -0500 Subject: [PATCH] use weak pointer for sensor service to track actual lifetime --- .../f1x/openauto/autoapp/Service/ServiceFactory.hpp | 2 +- src/autoapp/Service/ServiceFactory.cpp | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/include/f1x/openauto/autoapp/Service/ServiceFactory.hpp b/include/f1x/openauto/autoapp/Service/ServiceFactory.hpp index 9d79b84..464cc12 100644 --- a/include/f1x/openauto/autoapp/Service/ServiceFactory.hpp +++ b/include/f1x/openauto/autoapp/Service/ServiceFactory.hpp @@ -65,7 +65,7 @@ private: projection::QtVideoOutput *qtVideoOutput_; #endif bool nightMode_; - std::shared_ptr sensorService_; + std::weak_ptr sensorService_; }; } diff --git a/src/autoapp/Service/ServiceFactory.cpp b/src/autoapp/Service/ServiceFactory.cpp index 461751f..55ef7cf 100644 --- a/src/autoapp/Service/ServiceFactory.cpp +++ b/src/autoapp/Service/ServiceFactory.cpp @@ -58,7 +58,7 @@ ServiceFactory::ServiceFactory(boost::asio::io_service& ioService, configuration #ifdef USE_OMX , omxVideoOutput_(std::make_shared(configuration_, this->QRectToDestRect(screenGeometry_), activeCallback_)) #endif - , nightMode_(nightMode) + , nightMode_(nightMode) { } @@ -70,8 +70,11 @@ ServiceList ServiceFactory::create(aasdk::messenger::IMessenger::Pointer messeng projection::IAudioInput::Pointer audioInput(new projection::QtAudioInput(1, 16, 16000), std::bind(&QObject::deleteLater, std::placeholders::_1)); serviceList.emplace_back(std::make_shared(ioService_, messenger, std::move(audioInput))); this->createAudioServices(serviceList, messenger); - sensorService_ = std::make_shared(ioService_, messenger, nightMode_); - serviceList.emplace_back(sensorService_); + + std::shared_ptr sensorService = std::make_shared(ioService_, messenger, nightMode_); + sensorService_ = sensorService; + serviceList.emplace_back(sensorService); + serviceList.emplace_back(this->createVideoService(messenger)); serviceList.emplace_back(this->createBluetoothService(messenger)); serviceList.emplace_back(this->createInputService(messenger)); @@ -187,7 +190,7 @@ void ServiceFactory::resize() void ServiceFactory::setNightMode(bool nightMode) { nightMode_ = nightMode; - if (sensorService_ != nullptr) sensorService_->setNightMode(nightMode_); + if (std::shared_ptr sensorService = sensorService_.lock()) sensorService->setNightMode(nightMode_); } QRect ServiceFactory::mapActiveAreaToGlobal(QWidget* activeArea)