diff options
author | Francis Kung <fkung@redhat.com> | 2007-04-04 19:20:33 +0000 |
---|---|---|
committer | Francis Kung <fkung@redhat.com> | 2007-04-04 19:20:33 +0000 |
commit | 92e47e958daba7783fc0db2ad9445919081139d6 (patch) | |
tree | 13ca53815a917284b9ec2cb847ce752977a559ee | |
parent | 9f156012be54af9f4c30ad79b49c69b87cc0e164 (diff) | |
download | classpath-92e47e958daba7783fc0db2ad9445919081139d6.tar.gz |
2007-04-04 Francis Kung <fkung@redhat.com>
* gnu/java/awt/peer/gtk/CairoGraphics2D.java
(drawCairoSurface): Made protected.
* gnu/java/awt/peer/gtk/ComponentGraphics.java
(cairoDrawGlyphVector): Removed method.
(cairoSetFont): Removed method.
(disposeNative): Removed method.
(drawCairoSurface): New method.
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c
(Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector): Added
locking.
(Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFont): Added locking.
(Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative): Added locking.
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/CairoGraphics2D.java | 4 | ||||
-rw-r--r-- | gnu/java/awt/peer/gtk/ComponentGraphics.java | 74 | ||||
-rw-r--r-- | native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c | 10 |
4 files changed, 53 insertions, 50 deletions
@@ -1,3 +1,18 @@ +2007-04-04 Francis Kung <fkung@redhat.com> + + * gnu/java/awt/peer/gtk/CairoGraphics2D.java + (drawCairoSurface): Made protected. + * gnu/java/awt/peer/gtk/ComponentGraphics.java + (cairoDrawGlyphVector): Removed method. + (cairoSetFont): Removed method. + (disposeNative): Removed method. + (drawCairoSurface): New method. + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c + (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector): Added + locking. + (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFont): Added locking. + (Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative): Added locking. + 2007-04-04 Gary Benson <gbenson@redhat.com> * java/util/GregorianCalendar.java diff --git a/gnu/java/awt/peer/gtk/CairoGraphics2D.java b/gnu/java/awt/peer/gtk/CairoGraphics2D.java index 7c2ad89be..4c83fa333 100644 --- a/gnu/java/awt/peer/gtk/CairoGraphics2D.java +++ b/gnu/java/awt/peer/gtk/CairoGraphics2D.java @@ -1623,8 +1623,8 @@ public abstract class CairoGraphics2D extends Graphics2D * @param alpha The alpha value to paint with ( 0 <= alpha <= 1). * @param interpolation The interpolation type. */ - private void drawCairoSurface(CairoSurface surface, AffineTransform tx, - double alpha, int interpolation) + protected void drawCairoSurface(CairoSurface surface, AffineTransform tx, + double alpha, int interpolation) { // Find offset required if this surface is a sub-raster, and append offset // to transformation. diff --git a/gnu/java/awt/peer/gtk/ComponentGraphics.java b/gnu/java/awt/peer/gtk/ComponentGraphics.java index 35b1ba2c2..7074e0320 100644 --- a/gnu/java/awt/peer/gtk/ComponentGraphics.java +++ b/gnu/java/awt/peer/gtk/ComponentGraphics.java @@ -560,6 +560,17 @@ public class ComponentGraphics extends CairoGraphics2D * methods ends up being called, we will deadlock. The lock is only reentrant * when called via our lock() method. */ + + /* These methods are already locked in the superclass CairoGraphics2D + * so they do not need to be overridden: + * + * public void disposeNative + * + * protected void cairoDrawGlyphVector + * + * protected void cairoSetFont + */ + @Override protected long init(long pointer) { @@ -579,20 +590,6 @@ public class ComponentGraphics extends CairoGraphics2D } @Override - public void disposeNative(long pointer) - { - try - { - lock(); - super.disposeNative(pointer); - } - finally - { - unlock(); - } - } - - @Override protected void drawPixels(long pointer, int[] pixels, int w, int h, int stride, double[] i2u, double alpha, int interpolation) @@ -742,39 +739,7 @@ public class ComponentGraphics extends CairoGraphics2D unlock(); } } - - @Override - protected void cairoDrawGlyphVector(long pointer, GdkFontPeer font, - float x, float y, int n, - int[] codes, float[] positions, - long[] fontset) - { - try - { - lock(); - super.cairoDrawGlyphVector(pointer, font, x, y, n, codes, positions, - fontset); - } - finally - { - unlock(); - } - } - - @Override - protected void cairoSetFont(long pointer, GdkFontPeer font) - { - try - { - lock(); - super.cairoSetFont(pointer, font); - } - finally - { - unlock(); - } - } - + @Override protected void cairoRectangle(long pointer, double x, double y, double width, double height) @@ -973,4 +938,19 @@ public class ComponentGraphics extends CairoGraphics2D unlock(); } } + + @Override + protected void drawCairoSurface(CairoSurface surface, AffineTransform tx, + double alpha, int interpolation) + { + try + { + lock(); + super.drawCairoSurface(surface, tx, alpha, interpolation); + } + finally + { + unlock(); + } + } }
\ No newline at end of file diff --git a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c index 5620746ec..1087cf7d6 100644 --- a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c +++ b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c @@ -87,7 +87,11 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative return; if (gr->cr) - cairo_destroy (gr->cr); + { + gdk_threads_enter(); + cairo_destroy (gr->cr); + gdk_threads_leave(); + } if (gr->pattern) cairo_pattern_destroy (gr->pattern); @@ -345,6 +349,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector /* Iterate through glyphs and draw */ jlong* fonts = (*env)->GetLongArrayElements (env, java_fontset, NULL); + gdk_threads_enter(); for (i = 0; i < n; i++) { PangoFcFont *font = JLONG_TO_PTR(PangoFcFont, fonts[i]); @@ -367,6 +372,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector cairo_font_face_destroy (ft); pango_fc_font_unlock_face(font); } + gdk_threads_leave(); g_free(glyphs); } @@ -388,6 +394,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFont pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, font); g_assert (pfont != NULL); + gdk_threads_enter(); face = pango_fc_font_lock_face( (PangoFcFont *)pfont->font ); g_assert (face != NULL); @@ -401,6 +408,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFont cairo_font_face_destroy (ft); pango_fc_font_unlock_face((PangoFcFont *)pfont->font); + gdk_threads_leave(); } JNIEXPORT void JNICALL |