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

Attachment: pgpwSkLIQTpnw.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to