From f91c377f1636afb42cadea0da5f34cef545d1ef2 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Fri, 14 Sep 2012 09:04:37 -0700 Subject: moved sbuffer deref logic into the cpp --- lib/sbuffer.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'lib/sbuffer.cpp') diff --git a/lib/sbuffer.cpp b/lib/sbuffer.cpp index eea323b..31e3943 100644 --- a/lib/sbuffer.cpp +++ b/lib/sbuffer.cpp @@ -20,6 +20,29 @@ using namespace gnuradio; +void gnuradio::sbuffer_handle_deref(SBufferImpl *impl) +{ + //call the deleter if possible + boost::shared_ptr token_deleter = impl->config.token.lock(); + if (token_deleter) + { + SBuffer buff; + buff.reset(impl); + (*token_deleter)(buff); + } + else if (impl->config.deleter) + { + SBuffer buff; + buff.reset(impl); + impl->config.deleter(buff); + impl->config.deleter = SBufferDeleter(); //reset deleter, so we dont double delete + } + else + { + delete impl; //its really dead now + } +} + SBufferConfig::SBufferConfig(void) { memory = NULL; -- cgit