From 26b8ee3b87fc0366ba9c6e17f563a4140a67659c Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Wed, 1 May 2013 03:30:41 -0500 Subject: gras: update PMC submodule for potential fix --- PMC | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PMC b/PMC index 5624c0a..6b44492 160000 --- a/PMC +++ b/PMC @@ -1 +1 @@ -Subproject commit 5624c0ab79dd53c51879070b86b833f315a2f383 +Subproject commit 6b444922db565cd64b39729a8129eac7c81fe0cd -- cgit From 7948d33021edfaf714106527e9c1094f130b605c Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Wed, 1 May 2013 18:24:37 -0700 Subject: gras: update submodules for fixes --- gnuradio | 2 +- grextras | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gnuradio b/gnuradio index 589915f..14502c9 160000 --- a/gnuradio +++ b/gnuradio @@ -1 +1 @@ -Subproject commit 589915f97bba8499715bc61d2dec64b6fd7bca25 +Subproject commit 14502c92752098e773187890b89db8c763a1ecda diff --git a/grextras b/grextras index 0467134..4b6f9d4 160000 --- a/grextras +++ b/grextras @@ -1 +1 @@ -Subproject commit 04671348be0c359c763a828e9be734fc204cbb62 +Subproject commit 4b6f9d4a6eb0b1ee990a5e0c8789c0f1ff53e883 -- cgit From fd4d5a2ccfd383f374d70f82aee66f3201395810 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Thu, 2 May 2013 01:34:28 -0700 Subject: gras: update grextras for opencl fixes --- grextras | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grextras b/grextras index 4b6f9d4..241417d 160000 --- a/grextras +++ b/grextras @@ -1 +1 @@ -Subproject commit 4b6f9d4a6eb0b1ee990a5e0c8789c0f1ff53e883 +Subproject commit 241417d3e4d95f57377dbf8e9faa7613029a934e -- cgit From 540a314a00b747c293f81d7931c22252a861fcdd Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Thu, 2 May 2013 23:37:51 -0700 Subject: gras: inline the sbuffer deref code --- grextras | 2 +- include/gras/detail/sbuffer.hpp | 24 +++++++++++++++++++----- lib/sbuffer.cpp | 23 ----------------------- 3 files changed, 20 insertions(+), 29 deletions(-) diff --git a/grextras b/grextras index 241417d..07fbc56 160000 --- a/grextras +++ b/grextras @@ -1 +1 @@ -Subproject commit 241417d3e4d95f57377dbf8e9faa7613029a934e +Subproject commit 07fbc5681cc4dcd2813ff7a1ef8fd1632085964c diff --git a/include/gras/detail/sbuffer.hpp b/include/gras/detail/sbuffer.hpp index 0d68ebc..720c8db 100644 --- a/include/gras/detail/sbuffer.hpp +++ b/include/gras/detail/sbuffer.hpp @@ -21,9 +21,6 @@ struct SBufferImpl SBufferConfig config; }; - -extern GRAS_API void sbuffer_handle_deref(SBufferImpl *impl); - GRAS_FORCE_INLINE void intrusive_ptr_add_ref(SBufferImpl *impl) { ++impl->count; @@ -31,9 +28,26 @@ GRAS_FORCE_INLINE void intrusive_ptr_add_ref(SBufferImpl *impl) GRAS_FORCE_INLINE void intrusive_ptr_release(SBufferImpl *impl) { - if (--impl->count == 0) + if GRAS_LIKELY(--impl->count) return; + + //call the deleter if possible + boost::shared_ptr token_deleter = impl->config.token.lock(); + if GRAS_LIKELY(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 { - sbuffer_handle_deref(impl); + delete impl; //its really dead now } } diff --git a/lib/sbuffer.cpp b/lib/sbuffer.cpp index 03f87b1..40bbc3f 100644 --- a/lib/sbuffer.cpp +++ b/lib/sbuffer.cpp @@ -6,29 +6,6 @@ using namespace gras; -void gras::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