From a6ee54a63621ec8c54f641c13150fa6a4c6c6fac Mon Sep 17 00:00:00 2001 From: Francis Kung Date: Sat, 28 Apr 2007 01:58:23 +0000 Subject: [PATCH] 2007-04-04 Francis Kung * gnu/java/awt/peer/gtk/ComponentGraphics.java (cairoDrawGlyphVector): Removed method. (cairoSetFont): Removed method. (disposeNative): Removed 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. From-SVN: r124251 --- libjava/classpath/ChangeLog | 12 ++++ .../java/awt/peer/gtk/ComponentGraphics.java | 55 ++++-------------- .../java/awt/peer/gtk/ComponentGraphics.class | Bin 17237 -> 16536 bytes .../gnu_java_awt_peer_gtk_CairoGraphics2D.c | 10 +++- 4 files changed, 32 insertions(+), 45 deletions(-) diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog index 12c9b8b1d0e..ad9f9082912 100644 --- a/libjava/classpath/ChangeLog +++ b/libjava/classpath/ChangeLog @@ -1,3 +1,15 @@ +2007-04-04 Francis Kung + + * gnu/java/awt/peer/gtk/ComponentGraphics.java + (cairoDrawGlyphVector): Removed method. + (cairoSetFont): Removed method. + (disposeNative): Removed 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-27 Keith Seitz * gnu/classpath/jdwp/event/EventManager.java diff --git a/libjava/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java b/libjava/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java index be82f81ecbd..8adf275ad44 100644 --- a/libjava/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java +++ b/libjava/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java @@ -544,6 +544,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) { @@ -562,20 +573,6 @@ public class ComponentGraphics extends CairoGraphics2D return ret; } - @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, @@ -727,36 +724,6 @@ public class ComponentGraphics extends CairoGraphics2D } } - @Override - protected void cairoDrawGlyphVector(long pointer, GdkFontPeer font, - float x, float y, int n, - int[] codes, float[] positions) - { - try - { - lock(); - super.cairoDrawGlyphVector(pointer, font, x, y, n, codes, positions); - } - 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) diff --git a/libjava/classpath/lib/gnu/java/awt/peer/gtk/ComponentGraphics.class b/libjava/classpath/lib/gnu/java/awt/peer/gtk/ComponentGraphics.class index 54e991629c5864a0daacfb86467eb03b5b545ed4..c5d4d0090941773b8b30a1af724968b482057a02 100644 GIT binary patch delta 2111 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 diff --git a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c b/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c index b183a1bac77..2da68e0e4e0 100644 --- a/libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c +++ b/libjava/classpath/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); @@ -343,9 +347,11 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector (*env)->ReleaseFloatArrayElements (env, java_positions, native_positions, 0); (*env)->ReleaseIntArrayElements (env, java_codes, native_codes, 0); + gdk_threads_enter (); pango_fc_font_lock_face( (PangoFcFont *)pfont->font ); cairo_show_glyphs (gr->cr, glyphs, n); pango_fc_font_unlock_face( (PangoFcFont *)pfont->font ); + gdk_threads_leave (); g_free(glyphs); } @@ -367,6 +373,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); @@ -380,6 +387,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 -- 2.30.2