diff options
author | Ethan Vrhel <ethanvrhel@gmail.com> | 2021-10-31 14:43:14 -0700 |
---|---|---|
committer | Ethan Vrhel <ethanvrhel@gmail.com> | 2021-10-31 14:51:08 -0700 |
commit | d653ac8b161e1cf49b177330dda2c0fc268a0e15 (patch) | |
tree | 8ec5dc842a2c103f61dfad4d3c04d7a61cca0a56 /demos | |
parent | e58eeed4a3716adbc47f65e2ef2f812701f6f450 (diff) | |
download | ghostpdl-d653ac8b161e1cf49b177330dda2c0fc268a0e15.tar.gz |
Removed warnings in gs_jni and addition mtdemo documentation
Diffstat (limited to 'demos')
-rw-r--r-- | demos/java/jni/gs_jni/callbacks.cpp | 4 | ||||
-rw-r--r-- | demos/java/jni/gs_jni/com_artifex_gsjava_GSAPI.cpp | 43 | ||||
-rw-r--r-- | demos/java/jni/gs_jni/com_artifex_gsjava_util_NativePointer.cpp | 20 | ||||
-rw-r--r-- | demos/java/jni/gs_jni/instance_data.h | 2 | ||||
-rw-r--r-- | demos/java/jni/gs_jni/jni_util.cpp | 2 | ||||
-rw-r--r-- | demos/java/jni/gs_jni/settings.h | 5 | ||||
-rw-r--r-- | demos/java/mtdemo/README.txt | 27 | ||||
-rw-r--r-- | demos/java/mtdemo/build_win32.bat (renamed from demos/java/mtdemo/build.bat) | 0 | ||||
-rw-r--r-- | demos/java/mtdemo/runmtd_win32.bat (renamed from demos/java/mtdemo/runmtd.bat) | 0 |
9 files changed, 77 insertions, 26 deletions
diff --git a/demos/java/jni/gs_jni/callbacks.cpp b/demos/java/jni/gs_jni/callbacks.cpp index 646219330..fa2f54b75 100644 --- a/demos/java/jni/gs_jni/callbacks.cpp +++ b/demos/java/jni/gs_jni/callbacks.cpp @@ -172,7 +172,7 @@ int callbacks::calloutFunction(void *instance, void *handle, const char *deviceN if (gsdata->env && gsdata->callout) { - jsize len = strlen(deviceName); + jsize len = (jsize)strlen(deviceName); jbyteArray array = gsdata->env->NewByteArray(len); gsdata->env->SetByteArrayRegion(array, 0, len, (const jbyte *)deviceName); code = callIntMethod(gsdata->env, gsdata->callout, "onCallout", "(JJ[BIIJ)I", (jlong)instance, (jlong)gsdata->callerHandle, array, id, size, (jlong)data); @@ -364,7 +364,7 @@ int callbacks::display::displaySeparationFunction(void *handle, void *device, in if (gsdata->env && gsdata->displayCallback) { - jsize len = strlen(componentName); + jsize len = (jsize)strlen(componentName); jbyteArray byteArray = gsdata->env->NewByteArray(len); gsdata->env->SetByteArrayRegion(byteArray, 0, len, (const jbyte *)componentName); code = callIntMethod(gsdata->env, gsdata->displayCallback, "onDisplaySeparation", DISPLAY_SEPARATION_SIG, (jlong)gsdata->callerHandle, diff --git a/demos/java/jni/gs_jni/com_artifex_gsjava_GSAPI.cpp b/demos/java/jni/gs_jni/com_artifex_gsjava_GSAPI.cpp index b67c3ecb7..c5b809481 100644 --- a/demos/java/jni/gs_jni/com_artifex_gsjava_GSAPI.cpp +++ b/demos/java/jni/gs_jni/com_artifex_gsjava_GSAPI.cpp @@ -422,7 +422,7 @@ JNIEXPORT jint JNICALL Java_com_artifex_gsjava_GSAPI_gsapi_1get_1param_1once jbyteArray arr = NULL; const char *str = NULL; - int len = 0; + jsize len = 0; switch (stripped) { case gs_spt_null: @@ -449,7 +449,7 @@ JNIEXPORT jint JNICALL Java_com_artifex_gsjava_GSAPI_gsapi_1get_1param_1once case gs_spt_string: case gs_spt_parsed: str = (const char *)data; - len = strlen(str) + 1; + len = (jsize)strlen(str) + 1; arr = env->NewByteArray(len); env->SetByteArrayRegion(arr, 0, len, (const jbyte *)str); ref.set(arr); @@ -493,7 +493,7 @@ JNIEXPORT jint JNICALL Java_com_artifex_gsjava_GSAPI_gsapi_1enumerate_1params { iterRef.set((jlong)citer); - jsize len = strlen(ckey) + 1; + jsize len = (jsize)strlen(ckey) + 1; jbyteArray arr = env->NewByteArray(len); env->SetByteArrayRegion(arr, 0, len, (const jbyte *)ckey); keyRef.set(arr); @@ -574,23 +574,53 @@ void *getAsPointer(JNIEnv *env, jobject object, gs_set_param_type type, bool *su break; case gs_spt_bool: result = malloc(sizeof(int)); + if (!result) + { + throwAllocationError(env, "getAsPointer"); + return NULL; + } + *((int *)result) = (bool)toBoolean(env, object); break; case gs_spt_int: result = malloc(sizeof(int)); + if (!result) + { + throwAllocationError(env, "getAsPointer"); + return NULL; + } + *((int *)result) = (int)toInt(env, object); break; case gs_spt_float: result = malloc(sizeof(float)); + if (!result) + { + throwAllocationError(env, "getAsPointer"); + return NULL; + } + *((float *)result) = (float)toFloat(env, object); break; case gs_spt_long: case gs_spt_i64: result = malloc(sizeof(long long)); + if (!result) + { + throwAllocationError(env, "getAsPointer"); + return NULL; + } + *((long long *)result) = (long long)toLong(env, object); break; case gs_spt_size_t: result = malloc(sizeof(size_t)); + if (!result) + { + throwAllocationError(env, "getAsPointer"); + return NULL; + } + *((size_t *)result) = (size_t)toLong(env, object); break; case gs_spt_name: @@ -600,6 +630,12 @@ void *getAsPointer(JNIEnv *env, jobject object, gs_set_param_type type, bool *su cstring = (const char *)env->GetByteArrayElements(arr, ©); len = env->GetArrayLength(arr); result = malloc(sizeof(char) * len); + if (!result) + { + throwAllocationError(env, "getAsPointer"); + return NULL; + } + //((char *)result)[len - 1] = 0; memcpy(result, cstring, len); break; @@ -608,6 +644,7 @@ void *getAsPointer(JNIEnv *env, jobject object, gs_set_param_type type, bool *su *success = false; break; } + if (env->ExceptionCheck()) { if (result) diff --git a/demos/java/jni/gs_jni/com_artifex_gsjava_util_NativePointer.cpp b/demos/java/jni/gs_jni/com_artifex_gsjava_util_NativePointer.cpp index 04c435cb0..0589c6b3c 100644 --- a/demos/java/jni/gs_jni/com_artifex_gsjava_util_NativePointer.cpp +++ b/demos/java/jni/gs_jni/com_artifex_gsjava_util_NativePointer.cpp @@ -33,8 +33,8 @@ JNIEXPORT void JNICALL Java_com_artifex_gsjava_util_NativePointer_freeNative JNIEXPORT jbyteArray JNICALL Java_com_artifex_gsjava_util_NativePointer_byteArrayNative (JNIEnv *env, jclass, jlong address, jlong len) { - jbyteArray array = env->NewByteArray(len); - env->SetByteArrayRegion(array, 0, len, (const jbyte *)address); + jbyteArray array = env->NewByteArray((jsize)len); + env->SetByteArrayRegion(array, 0, (jsize)len, (const jbyte *)address); return array; } @@ -53,8 +53,8 @@ JNIEXPORT void JNICALL Java_com_artifex_gsjava_util_NativePointer_setByteNative JNIEXPORT jcharArray JNICALL Java_com_artifex_gsjava_util_NativePointer_charArrayNative (JNIEnv *env, jclass, jlong address, jlong len) { - jcharArray array = env->NewCharArray(len); - env->SetCharArrayRegion(array, 0, len, (const jchar *)address); + jcharArray array = env->NewCharArray((jsize)len); + env->SetCharArrayRegion(array, 0, (jsize)len, (const jchar *)address); return array; } @@ -73,8 +73,8 @@ JNIEXPORT void JNICALL Java_com_artifex_gsjava_util_NativePointer_setCharNative JNIEXPORT jshortArray JNICALL Java_com_artifex_gsjava_util_NativePointer_shortArrayNative (JNIEnv *env, jclass, jlong address, jlong len) { - jshortArray array = env->NewShortArray(len); - env->SetShortArrayRegion(array, 0, len, (const jshort *)address); + jshortArray array = env->NewShortArray((jsize)len); + env->SetShortArrayRegion(array, 0, (jsize)len, (const jshort *)address); return array; } @@ -93,8 +93,8 @@ JNIEXPORT void JNICALL Java_com_artifex_gsjava_util_NativePointer_setShortNative JNIEXPORT jintArray JNICALL Java_com_artifex_gsjava_util_NativePointer_intArrayNative (JNIEnv *env, jclass, jlong address, jlong len) { - jintArray array = env->NewIntArray(len); - env->SetIntArrayRegion(array, 0, len, (const jint *)address); + jintArray array = env->NewIntArray((jsize)len); + env->SetIntArrayRegion(array, 0, (jsize)len, (const jint *)address); return array; } @@ -113,8 +113,8 @@ JNIEXPORT void JNICALL Java_com_artifex_gsjava_util_NativePointer_setIntNative JNIEXPORT jlongArray JNICALL Java_com_artifex_gsjava_util_NativePointer_longArrayNative (JNIEnv *env, jclass, jlong address, jlong len) { - jlongArray array = env->NewLongArray(len); - env->SetLongArrayRegion(array, 0, len, (const jlong *)address); + jlongArray array = env->NewLongArray((jsize)len); + env->SetLongArrayRegion(array, 0, (jsize)len, (const jlong *)address); return array; } diff --git a/demos/java/jni/gs_jni/instance_data.h b/demos/java/jni/gs_jni/instance_data.h index e955e76ec..94422a672 100644 --- a/demos/java/jni/gs_jni/instance_data.h +++ b/demos/java/jni/gs_jni/instance_data.h @@ -14,7 +14,7 @@ public: void *callerHandle = NULL; // The caller handle passed to gsapi_new_instance void *stdioHandle = NULL; // The caller handle passed to gsapi_set_stdio_with_handle - JNIEnv *env; // The JNIEnv which should be used for JNI API calls + JNIEnv *env = NULL; // The JNIEnv which should be used for JNI API calls jobject stdIn = NULL; // The user IStdInFunction class for stdin input jobject stdOut = NULL; // The user IStdOutFunction class for stdout output diff --git a/demos/java/jni/gs_jni/jni_util.cpp b/demos/java/jni/gs_jni/jni_util.cpp index dfb570a8b..cd43c534e 100644 --- a/demos/java/jni/gs_jni/jni_util.cpp +++ b/demos/java/jni/gs_jni/jni_util.cpp @@ -90,7 +90,7 @@ char **util::jbyteArray2DToCharArray(JNIEnv *env, jobjectArray array) { jbyteArray byteArrayObject = (jbyteArray)env->GetObjectArrayElement(array, i); char *elem = (char *)env->GetByteArrayElements(byteArrayObject, ©); - jsize slen = strlen(elem); + jsize slen = (jsize)strlen(elem); char *nstring = new char[slen + 1LL]; nstring[slen] = 0; memcpy(nstring, elem, slen); diff --git a/demos/java/jni/gs_jni/settings.h b/demos/java/jni/gs_jni/settings.h new file mode 100644 index 000000000..7e3edb30d --- /dev/null +++ b/demos/java/jni/gs_jni/settings.h @@ -0,0 +1,5 @@ +#pragma once + +// Use to support multithreading, ghostpdl must be compiled with multithreading +// enabled as well +#define GSJNI_SUPPORT_MT
\ No newline at end of file diff --git a/demos/java/mtdemo/README.txt b/demos/java/mtdemo/README.txt index e9b745a4e..bc6978107 100644 --- a/demos/java/mtdemo/README.txt +++ b/demos/java/mtdemo/README.txt @@ -7,20 +7,29 @@ What is here? * Main.java - Class containing Java main method * Worker.java - Class which handles concurrently running Ghostscript -* build.bat - Builds the Java program -* runmtd.bat - Starts the Java program +* build_win32.bat - Builds the Java program for Windows +* runmtd_win32.bat - Starts the Java program for Windows -Needed in this directory to run: -* gpdldll64.dll (COMPILED FOR MULTITHREADING - use DGS_THREADSAFE) -* gs_jni.dll -* gsjava.jar +Building: + +Windows: + +* Ensure the gsjava project has been built (..\gsjava\build_win32.bat) +* Run build_win32.bat -How to run: + +Running: Windows: +Needed in this directory to run: + +* gpdldll64.dll (COMPILED FOR MULTITHREADING - use DGS_THREADSAFE in psi\msvc.mak) +* gs_jni.dll (COMPILED FOR MULTITHREADING - enable GSJNI_SUPPORT_MT in settings.h) +* gsjava.jar + The application can be started through the command line through the -batch file "runmtd.bat". The batch file takes an optional command +batch file "runmtd_win32.bat". The batch file takes an optional command line argument specifying the number of threads to be created. If -specified, it should be an integer grater than 0.
\ No newline at end of file +specified, it should be an integer greater than 0.
\ No newline at end of file diff --git a/demos/java/mtdemo/build.bat b/demos/java/mtdemo/build_win32.bat index 5dd5f34b8..5dd5f34b8 100644 --- a/demos/java/mtdemo/build.bat +++ b/demos/java/mtdemo/build_win32.bat diff --git a/demos/java/mtdemo/runmtd.bat b/demos/java/mtdemo/runmtd_win32.bat index f23ce990d..f23ce990d 100644 --- a/demos/java/mtdemo/runmtd.bat +++ b/demos/java/mtdemo/runmtd_win32.bat |