diff --git a/SDK/C++/private/feed_impl.hpp b/SDK/C++/private/feed_impl.hpp index 5cb9745b87942f21c246a4de3828bbee0fd15737..ba0ab72d7d43eebaa03c5794b76d2b762e507706 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 98566e602f0cba2c1e1ba413328935d85e7eb455..1b6074a8a6cc1c23dd9e317c09cf1a5596bd467c 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 189a1c19fd13366e8728a50494a6ee9b1e2c4c5f..ac9a33c46cfb9211ab7d9896b65971b6a550e952 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 325d24cf39eb8a0a32e5390f6ef0c84a5ab4a7f8..49563417c0b45d8814d8e99b4379a6f15ece2ab8 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 817e2babdb45b2beb23380f7b6e4ee20ca7e87c2..dfccf7e59476ffd405e3a222b3e41e5d30d1f58a 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 cdbfff19b4a78c87ed45ee935ccbb173e523f27c..cfe5d26ab0f24d1dafeb8fec2f0c1d4ea67b5fac 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 6764e5d19309a6f96fec496850c07568960b70b7..98fe41c9018fe328c1cb296e3819d052a8808a73 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 9df583c86610ecfeb4c0140ee659201ba76a1f29..76ab1b92bad65d098c8a0f2a34685edc9219e458 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 6c57dfcbb499c32f487d952c7b021da3ce148faa..be8516a637b316c9a3964b14952f11fcadd23459 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 a84d579eba394b94a1b3f7e4d62bdb992a1654a6..b93a4bdc621dae6268032fa6525a6bca89b383d5 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 474b2ebe6705a9e824116c8993492561eb0dd56e..dfc2fae09a7b8fd2dafaa5161e49ba0964af092c 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 be1a0fc0d260935c5dc8bdcf3472ff8385eb4f40..0a19d30174be9c09ad5461d2c071073741ed33f9 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 352fe8aaa08208f87a177460cabf0cd0e6cacd27..f42ffaf9a8173b737831a978704ac5810a61620a 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 9ffc64c993c9b093d43c4939ff641a47b7bb5f71..a7f4ce9961567912cdb9b73d95731d0e1867d6a5 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 994b4af91953250e183301356a6c8e3a2e4be56e..c9894f06366b3a7577ddb01ba322e4784d218aa7 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 da09776227d4e25aeef9f763a0f26270941e090b..4971439b869b514fb9aaca54c826fb4ec2ef8c41 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 6a543698308253e9d4fd056eaf3fb5786b27aa85..0f35bc88caa89f9e9e6fd09807421b147487780b 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 c9a02abaadaae4ef67c69cbcad50f97ed6dc221d..eebc557eae0c2f12c5b8fcaad66e72914c0d2968 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 76d5ec5f099223e36d49cdc6dce4f9435d64d8aa..6064f894d059dbc77ce87d4ac64fcaf93ed842f4 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 2fa3c43b44ab95503b1cca587ef4aab8cd1cf66b..979cb793b674c555fba1924c34765a71896f808b 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;