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 | |
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')
-rw-r--r-- | platform/java/com/artifex/mupdf/fitz/Device.java | 1 | ||||
-rw-r--r-- | platform/java/com/artifex/mupdf/fitz/NativeDevice.java | 2 | ||||
-rw-r--r-- | platform/java/mupdf_native.c | 23 | ||||
-rw-r--r-- | platform/java/mupdf_native.h | 8 |
4 files changed, 32 insertions, 2 deletions
diff --git a/platform/java/com/artifex/mupdf/fitz/Device.java b/platform/java/com/artifex/mupdf/fitz/Device.java index b4e87481..71f0ba54 100644 --- a/platform/java/com/artifex/mupdf/fitz/Device.java +++ b/platform/java/com/artifex/mupdf/fitz/Device.java @@ -38,6 +38,7 @@ public class Device * }; */ + public void close() {} public void fillPath(Path path, boolean evenOdd, Matrix ctm, ColorSpace cs, float color[], float alpha) {} public void strokePath(Path path, StrokeState stroke, Matrix ctm, ColorSpace cs, float color[], float alpha) {} public void clipPath(Path path, boolean evenOdd, Matrix ctm) {} diff --git a/platform/java/com/artifex/mupdf/fitz/NativeDevice.java b/platform/java/com/artifex/mupdf/fitz/NativeDevice.java index 968c5f09..6ea7b0a5 100644 --- a/platform/java/com/artifex/mupdf/fitz/NativeDevice.java +++ b/platform/java/com/artifex/mupdf/fitz/NativeDevice.java @@ -17,6 +17,8 @@ public class NativeDevice extends Device super(p); } + public native final void close(); + public native final void fillPath(Path path, boolean evenOdd, Matrix ctm, ColorSpace cs, float color[], float alpha); public native final void strokePath(Path path, StrokeState stroke, Matrix ctm, ColorSpace cs, float color[], float alpha); public native final void clipPath(Path path, boolean evenOdd, Matrix ctm); 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); diff --git a/platform/java/mupdf_native.h b/platform/java/mupdf_native.h index 95f17084..4b88903e 100644 --- a/platform/java/mupdf_native.h +++ b/platform/java/mupdf_native.h @@ -840,6 +840,14 @@ JNIEXPORT void JNICALL Java_com_artifex_mupdf_fitz_NativeDevice_finalize /* * Class: com_artifex_mupdf_fitz_NativeDevice + * Method: close + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_com_artifex_mupdf_fitz_NativeDevice_close + (JNIEnv *, jobject); + +/* + * Class: com_artifex_mupdf_fitz_NativeDevice * Method: fillPath * Signature: (Lcom/artifex/mupdf/fitz/Path;ZLcom/artifex/mupdf/fitz/Matrix;Lcom/artifex/mupdf/fitz/ColorSpace;[FF)V */ |