From 28eded1c1fdb1044c838a5b82d8ab8aaa2cbd734 Mon Sep 17 00:00:00 2001
From: Marko Bencun <mbencun@gmail.com>
Date: Sat, 7 Sep 2013 21:43:30 +0200
Subject: [PATCH] Event.wait

---
 pyopencl/cffi_cl.py          | 3 +++
 src/c_wrapper/wrap_cl.cpp    | 6 ++++--
 src/c_wrapper/wrap_cl_core.h | 1 +
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/pyopencl/cffi_cl.py b/pyopencl/cffi_cl.py
index f4a3119f..1b8d5ef8 100644
--- a/pyopencl/cffi_cl.py
+++ b/pyopencl/cffi_cl.py
@@ -385,6 +385,9 @@ class Event(_Common):
         _handle_error(_lib.event__get_profiling_info(self.ptr, param, info))
         return _generic_info_to_python(info)
 
+    def wait(self):
+        _handle_error(_lib.event__wait(self.ptr))
+
 def enqueue_nd_range_kernel(queue, kernel, global_work_size, local_work_size, global_work_offset=None, wait_for=None, g_times_l=False):
     if wait_for is not None:
         raise NotImplementedError("wait_for")
diff --git a/src/c_wrapper/wrap_cl.cpp b/src/c_wrapper/wrap_cl.cpp
index 7b967e2d..424d2e71 100644
--- a/src/c_wrapper/wrap_cl.cpp
+++ b/src/c_wrapper/wrap_cl.cpp
@@ -1658,10 +1658,8 @@ namespace pyopencl
       cl_int status_code;
 
       PYOPENCL_PRINT_CALL_TRACE("clCreateKernel");
-      std::cout << "HUH HAHAH" << std::endl;
       m_kernel = clCreateKernel(prg.data(), kernel_name.c_str(),
 				&status_code);
-      std::cout << "HU2" << std::endl;
       if (status_code != CL_SUCCESS)
 	throw pyopencl::error("clCreateKernel", status_code);
     }
@@ -2177,6 +2175,10 @@ void _free2(void **p, uint32_t size) {
   return 0;
 }
 
+::error *event__wait(void *ptr) {
+  C_HANDLE_ERROR(static_cast<pyopencl::event*>(ptr)->wait(););
+  return 0;
+}
   
 ::error *_create_kernel(void **ptr_kernel, void *ptr_program, char *name) {
   pyopencl::program *prg = static_cast<pyopencl::program*>(ptr_program);
diff --git a/src/c_wrapper/wrap_cl_core.h b/src/c_wrapper/wrap_cl_core.h
index 1a9ee937..f828939b 100644
--- a/src/c_wrapper/wrap_cl_core.h
+++ b/src/c_wrapper/wrap_cl_core.h
@@ -41,6 +41,7 @@ error *program__kind(void *ptr_program, int *kind);
 error *program__get_build_info(void *ptr_program, void *ptr_device, cl_program_build_info param, generic_info *out);
 
 error *event__get_profiling_info(void *ptr_event, cl_profiling_info param, generic_info *out);
+error *event__wait(void *ptr_event);
 
 error *_create_kernel(void **ptr_kernel, void *ptr_program, char *name);
 error *kernel__set_arg_mem_buffer(void *ptr_kernel, cl_uint arg_index, void *ptr_buffer);
-- 
GitLab