diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2016-04-26 20:11:49 +0200 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2016-04-27 17:01:06 +0200 |
commit | 9b4acc78d2a56a5f79d69f50e72197930509505e (patch) | |
tree | b30e03bd1e80d859b578324425e2486f122c5ac8 /platform/java/mupdf_native.c | |
parent | ed763d50c7363af5f09d24d0e04b95ca59ff7960 (diff) | |
download | mupdf-9b4acc78d2a56a5f79d69f50e72197930509505e.tar.xz |
Add fz_close_device function.
Garbage collected languages need a way to signal that they are done
with a device other than freeing it.
Call it implicitly on fz_drop_device; so take care not to call it again
in case it has been explicitly called already.
Diffstat (limited to 'platform/java/mupdf_native.c')
-rw-r--r-- | platform/java/mupdf_native.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/platform/java/mupdf_native.c b/platform/java/mupdf_native.c index ad8d5ccc..e835a76d 100644 --- a/platform/java/mupdf_native.c +++ b/platform/java/mupdf_native.c @@ -1284,7 +1284,7 @@ fz_java_device_end_tile(fz_context *ctx, fz_device *dev) } static void -fz_java_device_drop_imp(fz_context *ctx, fz_device *dev) +fz_java_device_close(fz_context *ctx, fz_device *dev) { fz_java_device *jdev = (fz_java_device *)dev; JNIEnv *env = jdev->env; @@ -1303,7 +1303,7 @@ static fz_device *fz_new_java_device(fz_context *ctx, JNIEnv *env, jobject self) dev->self = (*env)->NewGlobalRef(env, self); - dev->super.drop_imp = fz_java_device_drop_imp; + dev->super.close = fz_java_device_close; dev->super.fill_path = fz_java_device_fill_path; dev->super.stroke_path = fz_java_device_stroke_path; @@ -1446,6 +1446,25 @@ FUN(NativeDevice_finalize)(JNIEnv *env, jobject self) } JNIEXPORT void JNICALL +FUN(NativeDevice_close)(JNIEnv *env, jobject self) +{ + fz_context *ctx = get_context(env); + fz_device *dev = from_Device(env, self, ctx); + NativeDeviceInfo *info; + + if (ctx == NULL || dev == NULL) + return; + + info = lockNativeDevice(env, self); + fz_try(ctx) + fz_close_device(ctx, dev); + fz_always(ctx) + unlockNativeDevice(env, info); + fz_catch(ctx) + jni_rethrow(env, ctx); +} + +JNIEXPORT void JNICALL FUN(NativeDevice_fillPath)(JNIEnv *env, jobject self, jobject jpath, jboolean even_odd, jobject jctm, jobject jcs, jfloatArray jcolor, float alpha) { fz_context *ctx = get_context(env); |