diff --git a/samples/opencl/opencl-opencv-interop.cpp b/samples/opencl/opencl-opencv-interop.cpp index 3d1357668f..3d6fec09ae 100644 --- a/samples/opencl/opencl-opencv-interop.cpp +++ b/samples/opencl/opencl-opencv-interop.cpp @@ -468,7 +468,6 @@ private: cl_kernel m_kernelImg; cl_mem m_img_src; // used as src in case processing of cl image cl_mem m_mem_obj; - cl_event m_event; }; @@ -498,7 +497,6 @@ App::App(CommandLineParser& cmd) m_kernelImg = 0; m_img_src = 0; m_mem_obj = 0; - m_event = 0; } // ctor @@ -529,11 +527,6 @@ App::~App() m_mem_obj = 0; } - if (m_event) - { - clReleaseEvent(m_event); - } - if (m_kernelBuf) { clReleaseKernel(m_kernelBuf); @@ -775,11 +768,13 @@ int App::process_frame_with_open_cl(cv::Mat& frame, bool use_buffer, cl_mem* mem size_t origin[] = { 0, 0, 0 }; size_t region[] = { (size_t)frame.cols, (size_t)frame.rows, 1 }; - res = clEnqueueCopyImage(m_queue, m_img_src, mem, origin, origin, region, 0, 0, &m_event); + cl_event asyncEvent = 0; + res = clEnqueueCopyImage(m_queue, m_img_src, mem, origin, origin, region, 0, 0, &asyncEvent); if (CL_SUCCESS != res) return -1; - res = clWaitForEvents(1, &m_event); + res = clWaitForEvents(1, &asyncEvent); + clReleaseEvent(asyncEvent); if (CL_SUCCESS != res) return -1; @@ -795,19 +790,17 @@ int App::process_frame_with_open_cl(cv::Mat& frame, bool use_buffer, cl_mem* mem } } - m_event = clCreateUserEvent(m_context, &res); - if (0 == m_event || CL_SUCCESS != res) - return -1; - // process left half of frame in OpenCL size_t size[] = { (size_t)frame.cols / 2, (size_t)frame.rows }; - res = clEnqueueNDRangeKernel(m_queue, kernel, 2, 0, size, 0, 0, 0, &m_event); + cl_event asyncEvent = 0; + res = clEnqueueNDRangeKernel(m_queue, kernel, 2, 0, size, 0, 0, 0, &asyncEvent); if (CL_SUCCESS != res) return -1; - res = clWaitForEvents(1, &m_event); + res = clWaitForEvents(1, &asyncEvent); + clReleaseEvent(asyncEvent); if (CL_SUCCESS != res) - return - 1; + return -1; mem_obj[0] = mem;