From 9645963ba2818a245dadfcf3efe8c9ed8e1d4411 Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Sat, 7 Nov 2020 09:12:43 +0200 Subject: [PATCH] Add all destructors --- SDK/C++/private/feed_impl.hpp | 4 ++-- SDK/C++/private/frame_impl.hpp | 2 +- SDK/C++/private/image_impl.hpp | 2 +- SDK/C++/private/observer_impl.cpp | 3 ++- SDK/C++/private/observer_impl.hpp | 2 +- SDK/C++/private/operator_impl.hpp | 2 +- SDK/C++/private/pipeline_impl.hpp | 2 +- SDK/C++/private/room_impl.cpp | 5 +++++ SDK/C++/private/room_impl.hpp | 2 ++ SDK/C++/private/system.cpp | 4 ++++ SDK/C++/private/system_impl.hpp | 2 +- SDK/C++/public/include/voltu/feed.hpp | 2 ++ SDK/C++/public/include/voltu/observer.hpp | 2 ++ SDK/C++/public/include/voltu/operator.hpp | 2 ++ SDK/C++/public/include/voltu/pipeline.hpp | 2 ++ SDK/C++/public/include/voltu/room.hpp | 2 ++ SDK/C++/public/include/voltu/system.hpp | 2 ++ SDK/C++/public/include/voltu/types/frame.hpp | 2 ++ SDK/C++/public/include/voltu/types/image.hpp | 2 ++ SDK/C++/public/include/voltu/types/property.hpp | 2 ++ 20 files changed, 39 insertions(+), 9 deletions(-) diff --git a/SDK/C++/private/feed_impl.hpp b/SDK/C++/private/feed_impl.hpp index 5cb9745b8..ba0ab72d7 100644 --- a/SDK/C++/private/feed_impl.hpp +++ b/SDK/C++/private/feed_impl.hpp @@ -13,7 +13,7 @@ class InputFeedImpl : public voltu::Feed { public: InputFeedImpl(ftl::stream::Feed*, uint32_t fsid); - ~InputFeedImpl(); + ~InputFeedImpl() override; std::string getURI() override; @@ -34,7 +34,7 @@ class OutputFeedImpl : public voltu::Feed { public: OutputFeedImpl(ftl::stream::Feed*, const std::string &uri); - ~OutputFeedImpl(); + ~OutputFeedImpl() override; std::string getURI() override; diff --git a/SDK/C++/private/frame_impl.hpp b/SDK/C++/private/frame_impl.hpp index 98566e602..1b6074a8a 100644 --- a/SDK/C++/private/frame_impl.hpp +++ b/SDK/C++/private/frame_impl.hpp @@ -14,7 +14,7 @@ class FrameImpl : public voltu::Frame { public: FrameImpl(); - ~FrameImpl(); + ~FrameImpl() override; std::list<voltu::ImagePtr> getImageSet(voltu::Channel) override; diff --git a/SDK/C++/private/image_impl.hpp b/SDK/C++/private/image_impl.hpp index 189a1c19f..ac9a33c46 100644 --- a/SDK/C++/private/image_impl.hpp +++ b/SDK/C++/private/image_impl.hpp @@ -12,7 +12,7 @@ class ImageImpl : public voltu::Image { public: ImageImpl(const ftl::rgbd::Frame&, ftl::codecs::Channel c); - ~ImageImpl(); + ~ImageImpl() override; voltu::ImageData getHost() override; diff --git a/SDK/C++/private/observer_impl.cpp b/SDK/C++/private/observer_impl.cpp index 325d24cf3..49563417c 100644 --- a/SDK/C++/private/observer_impl.cpp +++ b/SDK/C++/private/observer_impl.cpp @@ -28,7 +28,8 @@ ObserverImpl::ObserverImpl(ftl::Configurable *base) ObserverImpl::~ObserverImpl() { - + delete rend_; + delete pool_; } void ObserverImpl::setResolution(uint32_t w, uint32_t h) diff --git a/SDK/C++/private/observer_impl.hpp b/SDK/C++/private/observer_impl.hpp index 817e2babd..dfccf7e59 100644 --- a/SDK/C++/private/observer_impl.hpp +++ b/SDK/C++/private/observer_impl.hpp @@ -17,7 +17,7 @@ class ObserverImpl : public voltu::Observer public: explicit ObserverImpl(ftl::Configurable *base); - ~ObserverImpl(); + ~ObserverImpl() override; void setResolution(uint32_t w, uint32_t h) override; diff --git a/SDK/C++/private/operator_impl.hpp b/SDK/C++/private/operator_impl.hpp index cdbfff19b..cfe5d26ab 100644 --- a/SDK/C++/private/operator_impl.hpp +++ b/SDK/C++/private/operator_impl.hpp @@ -14,7 +14,7 @@ class OperatorImpl : public voltu::Operator { public: OperatorImpl(ftl::Configurable*); - ~OperatorImpl(); + ~OperatorImpl() override; voltu::PropertyPtr property(const std::string &name) override; diff --git a/SDK/C++/private/pipeline_impl.hpp b/SDK/C++/private/pipeline_impl.hpp index 6764e5d19..98fe41c90 100644 --- a/SDK/C++/private/pipeline_impl.hpp +++ b/SDK/C++/private/pipeline_impl.hpp @@ -12,7 +12,7 @@ class PipelineImpl : public voltu::Pipeline { public: PipelineImpl(ftl::Configurable *root); - ~PipelineImpl(); + ~PipelineImpl() override; void submit(const voltu::FramePtr &frame) override; diff --git a/SDK/C++/private/room_impl.cpp b/SDK/C++/private/room_impl.cpp index 9df583c86..76ab1b92b 100644 --- a/SDK/C++/private/room_impl.cpp +++ b/SDK/C++/private/room_impl.cpp @@ -11,6 +11,11 @@ RoomImpl::RoomImpl(ftl::stream::Feed* feed) } +RoomImpl::~RoomImpl() +{ + if (filter_) filter_->remove(); +} + bool RoomImpl::waitNextFrame(int64_t timeout) { if (!filter_) diff --git a/SDK/C++/private/room_impl.hpp b/SDK/C++/private/room_impl.hpp index 6c57dfcbb..be8516a63 100644 --- a/SDK/C++/private/room_impl.hpp +++ b/SDK/C++/private/room_impl.hpp @@ -13,6 +13,8 @@ class RoomImpl : public voltu::Room { public: explicit RoomImpl(ftl::stream::Feed*); + + ~RoomImpl() override; bool waitNextFrame(int64_t) override; diff --git a/SDK/C++/private/system.cpp b/SDK/C++/private/system.cpp index a84d579eb..b93a4bdc6 100644 --- a/SDK/C++/private/system.cpp +++ b/SDK/C++/private/system.cpp @@ -45,7 +45,11 @@ SystemImpl::SystemImpl() SystemImpl::~SystemImpl() { ftl::timer::stop(true); + net_->shutdown(); ftl::pool.stop(true); + delete feed_; + delete net_; + delete root_; } voltu::Version SystemImpl::getVersion() const diff --git a/SDK/C++/private/system_impl.hpp b/SDK/C++/private/system_impl.hpp index 474b2ebe6..dfc2fae09 100644 --- a/SDK/C++/private/system_impl.hpp +++ b/SDK/C++/private/system_impl.hpp @@ -14,7 +14,7 @@ class SystemImpl : public voltu::System { public: SystemImpl(); - ~SystemImpl(); + ~SystemImpl() override; voltu::Version getVersion() const override; diff --git a/SDK/C++/public/include/voltu/feed.hpp b/SDK/C++/public/include/voltu/feed.hpp index be1a0fc0d..0a19d3017 100644 --- a/SDK/C++/public/include/voltu/feed.hpp +++ b/SDK/C++/public/include/voltu/feed.hpp @@ -35,6 +35,8 @@ enum class FeedProperty class Feed { public: + virtual ~Feed() = default; + PY_API virtual std::string getURI() = 0; PY_API virtual void remove() = 0; diff --git a/SDK/C++/public/include/voltu/observer.hpp b/SDK/C++/public/include/voltu/observer.hpp index 352fe8aaa..f42ffaf9a 100644 --- a/SDK/C++/public/include/voltu/observer.hpp +++ b/SDK/C++/public/include/voltu/observer.hpp @@ -25,6 +25,8 @@ enum class ObserverProperty class Observer { public: + virtual ~Observer() = default; + PY_API virtual void setResolution(uint32_t w, uint32_t h) = 0; PY_API virtual void setFocalLength(uint32_t f) = 0; diff --git a/SDK/C++/public/include/voltu/operator.hpp b/SDK/C++/public/include/voltu/operator.hpp index 9ffc64c99..a7f4ce996 100644 --- a/SDK/C++/public/include/voltu/operator.hpp +++ b/SDK/C++/public/include/voltu/operator.hpp @@ -20,6 +20,8 @@ enum class OperatorId class Operator { public: + virtual ~Operator() = default; + PY_API virtual voltu::PropertyPtr property(const std::string &name) = 0; }; diff --git a/SDK/C++/public/include/voltu/pipeline.hpp b/SDK/C++/public/include/voltu/pipeline.hpp index 994b4af91..c9894f063 100644 --- a/SDK/C++/public/include/voltu/pipeline.hpp +++ b/SDK/C++/public/include/voltu/pipeline.hpp @@ -11,6 +11,8 @@ namespace voltu class Pipeline { public: + virtual ~Pipeline() = default; + PY_API virtual void submit(const voltu::FramePtr &frame) = 0; PY_API virtual bool waitCompletion(int timeout) = 0; diff --git a/SDK/C++/public/include/voltu/room.hpp b/SDK/C++/public/include/voltu/room.hpp index da0977622..4971439b8 100644 --- a/SDK/C++/public/include/voltu/room.hpp +++ b/SDK/C++/public/include/voltu/room.hpp @@ -19,6 +19,8 @@ typedef unsigned int RoomId; class Room { public: + virtual ~Room() = default; + PY_API virtual bool waitNextFrame(int64_t) = 0; PY_API inline bool hasNextFrame() { return waitNextFrame(0); }; diff --git a/SDK/C++/public/include/voltu/system.hpp b/SDK/C++/public/include/voltu/system.hpp index 6a5436983..0f35bc88c 100644 --- a/SDK/C++/public/include/voltu/system.hpp +++ b/SDK/C++/public/include/voltu/system.hpp @@ -24,6 +24,8 @@ struct Version class System { public: + virtual ~System() = default; + /** Get the semantic version information. */ virtual voltu::Version getVersion() const = 0; diff --git a/SDK/C++/public/include/voltu/types/frame.hpp b/SDK/C++/public/include/voltu/types/frame.hpp index c9a02abaa..eebc557ea 100644 --- a/SDK/C++/public/include/voltu/types/frame.hpp +++ b/SDK/C++/public/include/voltu/types/frame.hpp @@ -14,6 +14,8 @@ namespace voltu class Frame { public: + virtual ~Frame() = default; + PY_API PY_RV_LIFETIME_PARENT virtual std::list<voltu::ImagePtr> getImageSet(voltu::Channel channel) = 0; PY_API PY_RV_LIFETIME_PARENT virtual voltu::PointCloudPtr getPointCloud(voltu::PointCloudFormat cloudfmt, voltu::PointFormat pointfmt) = 0; diff --git a/SDK/C++/public/include/voltu/types/image.hpp b/SDK/C++/public/include/voltu/types/image.hpp index 76d5ec5f0..6064f894d 100644 --- a/SDK/C++/public/include/voltu/types/image.hpp +++ b/SDK/C++/public/include/voltu/types/image.hpp @@ -30,6 +30,8 @@ PY_NO_SHARED_PTR struct ImageData class Image { public: + virtual ~Image() = default; + PY_API PY_RV_LIFETIME_PARENT virtual ImageData getHost() = 0; virtual ImageData getDevice() = 0; diff --git a/SDK/C++/public/include/voltu/types/property.hpp b/SDK/C++/public/include/voltu/types/property.hpp index 2fa3c43b4..979cb793b 100644 --- a/SDK/C++/public/include/voltu/types/property.hpp +++ b/SDK/C++/public/include/voltu/types/property.hpp @@ -9,6 +9,8 @@ namespace voltu class Property { public: + virtual ~Property() = default; + PY_API virtual void setInt(int) = 0; PY_API virtual void setFloat(float) = 0; -- GitLab