From 3615a430cd1ee4497141df1627fb0a3604c1d60c Mon Sep 17 00:00:00 2001
From: Gary Frost <frost.gary@gmail.com>
Date: Fri, 5 Jul 2013 02:46:47 +0000
Subject: [PATCH] for issue #120 we now release context, queue and events
---
com.amd.aparapi.jni/src/cpp/invoke/OpenCLJNI.cpp | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/com.amd.aparapi.jni/src/cpp/invoke/OpenCLJNI.cpp b/com.amd.aparapi.jni/src/cpp/invoke/OpenCLJNI.cpp
index e985bd18..a0916bc0 100644
--- a/com.amd.aparapi.jni/src/cpp/invoke/OpenCLJNI.cpp
+++ b/com.amd.aparapi.jni/src/cpp/invoke/OpenCLJNI.cpp
@@ -252,9 +252,13 @@ void getArg(JNIEnv *jenv, cl_context context, cl_command_queue commandQueue, cl_
JNI_JAVA(void, OpenCLJNI, disposeProgram)
(JNIEnv *jenv, jobject jobj, jobject programInstance) {
- fprintf(stderr, "dispose program \n");
+ //fprintf(stderr, "dispose program \n");
cl_program program = OpenCLProgram::getProgram(jenv, programInstance);
clReleaseProgram(program);
+ cl_command_queue commandQueue = OpenCLProgram::getCommandQueue(jenv, programInstance);
+ clReleaseCommandQueue(commandQueue);
+ cl_context context = OpenCLProgram::getContext(jenv, programInstance);
+ clReleaseContext(context);
}
JNI_JAVA(void, OpenCLJNI, disposeKernel)
@@ -267,7 +271,7 @@ JNI_JAVA(void, OpenCLJNI, disposeKernel)
cl_context context = OpenCLProgram::getContext(jenv, programInstance);
cl_command_queue commandQueue = OpenCLProgram::getCommandQueue(jenv, programInstance);
jsize argc = jenv->GetArrayLength(argDefsArray);
- fprintf(stderr, "dispose! argc = %d\n", argc);
+ //fprintf(stderr, "dispose! argc = %d\n", argc);
for (jsize argIndex = 0; argIndex < argc; argIndex++){
jobject argDef = jenv->GetObjectArrayElement(argDefsArray, argIndex);
jlong argBits = OpenCLArgDescriptor::getBits(jenv, argDef);
@@ -279,7 +283,7 @@ JNI_JAVA(void, OpenCLJNI, disposeKernel)
cl_mem mem = OpenCLMem::getMem(jenv, memInstance);
size_t sizeInBytes = OpenCLMem::getSizeInBytes(jenv, memInstance);
cl_int status = clReleaseMemObject(mem);
- fprintf(stderr, "mem instance %d released!\n", sizeInBytes);
+ //fprintf(stderr, "mem instance %d released!\n", sizeInBytes);
}
}
}
@@ -365,6 +369,9 @@ JNI_JAVA(void, OpenCLJNI, invoke)
getArg(jenv, context, commandQueue, events, &eventc, argIndex, argDef, arg);
}
status = clWaitForEvents(eventc, events);
+ for (int i=0;i<eventc; i++){
+ clReleaseEvent(events[i]);
+ }
if (status != CL_SUCCESS) {
fprintf(stderr, "error waiting for events !\n");
}
--
GitLab