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;