From 7aaa9032f36560b0cf1947c55201aa72f3f4d37c Mon Sep 17 00:00:00 2001
From: Yichao Yu <yyc1992@gmail.com>
Date: Sat, 21 Jun 2014 09:02:11 +0800
Subject: [PATCH] Event.set_support_cb

---
 pyopencl/c_wrapper/wrap_cl_core.h |  1 +
 pyopencl/cffi_cl.py               | 11 +++++++++++
 src/c_wrapper/event.cpp           |  7 +++++++
 3 files changed, 19 insertions(+)

diff --git a/pyopencl/c_wrapper/wrap_cl_core.h b/pyopencl/c_wrapper/wrap_cl_core.h
index 9dc2921b..1445cb7e 100644
--- a/pyopencl/c_wrapper/wrap_cl_core.h
+++ b/pyopencl/c_wrapper/wrap_cl_core.h
@@ -140,6 +140,7 @@ type_t image__get_fill_type(clobj_t img);
 error *event__get_profiling_info(clobj_t event, cl_profiling_info param,
                                  generic_info *out);
 error *event__wait(clobj_t event);
+void event__set_support_cb(clobj_t _evt, int support);
 error *event__set_callback(clobj_t _evt, cl_int type, void *pyobj);
 error *wait_for_events(const clobj_t *_wait_for, uint32_t num_wait_for);
 // Nanny Event
diff --git a/pyopencl/cffi_cl.py b/pyopencl/cffi_cl.py
index dbc1ee88..aaeb9ebe 100644
--- a/pyopencl/cffi_cl.py
+++ b/pyopencl/cffi_cl.py
@@ -883,6 +883,17 @@ class Kernel(_Common):
 class Event(_Common):
     _id = 'event'
 
+    @classmethod
+    def _create(cls, ptr):
+        self = _Common._create.__func__(cls, ptr)
+        try:
+            if (self.context._get_cl_version() >= (1, 1) and
+                get_cl_header_version() >= (1, 1)):
+                _lib.event__set_support_cb(ptr, 1);
+        except:
+            pass
+        return self
+
     def __init__(self):
         pass
 
diff --git a/src/c_wrapper/event.cpp b/src/c_wrapper/event.cpp
index e53bb0a5..7dd2c3d7 100644
--- a/src/c_wrapper/event.cpp
+++ b/src/c_wrapper/event.cpp
@@ -198,6 +198,13 @@ event__wait(clobj_t evt)
 }
 
 #if PYOPENCL_CL_VERSION >= 0x1010
+void
+event__set_support_cb(clobj_t _evt, int support)
+{
+    auto evt = static_cast<event*>(_evt);
+    evt->support_cb = support;
+}
+
 error*
 event__set_callback(clobj_t _evt, cl_int type, void *pyobj)
 {
-- 
GitLab