diff --git a/pyopencl/cffi_cl.py b/pyopencl/cffi_cl.py index 3aefa69072d38405e0a5d6361eb9abd91204cc0d..d1fc6bee92a11c56bd940985acfcf681162160fa 100644 --- a/pyopencl/cffi_cl.py +++ b/pyopencl/cffi_cl.py @@ -918,17 +918,6 @@ 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/context.h b/src/c_wrapper/context.h index 3ae4098ccf9ce2ee834c8d553bbd9e3064f173f9..323381de9a714ddac8282feb3f69ed0ba4c49905 100644 --- a/src/c_wrapper/context.h +++ b/src/c_wrapper/context.h @@ -16,7 +16,7 @@ extern template void print_buf<cl_context>(std::ostream&, const cl_context*, class context : public clobj<cl_context> { public: PYOPENCL_DEF_CL_CLASS(CONTEXT); - void get_version(cl_context ctx, int *major, int *minor); + static void get_version(cl_context ctx, int *major, int *minor); PYOPENCL_INLINE context(cl_context ctx, bool retain) : clobj(ctx) diff --git a/src/c_wrapper/event.cpp b/src/c_wrapper/event.cpp index f74d6e2c33d3b5b6fe31955c9dcd75f6718fe0a2..a8f03438aac11a3131e8ae4bdb18a3baa554a041 100644 --- a/src/c_wrapper/event.cpp +++ b/src/c_wrapper/event.cpp @@ -64,7 +64,13 @@ release_private_use_cb(event *evt) // is already completed. if (status <= CL_COMPLETE) return false; - return evt->support_cb; + cl_context ctx; + pyopencl_call_guarded(clGetEventInfo, evt, CL_EVENT_CONTEXT, + size_arg(ctx), nullptr); + int major; + int minor; + context::get_version(ctx, &major, &minor); + return (major > 1) || (major >= 1 && minor >= 1); } catch (const clerror &e) { cleanup_print_error(e.code(), e.what()); return false;