Thanks, looks good to me, Reviewed-by: Francisco Jerez <curroje...@riseup.net>
Tom Stellard <thomas.stell...@amd.com> writes: > The spec says that mem objects should maintain a stack of callbacks > not just one. > > v2: > - Remove stray printf. > > CC: "10.3" <mesa-sta...@lists.freedesktop.org> > --- > src/gallium/state_trackers/clover/core/memory.cpp | 10 ++++++---- > src/gallium/state_trackers/clover/core/memory.hpp | 3 ++- > 2 files changed, 8 insertions(+), 5 deletions(-) > > diff --git a/src/gallium/state_trackers/clover/core/memory.cpp > b/src/gallium/state_trackers/clover/core/memory.cpp > index ba6869d..905ebc0 100644 > --- a/src/gallium/state_trackers/clover/core/memory.cpp > +++ b/src/gallium/state_trackers/clover/core/memory.cpp > @@ -29,14 +29,16 @@ using namespace clover; > memory_obj::memory_obj(clover::context &ctx, cl_mem_flags flags, > size_t size, void *host_ptr) : > context(ctx), _flags(flags), > - _size(size), _host_ptr(host_ptr), > - _destroy_notify([]{}) { > + _size(size), _host_ptr(host_ptr) { > if (flags & (CL_MEM_COPY_HOST_PTR | CL_MEM_USE_HOST_PTR)) > data.append((char *)host_ptr, size); > } > > memory_obj::~memory_obj() { > - _destroy_notify(); > + while (_destroy_notify.size()) { > + _destroy_notify.top()(); > + _destroy_notify.pop(); > + } > } > > bool > @@ -46,7 +48,7 @@ memory_obj::operator==(const memory_obj &obj) const { > > void > memory_obj::destroy_notify(std::function<void ()> f) { > - _destroy_notify = f; > + _destroy_notify.push(f); > } > > cl_mem_flags > diff --git a/src/gallium/state_trackers/clover/core/memory.hpp > b/src/gallium/state_trackers/clover/core/memory.hpp > index f649ca0..bd6da6b 100644 > --- a/src/gallium/state_trackers/clover/core/memory.hpp > +++ b/src/gallium/state_trackers/clover/core/memory.hpp > @@ -26,6 +26,7 @@ > #include <functional> > #include <map> > #include <memory> > +#include <stack> > > #include "core/object.hpp" > #include "core/queue.hpp" > @@ -61,7 +62,7 @@ namespace clover { > cl_mem_flags _flags; > size_t _size; > void *_host_ptr; > - std::function<void ()> _destroy_notify; > + std::stack<std::function<void ()>> _destroy_notify; > > protected: > std::string data; > -- > 1.8.5.5 > > _______________________________________________ > mesa-stable mailing list > mesa-sta...@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-stable
pgpwSkLIQTpnw.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev