Skip to content

Commit fefa66d

Browse files
authored
Merge pull request #44 from starcatter/android-studio-fix
Fix build for Android Studio and older jni.h versions
2 parents 2c11f91 + b4b66b8 commit fefa66d

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

src/main/native/JOCL.cpp

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@
4040
#include "CLFunctions.hpp"
4141
#include "FunctionPointerUtils.hpp"
4242

43+
#ifdef JNI_VERSION_1_8
44+
#define JNI_ENV_TYPE void**
45+
#else
46+
#define JNI_ENV_TYPE JNIEnv**
47+
#endif
48+
4349
// Static method IDs for the "function pointer" interfaces
4450
static jmethodID CreateContextFunction_function; // (Ljava/lang/String;Lorg/jocl/Pointer;JLjava/lang/Object;)V
4551
static jmethodID BuildProgramFunction_function; // (Lorg/jocl/cl_program;Ljava/lang/Object;)V
@@ -64,7 +70,7 @@ void registerAllNatives(JNIEnv *env, jclass cls);
6470
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jvm, void *reserved)
6571
{
6672
JNIEnv *env = NULL;
67-
if (jvm->GetEnv((void**)&env, JNI_VERSION_1_4))
73+
if (jvm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_4))
6874
{
6975
return JNI_ERR;
7076
}
@@ -174,10 +180,10 @@ void CL_CALLBACK CreateContextFunction(const char *errinfo, const void *private_
174180
jobject user_data = callbackInfo->globalUser_data;
175181

176182
JNIEnv *env = NULL;
177-
jint attached = globalJvm->GetEnv((void**)&env, JNI_VERSION_1_4);
183+
jint attached = globalJvm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_4);
178184
if (attached != JNI_OK)
179185
{
180-
globalJvm->AttachCurrentThread((void**)&env, NULL);
186+
globalJvm->AttachCurrentThread((JNI_ENV_TYPE)&env, NULL);
181187
}
182188

183189
jstring errinfoString = env->NewStringUTF(errinfo);
@@ -209,10 +215,10 @@ void CL_CALLBACK BuildProgramFunction(cl_program program, void *user_dataInfo)
209215
Logger::log(LOG_DEBUGTRACE, "Executing BuildProgramFunction\n");
210216

211217
JNIEnv *env = NULL;
212-
jint attached = globalJvm->GetEnv((void**)&env, JNI_VERSION_1_4);
218+
jint attached = globalJvm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_4);
213219
if (attached != JNI_OK)
214220
{
215-
globalJvm->AttachCurrentThread((void**)&env, NULL);
221+
globalJvm->AttachCurrentThread((JNI_ENV_TYPE)&env, NULL);
216222
}
217223

218224
CallbackInfo *callbackInfo = (CallbackInfo*)user_dataInfo;
@@ -251,10 +257,10 @@ void CL_CALLBACK EnqueueNativeKernelFunction(void *argsInfo)
251257
Logger::log(LOG_DEBUGTRACE, "Executing EnqueueNativeKernelFunction\n");
252258

253259
JNIEnv *env = NULL;
254-
jint attached = globalJvm->GetEnv((void**)&env, JNI_VERSION_1_4);
260+
jint attached = globalJvm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_4);
255261
if (attached != JNI_OK)
256262
{
257-
globalJvm->AttachCurrentThread((void**)&env, NULL);
263+
globalJvm->AttachCurrentThread((JNI_ENV_TYPE)&env, NULL);
258264
}
259265

260266
CallbackInfo *callbackInfo = (CallbackInfo*)argsInfo;
@@ -288,10 +294,10 @@ void CL_CALLBACK MemObjectDestructorCallback(cl_mem memobj, void *user_dataInfo)
288294
Logger::log(LOG_DEBUGTRACE, "Executing MemObjectDestructorCallback\n");
289295

290296
JNIEnv *env = NULL;
291-
jint attached = globalJvm->GetEnv((void**)&env, JNI_VERSION_1_4);
297+
jint attached = globalJvm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_4);
292298
if (attached != JNI_OK)
293299
{
294-
globalJvm->AttachCurrentThread((void**)&env, NULL);
300+
globalJvm->AttachCurrentThread((JNI_ENV_TYPE)&env, NULL);
295301
}
296302

297303
CallbackInfo *callbackInfo = (CallbackInfo*)user_dataInfo;
@@ -331,10 +337,10 @@ void CL_CALLBACK EventCallback(cl_event event, cl_int command_exec_callback_type
331337
Logger::log(LOG_DEBUGTRACE, "Executing EventCallback\n");
332338

333339
JNIEnv *env = NULL;
334-
jint attached = globalJvm->GetEnv((void**)&env, JNI_VERSION_1_4);
340+
jint attached = globalJvm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_4);
335341
if (attached != JNI_OK)
336342
{
337-
globalJvm->AttachCurrentThread((void**)&env, NULL);
343+
globalJvm->AttachCurrentThread((JNI_ENV_TYPE)&env, NULL);
338344
}
339345

340346
CallbackInfo *callbackInfo = (CallbackInfo*)user_dataInfo;
@@ -374,10 +380,10 @@ void CL_CALLBACK PrintfCallbackFunction(cl_context context, cl_uint printf_data_
374380
Logger::log(LOG_DEBUGTRACE, "Executing PrintfCallbackFunction\n");
375381

376382
JNIEnv *env = NULL;
377-
jint attached = globalJvm->GetEnv((void**)&env, JNI_VERSION_1_4);
383+
jint attached = globalJvm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_4);
378384
if (attached != JNI_OK)
379385
{
380-
globalJvm->AttachCurrentThread((void**)&env, NULL);
386+
globalJvm->AttachCurrentThread((JNI_ENV_TYPE)&env, NULL);
381387
}
382388

383389
CallbackInfo *callbackInfo = (CallbackInfo*)user_dataInfo;
@@ -423,10 +429,10 @@ void CL_CALLBACK SVMFreeCallbackFunction(cl_command_queue queue, cl_uint num_svn
423429
Logger::log(LOG_DEBUGTRACE, "Executing SVMFreeCallbackFunction\n");
424430

425431
JNIEnv *env = NULL;
426-
jint attached = globalJvm->GetEnv((void**)&env, JNI_VERSION_1_4);
432+
jint attached = globalJvm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_4);
427433
if (attached != JNI_OK)
428434
{
429-
globalJvm->AttachCurrentThread((void**)&env, NULL);
435+
globalJvm->AttachCurrentThread((JNI_ENV_TYPE)&env, NULL);
430436
}
431437

432438
CallbackInfo *callbackInfo = (CallbackInfo*)user_dataInfo;

0 commit comments

Comments
 (0)