From 5420562cd6a90f352372b7ddf2b2dfe52fcdfd8a Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Tue, 13 Aug 2019 10:05:07 +0300 Subject: [PATCH] Remove group callbacks --- components/rgbd-sources/include/ftl/rgbd/source.hpp | 3 ++- components/rgbd-sources/src/group.cpp | 4 +++- components/rgbd-sources/src/source.cpp | 5 +++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/components/rgbd-sources/include/ftl/rgbd/source.hpp b/components/rgbd-sources/include/ftl/rgbd/source.hpp index 55cb8554e..f5e27cd88 100644 --- a/components/rgbd-sources/include/ftl/rgbd/source.hpp +++ b/components/rgbd-sources/include/ftl/rgbd/source.hpp @@ -199,7 +199,8 @@ class Source : public ftl::Configurable { SHARED_MUTEX &mutex() { return mutex_; } std::function<void(int64_t, const cv::Mat &, const cv::Mat &)> &callback() { return callback_; } - void setCallback(std::function<void(int64_t, const cv::Mat &, const cv::Mat &)> cb) { callback_ = cb; } + void setCallback(std::function<void(int64_t, const cv::Mat &, const cv::Mat &)> cb); + void removeCallback() { callback_ = nullptr; } private: diff --git a/components/rgbd-sources/src/group.cpp b/components/rgbd-sources/src/group.cpp index 88b9afcdc..b8dbd6369 100644 --- a/components/rgbd-sources/src/group.cpp +++ b/components/rgbd-sources/src/group.cpp @@ -11,7 +11,9 @@ Group::Group() : framesets_(kFrameBufferSize), head_(0) { } Group::~Group() { - + for (auto s : sources_) { + s->removeCallback(); + } } void Group::addSource(ftl::rgbd::Source *src) { diff --git a/components/rgbd-sources/src/source.cpp b/components/rgbd-sources/src/source.cpp index c5efd26fc..17e343a00 100644 --- a/components/rgbd-sources/src/source.cpp +++ b/components/rgbd-sources/src/source.cpp @@ -355,3 +355,8 @@ bool Source::setChannel(ftl::rgbd::channel_t c) { const ftl::rgbd::Camera Source::parameters(ftl::rgbd::channel_t chan) const { return (impl_) ? impl_->parameters(chan) : parameters(); } + +void Source::setCallback(std::function<void(int64_t, const cv::Mat &, const cv::Mat &)> cb) { + if (bool(callback_)) LOG(ERROR) << "Source already has a callback: " << getURI(); + callback_ = cb; +} -- GitLab