diff --git a/src/proc/engine/buffer-provider.cpp b/src/proc/engine/buffer-provider.cpp index e7f7f9cb2..6c33104b0 100644 --- a/src/proc/engine/buffer-provider.cpp +++ b/src/proc/engine/buffer-provider.cpp @@ -211,18 +211,23 @@ namespace engine { void - BufferDescriptor::emit (BuffHandle const& handle) const + BuffHandle::emit() { - REQUIRE (verifyValidity()); - provider_->emitBuffer(handle); + REQUIRE (isValid()); + descriptor_.provider_->emitBuffer(*this); } void - BufferDescriptor::release (BuffHandle const& handle) const + BuffHandle::release() { - REQUIRE (verifyValidity()); - provider_->releaseBuffer(handle); + if (pBuffer_) + { + REQUIRE (isValid()); + descriptor_.provider_->releaseBuffer(*this); + pBuffer_ = 0; + } + ENSURE (!isValid()); } diff --git a/src/proc/engine/buffhandle.hpp b/src/proc/engine/buffhandle.hpp index 185914fa5..32a47fc2c 100644 --- a/src/proc/engine/buffhandle.hpp +++ b/src/proc/engine/buffhandle.hpp @@ -81,6 +81,7 @@ namespace engine { */ class BufferDescriptor { + protected: BufferProvider* provider_; HashVal subClassification_; @@ -90,6 +91,7 @@ namespace engine { { } friend class BufferProvider; + friend class BuffHandle; public: // using standard copy operations @@ -97,9 +99,6 @@ namespace engine { bool verifyValidity() const; size_t determineBufferSize() const; - void emit (BuffHandle const&) const; - void release (BuffHandle const&) const; - operator HashVal() const { return subClassification_; } }; @@ -136,23 +135,8 @@ namespace engine { - void - emit() - { - REQUIRE (pBuffer_); - descriptor_.emit (*this); - } - - void release() - { - if (pBuffer_) - { - REQUIRE (isValid()); - descriptor_.release (*this); - pBuffer_ = 0; - } - ENSURE (!isValid()); - } + void emit(); + void release(); template @@ -181,7 +165,7 @@ namespace engine { HashVal entryID() const { - return descriptor_; + return HashVal(descriptor_); } size_t diff --git a/src/proc/engine/bufftable-obsolete.hpp b/src/proc/engine/bufftable-obsolete.hpp index 2b43ee6d1..391808f65 100644 --- a/src/proc/engine/bufftable-obsolete.hpp +++ b/src/proc/engine/bufftable-obsolete.hpp @@ -70,6 +70,7 @@ namespace engine { PBu inBuff; }; + class BufferDescriptor; /** Obsolete, to be rewritten /////TICKET #826 */ class BuffTableStorage