diff options
author | Robin Watts <robin.watts@artifex.com> | 2015-08-20 12:39:31 +0100 |
---|---|---|
committer | Robin Watts <robin.watts@artifex.com> | 2015-08-21 19:10:01 +0100 |
commit | 79358b9f05196807b427734a9b209e70e270a61f (patch) | |
tree | 4f9848d10ef781efe98d9261d5f8a660140d794d /platform/android/jni/mupdf.c | |
parent | 574732c2534f5da73701fd322f72a5590bb32258 (diff) | |
download | mupdf-79358b9f05196807b427734a9b209e70e270a61f.tar.xz |
GProof: Fix Android JNI functions for multipage files.
Explicitly pass the page number into separation related
functions.
Diffstat (limited to 'platform/android/jni/mupdf.c')
-rw-r--r-- | platform/android/jni/mupdf.c | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/platform/android/jni/mupdf.c b/platform/android/jni/mupdf.c index 6abb805f..1af19433 100644 --- a/platform/android/jni/mupdf.c +++ b/platform/android/jni/mupdf.c @@ -2791,25 +2791,45 @@ JNI_FN(MuPDFCore_gprfSupportedInternal)(JNIEnv * env) } JNIEXPORT int JNICALL -JNI_FN(MuPDFCore_getNumSepsOnPageInternal)(JNIEnv *env, jobject thiz) +JNI_FN(MuPDFCore_getNumSepsOnPageInternal)(JNIEnv *env, jobject thiz, int page) { globals *glo = get_globals(env, thiz); fz_context *ctx = glo->ctx; + int i; - return fz_count_separations_on_page(ctx, glo->pages[glo->current].page); + for (i = 0; i < NUM_CACHE; i++) + { + if (glo->pages[i].page != NULL && glo->pages[i].number == page) + break; + } + if (i == NUM_CACHE) + return 0; + + LOGE("Counting seps on page %d", page); + + return fz_count_separations_on_page(ctx, glo->pages[i].page); } JNIEXPORT void JNICALL -JNI_FN(MuPDFCore_controlSepOnPageInternal)(JNIEnv *env, jobject thiz, int sep, jboolean disable) +JNI_FN(MuPDFCore_controlSepOnPageInternal)(JNIEnv *env, jobject thiz, int page, int sep, jboolean disable) { globals *glo = get_globals(env, thiz); fz_context *ctx = glo->ctx; + int i; + + for (i = 0; i < NUM_CACHE; i++) + { + if (glo->pages[i].page != NULL && glo->pages[i].number == page) + break; + } + if (i == NUM_CACHE) + return; - fz_control_separation_on_page(ctx, glo->pages[glo->current].page, sep, disable); + fz_control_separation_on_page(ctx, glo->pages[i].page, sep, disable); } JNIEXPORT jobject JNICALL -JNI_FN(MuPDFCore_getSepInternal)(JNIEnv *env, jobject thiz, int sep) +JNI_FN(MuPDFCore_getSepInternal)(JNIEnv *env, jobject thiz, int page, int sep) { globals *glo = get_globals(env, thiz); fz_context *ctx = glo->ctx; @@ -2819,8 +2839,17 @@ JNI_FN(MuPDFCore_getSepInternal)(JNIEnv *env, jobject thiz, int sep) jobject jname; jclass sepClass; jmethodID ctor; + int i; + + for (i = 0; i < NUM_CACHE; i++) + { + if (glo->pages[i].page != NULL && glo->pages[i].number == page) + break; + } + if (i == NUM_CACHE) + return NULL; - name = fz_get_separation_on_page(ctx, glo->pages[glo->current].page, sep, &rgb, &cmyk); + name = fz_get_separation_on_page(ctx, glo->pages[i].page, sep, &rgb, &cmyk); jname = name ? (*env)->NewStringUTF(env, name) : NULL; sepClass = (*env)->FindClass(env, PACKAGENAME "/Separation"); |