summaryrefslogtreecommitdiff
path: root/demos
diff options
context:
space:
mode:
authorEthan Vrhel <ethanvrhel@gmail.com>2021-10-31 14:43:14 -0700
committerEthan Vrhel <ethanvrhel@gmail.com>2021-10-31 14:51:08 -0700
commitd653ac8b161e1cf49b177330dda2c0fc268a0e15 (patch)
tree8ec5dc842a2c103f61dfad4d3c04d7a61cca0a56 /demos
parente58eeed4a3716adbc47f65e2ef2f812701f6f450 (diff)
downloadghostpdl-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.cpp4
-rw-r--r--demos/java/jni/gs_jni/com_artifex_gsjava_GSAPI.cpp43
-rw-r--r--demos/java/jni/gs_jni/com_artifex_gsjava_util_NativePointer.cpp20
-rw-r--r--demos/java/jni/gs_jni/instance_data.h2
-rw-r--r--demos/java/jni/gs_jni/jni_util.cpp2
-rw-r--r--demos/java/jni/gs_jni/settings.h5
-rw-r--r--demos/java/mtdemo/README.txt27
-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, &copy);
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, &copy);
- 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