CVSROOT: /cvsroot/classpath Module name: classpath Changes by: Mark Wielaard <mark> 06/06/07 09:40:54
Modified files: . : ChangeLog gnu/java/awt/peer/gtk: CairoSurface.java ComponentGraphics.java native/jni/gtk-peer: gnu_java_awt_peer_gtk_CairoGraphics2D.c gnu_java_awt_peer_gtk_CairoSurface.c gnu_java_awt_peer_gtk_ComponentGraphics.c include : gnu_java_awt_peer_gtk_CairoGraphics2D.h gnu_java_awt_peer_gtk_CairoSurface.h gnu_java_awt_peer_gtk_ComponentGraphics.h Log message: PR 27917 * gnu/java/awt/peer/gtk/CairoSurface.java (finalize): Call dispose. * gnu/java/awt/peer/gtk/ComponentGraphics.java: Override dispose to call disposeSurface. (disposeSurface): New native method. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative): Free pattern_pixels. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c (Java_gnu_java_awt_peer_gtk_CairoSurface_drawSurface): Call cairo_pattern_destroy. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c (Java_gnu_java_awt_peer_gtk_ComponentGraphics_disposeSurface): New function to destroy the surface. * include/gnu_java_awt_peer_gtk_CairoGraphics2D.h: Regenerated. * include/gnu_java_awt_peer_gtk_CairoSurface.h: Likewise. * include/gnu_java_awt_peer_gtk_ComponentGraphics.h: Likewise. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/classpath/ChangeLog?cvsroot=classpath&r1=1.7691&r2=1.7692 http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/peer/gtk/CairoSurface.java?cvsroot=classpath&r1=1.6&r2=1.7 http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java?cvsroot=classpath&r1=1.10&r2=1.11 http://cvs.savannah.gnu.org/viewcvs/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c?cvsroot=classpath&r1=1.6&r2=1.7 http://cvs.savannah.gnu.org/viewcvs/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c?cvsroot=classpath&r1=1.15&r2=1.16 http://cvs.savannah.gnu.org/viewcvs/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c?cvsroot=classpath&r1=1.13&r2=1.14 http://cvs.savannah.gnu.org/viewcvs/classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h?cvsroot=classpath&r1=1.2&r2=1.3 http://cvs.savannah.gnu.org/viewcvs/classpath/include/gnu_java_awt_peer_gtk_CairoSurface.h?cvsroot=classpath&r1=1.2&r2=1.3 http://cvs.savannah.gnu.org/viewcvs/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h?cvsroot=classpath&r1=1.4&r2=1.5 Patches: Index: ChangeLog =================================================================== RCS file: /cvsroot/classpath/classpath/ChangeLog,v retrieving revision 1.7691 retrieving revision 1.7692 diff -u -b -r1.7691 -r1.7692 --- ChangeLog 7 Jun 2006 08:04:48 -0000 1.7691 +++ ChangeLog 7 Jun 2006 09:40:53 -0000 1.7692 @@ -8,6 +8,26 @@ 2006-06-06 Mark Wielaard <[EMAIL PROTECTED]> + PR 27917 + * gnu/java/awt/peer/gtk/CairoSurface.java (finalize): Call dispose. + * gnu/java/awt/peer/gtk/ComponentGraphics.java: Override dispose to + call disposeSurface. + (disposeSurface): New native method. + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c + (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative): Free + pattern_pixels. + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c + (Java_gnu_java_awt_peer_gtk_CairoSurface_drawSurface): Call + cairo_pattern_destroy. + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c + (Java_gnu_java_awt_peer_gtk_ComponentGraphics_disposeSurface): + New function to destroy the surface. + * include/gnu_java_awt_peer_gtk_CairoGraphics2D.h: Regenerated. + * include/gnu_java_awt_peer_gtk_CairoSurface.h: Likewise. + * include/gnu_java_awt_peer_gtk_ComponentGraphics.h: Likewise. + +2006-06-06 Mark Wielaard <[EMAIL PROTECTED]> + * include/jni.h (JDK1_1InitArgs): Mark pointer-to-function types with JNICALL. Index: gnu/java/awt/peer/gtk/CairoSurface.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/CairoSurface.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -b -r1.6 -r1.7 --- gnu/java/awt/peer/gtk/CairoSurface.java 4 Jun 2006 19:44:39 -0000 1.6 +++ gnu/java/awt/peer/gtk/CairoSurface.java 7 Jun 2006 09:40:54 -0000 1.7 @@ -199,6 +199,14 @@ } /** + * Call dispose() to clean up any native resources allocated. + */ + protected void finalize() + { + dispose(); + } + + /** * Return a GtkImage from this Cairo surface. */ public GtkImage getGtkImage() Index: gnu/java/awt/peer/gtk/ComponentGraphics.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -b -r1.10 -r1.11 --- gnu/java/awt/peer/gtk/ComponentGraphics.java 6 Jun 2006 02:22:28 -0000 1.10 +++ gnu/java/awt/peer/gtk/ComponentGraphics.java 7 Jun 2006 09:40:54 -0000 1.11 @@ -99,6 +99,21 @@ private native long initState(GtkComponentPeer component); /** + * Destroys the component surface and calls dispose on the cairo + * graphics2d to destroy any super class resources. + */ + public void dispose() + { + disposeSurface(nativePointer); + super.dispose(); + } + + /** + * Destroys the component surface. + */ + private native void disposeSurface(long nativePointer); + + /** * Creates a cairo_t for a volatile image */ protected native long initFromVolatile( long pixmapPtr, int width, int height); Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -b -r1.6 -r1.7 --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c 3 Jun 2006 22:47:03 -0000 1.6 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c 7 Jun 2006 09:40:54 -0000 1.7 @@ -124,6 +124,10 @@ cairo_surface_destroy (gr->pattern_surface); gr->pattern_surface = NULL; + if (gr->pattern_pixels) + g_free(gr->pattern_pixels); + gr->pattern_pixels = NULL; + g_free( gr ); } Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -b -r1.15 -r1.16 --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c 4 Jun 2006 19:44:39 -0000 1.15 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoSurface.c 7 Jun 2006 09:40:54 -0000 1.16 @@ -203,6 +203,7 @@ cairo_set_source(cr, p); cairo_paint(cr); + cairo_pattern_destroy(p); } (*env)->ReleaseDoubleArrayElements (env, java_matrix, native_matrix, 0); Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -b -r1.13 -r1.14 --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c 6 Jun 2006 02:22:28 -0000 1.13 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_ComponentGraphics.c 7 Jun 2006 09:40:54 -0000 1.14 @@ -54,6 +54,8 @@ #include "gnu_java_awt_peer_gtk_ComponentGraphics.h" +#include "cairographics2d.h" + static short flush_scheduled = 0; static gboolean flush (gpointer data __attribute__((unused))) @@ -163,6 +165,30 @@ return PTR_TO_JLONG(cr); } +/** + * Disposes of the surface + */ +JNIEXPORT void JNICALL +Java_gnu_java_awt_peer_gtk_ComponentGraphics_disposeSurface + (JNIEnv *env __attribute__((unused)), jobject obj __attribute__((unused)), + jlong value) +{ + struct cairographics2d *gr; + cairo_surface_t *surface; + + gr = JLONG_TO_PTR(struct cairographics2d, value); + + if (gr == NULL) + return; + + if (gr->cr == NULL) + return; + + surface = cairo_get_target (gr->cr); + if (surface != NULL) + cairo_surface_destroy (surface); +} + JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_initFromVolatile (JNIEnv *env __attribute__ ((unused)), jobject obj __attribute__ ((unused)), Index: include/gnu_java_awt_peer_gtk_CairoGraphics2D.h =================================================================== RCS file: /cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -b -r1.2 -r1.3 --- include/gnu_java_awt_peer_gtk_CairoGraphics2D.h 3 Jun 2006 22:47:03 -0000 1.2 +++ include/gnu_java_awt_peer_gtk_CairoGraphics2D.h 7 Jun 2006 09:40:54 -0000 1.3 @@ -34,8 +34,8 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoStroke (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFill (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip (JNIEnv *env, jobject); -JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoPreserveClip (JNIEnv *env, jobject); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSurfaceSetFilter (JNIEnv *env, jobject, jint); #ifdef __cplusplus Index: include/gnu_java_awt_peer_gtk_CairoSurface.h =================================================================== RCS file: /cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_CairoSurface.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -b -r1.2 -r1.3 --- include/gnu_java_awt_peer_gtk_CairoSurface.h 4 Jun 2006 19:44:39 -0000 1.2 +++ include/gnu_java_awt_peer_gtk_CairoSurface.h 7 Jun 2006 09:40:54 -0000 1.3 @@ -17,8 +17,8 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_drawSurface (JNIEnv *env, jobject, jobject, jdoubleArray); JNIEXPORT jintArray JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_getPixels (JNIEnv *env, jobject, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_setPixels (JNIEnv *env, jobject, jintArray); -JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_newCairoContext (JNIEnv *env, jobject); JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_getFlippedBuffer (JNIEnv *env, jobject, jint); +JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_newCairoContext (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoSurface_copyAreaNative (JNIEnv *env, jobject, jint, jint, jint, jint, jint, jint, jint); #ifdef __cplusplus Index: include/gnu_java_awt_peer_gtk_ComponentGraphics.h =================================================================== RCS file: /cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_ComponentGraphics.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -b -r1.4 -r1.5 --- include/gnu_java_awt_peer_gtk_ComponentGraphics.h 6 Jun 2006 02:22:28 -0000 1.4 +++ include/gnu_java_awt_peer_gtk_ComponentGraphics.h 7 Jun 2006 09:40:54 -0000 1.5 @@ -11,7 +11,8 @@ #endif JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_initState (JNIEnv *env, jobject, jobject); -JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_initFromVolatile(JNIEnv *env, jobject, jlong, jint, jint); +JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_disposeSurface (JNIEnv *env, jobject, jlong); +JNIEXPORT jlong JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_initFromVolatile (JNIEnv *env, jobject, jlong, jint, jint); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_start_1gdk_1drawing (JNIEnv *env, jobject); JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_end_1gdk_1drawing (JNIEnv *env, jobject); JNIEXPORT jboolean JNICALL Java_gnu_java_awt_peer_gtk_ComponentGraphics_hasXRender (JNIEnv *env, jclass);