CVSROOT: /cvsroot/classpath Module name: classpath Changes by: Mark Wielaard <mark> 06/06/12 12:25:03
Modified files: . : ChangeLog gnu/java/awt/peer/gtk: ComponentGraphics.java Log message: * gnu/java/awt/peer/gtk/ComponentGraphics.java (hasLock): New static field. (ONE): Likewise. (lock): New method. (unlock): Likewise. (draw): Use lock() and unlock(). (fill): Likewise. (drawRenderedImage): Likewise. (drawImage): Likewise. (drawGlyphVector): Likewise. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/classpath/ChangeLog?cvsroot=classpath&r1=1.7779&r2=1.7780 http://cvs.savannah.gnu.org/viewcvs/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java?cvsroot=classpath&r1=1.13&r2=1.14 Patches: Index: ChangeLog =================================================================== RCS file: /cvsroot/classpath/classpath/ChangeLog,v retrieving revision 1.7779 retrieving revision 1.7780 diff -u -b -r1.7779 -r1.7780 --- ChangeLog 12 Jun 2006 10:32:44 -0000 1.7779 +++ ChangeLog 12 Jun 2006 12:25:00 -0000 1.7780 @@ -1,3 +1,16 @@ +2006-06-12 Mark Wielaard <[EMAIL PROTECTED]> + + * gnu/java/awt/peer/gtk/ComponentGraphics.java (hasLock): + New static field. + (ONE): Likewise. + (lock): New method. + (unlock): Likewise. + (draw): Use lock() and unlock(). + (fill): Likewise. + (drawRenderedImage): Likewise. + (drawImage): Likewise. + (drawGlyphVector): Likewise. + 2006-06-12 Roman Kennke <[EMAIL PROTECTED]> * gnu/java/awt/peer/gtk/CairoGraphics2D.java Index: gnu/java/awt/peer/gtk/ComponentGraphics.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/ComponentGraphics.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -b -r1.13 -r1.14 --- gnu/java/awt/peer/gtk/ComponentGraphics.java 11 Jun 2006 11:21:52 -0000 1.13 +++ gnu/java/awt/peer/gtk/ComponentGraphics.java 12 Jun 2006 12:25:03 -0000 1.14 @@ -67,6 +67,35 @@ private GtkComponentPeer component; protected long cairo_t; + private static ThreadLocal hasLock = new ThreadLocal(); + private static Integer ONE = Integer.valueOf(1); + + private void lock() + { + Integer i = (Integer) hasLock.get(); + if (i == null) + { + start_gdk_drawing(); + hasLock.set(ONE); + } + else + hasLock.set(Integer.valueOf(i.intValue() + 1)); + } + + private void unlock() + { + Integer i = (Integer) hasLock.get(); + if (i == null) + throw new IllegalStateException(); + if (i == ONE) + { + hasLock.set(null); + end_gdk_drawing(); + } + else + hasLock.set(Integer.valueOf(i.intValue() - 1)); + } + ComponentGraphics() { } @@ -180,40 +209,40 @@ */ public void draw(Shape s) { - start_gdk_drawing(); + lock(); try { super.draw(s); } finally { - end_gdk_drawing(); + unlock(); } } public void fill(Shape s) { - start_gdk_drawing(); + lock(); try { super.fill(s); } finally { - end_gdk_drawing(); + unlock(); } } public void drawRenderedImage(RenderedImage image, AffineTransform xform) { - start_gdk_drawing(); + lock(); try { super.drawRenderedImage(image, xform); } finally { - end_gdk_drawing(); + unlock(); } } @@ -221,28 +250,28 @@ Color bgcolor, ImageObserver obs) { boolean rv; - start_gdk_drawing(); + lock(); try { rv = super.drawImage(img, xform, bgcolor, obs); } finally { - end_gdk_drawing(); + unlock(); } return rv; } public void drawGlyphVector(GlyphVector gv, float x, float y) { - start_gdk_drawing(); + lock(); try { super.drawGlyphVector(gv, x, y); } finally { - end_gdk_drawing(); + unlock(); } }