mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
samples: fix OpenCL events leaks
This commit is contained in:
parent
6856cc7253
commit
58426c80a3
@ -468,7 +468,6 @@ private:
|
|||||||
cl_kernel m_kernelImg;
|
cl_kernel m_kernelImg;
|
||||||
cl_mem m_img_src; // used as src in case processing of cl image
|
cl_mem m_img_src; // used as src in case processing of cl image
|
||||||
cl_mem m_mem_obj;
|
cl_mem m_mem_obj;
|
||||||
cl_event m_event;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -498,7 +497,6 @@ App::App(CommandLineParser& cmd)
|
|||||||
m_kernelImg = 0;
|
m_kernelImg = 0;
|
||||||
m_img_src = 0;
|
m_img_src = 0;
|
||||||
m_mem_obj = 0;
|
m_mem_obj = 0;
|
||||||
m_event = 0;
|
|
||||||
} // ctor
|
} // ctor
|
||||||
|
|
||||||
|
|
||||||
@ -529,11 +527,6 @@ App::~App()
|
|||||||
m_mem_obj = 0;
|
m_mem_obj = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_event)
|
|
||||||
{
|
|
||||||
clReleaseEvent(m_event);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_kernelBuf)
|
if (m_kernelBuf)
|
||||||
{
|
{
|
||||||
clReleaseKernel(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 origin[] = { 0, 0, 0 };
|
||||||
size_t region[] = { (size_t)frame.cols, (size_t)frame.rows, 1 };
|
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)
|
if (CL_SUCCESS != res)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
res = clWaitForEvents(1, &m_event);
|
res = clWaitForEvents(1, &asyncEvent);
|
||||||
|
clReleaseEvent(asyncEvent);
|
||||||
if (CL_SUCCESS != res)
|
if (CL_SUCCESS != res)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@ -795,17 +790,15 @@ 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
|
// process left half of frame in OpenCL
|
||||||
size_t size[] = { (size_t)frame.cols / 2, (size_t)frame.rows };
|
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)
|
if (CL_SUCCESS != res)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
res = clWaitForEvents(1, &m_event);
|
res = clWaitForEvents(1, &asyncEvent);
|
||||||
|
clReleaseEvent(asyncEvent);
|
||||||
if (CL_SUCCESS != res)
|
if (CL_SUCCESS != res)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user