OSDN Git Service

2007-04-04 Francis Kung <fkung@redhat.com>
authorfitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 28 Apr 2007 01:58:23 +0000 (01:58 +0000)
committerfitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 28 Apr 2007 01:58:23 +0000 (01:58 +0000)
        * 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124251 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/classpath/ChangeLog
libjava/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java
libjava/classpath/lib/gnu/java/awt/peer/gtk/ComponentGraphics.class
libjava/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c

index 12c9b8b..ad9f908 100644 (file)
@@ -1,3 +1,15 @@
+2007-04-04  Francis Kung  <fkung@redhat.com>
+
+       * 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  <keiths@redhat.com>
 
        * gnu/classpath/jdwp/event/EventManager.java
index be82f81..8adf275 100644 (file)
@@ -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)
   {
@@ -563,20 +574,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)
@@ -728,36 +725,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)
   {
index 54e9916..c5d4d00 100644 (file)
Binary files a/libjava/classpath/lib/gnu/java/awt/peer/gtk/ComponentGraphics.class and b/libjava/classpath/lib/gnu/java/awt/peer/gtk/ComponentGraphics.class differ
index b183a1b..2da68e0 100644 (file)
@@ -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