deweese 2002/08/01 17:18:35 Modified: sources/org/apache/batik/swing/gvt JGVTComponent.java TextSelectionManager.java sources/org/apache/batik/swing/svg JSVGComponent.java Log: Now uses repaint instead of paintImmediately when double buffering is turned on. This eliminates the flickering under Mac OS X when viewing dynamic documents. Revision Changes Path 1.29 +16 -11 xml-batik/sources/org/apache/batik/swing/gvt/JGVTComponent.java Index: JGVTComponent.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/gvt/JGVTComponent.java,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- JGVTComponent.java 12 Jun 2002 12:22:15 -0000 1.28 +++ JGVTComponent.java 2 Aug 2002 00:18:35 -0000 1.29 @@ -414,15 +414,21 @@ public void immediateRepaint() { if (EventQueue.isDispatchThread()) { Dimension dim = getSize(); - paintImmediately(0, 0, dim.width, dim.height); + if (doubleBufferedRendering) + repaint(0, 0, dim.width, dim.height); + else + paintImmediately(0, 0, dim.width, dim.height); } else { try { EventQueue.invokeAndWait(new Runnable() { - public void run() { - Dimension dim = getSize(); - paintImmediately(0, 0, dim.width, dim.height); - } - }); + public void run() { + Dimension dim = getSize(); + if (doubleBufferedRendering) + repaint(0, 0, dim.width, dim.height); + else + paintImmediately(0, 0, dim.width, dim.height); + } + }); } catch (Exception e) { } } @@ -704,14 +710,13 @@ final Thread thisThread = this; try { while (!isInterrupted()) { - EventQueue.invokeAndWait(new Runnable() { + EventQueue.invokeLater(new Runnable() { public void run() { if (progressivePaintThread == thisThread) { Dimension dim = getSize(); - paintImmediately(0, 0, - dim.width, - dim.height); + repaint(0, 0, dim.width, + dim.height); } } }); 1.17 +8 -8 xml-batik/sources/org/apache/batik/swing/gvt/TextSelectionManager.java Index: TextSelectionManager.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/gvt/TextSelectionManager.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- TextSelectionManager.java 3 Apr 2002 04:58:22 -0000 1.16 +++ TextSelectionManager.java 2 Aug 2002 00:18:35 -0000 1.17 @@ -91,8 +91,8 @@ protected Color selectionOverlayStrokeColor = new Color(255, 255, 255, 255); /** - * A flag bit that indicates whether or not the selection overlay is painted - * in XOR mode. + * A flag bit that indicates whether or not the selection overlay is + * painted in XOR mode. */ protected boolean xorMode = false; @@ -201,7 +201,7 @@ if (selectionHighlight != null) { Rectangle r = getHighlightBounds(); selectionHighlight = null; - component.paintImmediately(r); + component.repaint(r); } } } @@ -258,7 +258,7 @@ if (selectionHighlight != null) { Rectangle r = getHighlightBounds(); selectionHighlight = null; - component.paintImmediately(r); + component.repaint(r); } } public void selectionChanged(SelectionEvent e) { @@ -273,12 +273,12 @@ if (selectionHighlight != null) { if (r != null) { Rectangle r2 = getHighlightBounds(); - component.paintImmediately(r.union(r2)); + component.repaint(r.union(r2)); } else { - component.paintImmediately(getHighlightBounds()); + component.repaint(getHighlightBounds()); } } else if (r != null) { - component.paintImmediately(r); + component.repaint(r); } } 1.57 +16 -14 xml-batik/sources/org/apache/batik/swing/svg/JSVGComponent.java Index: JSVGComponent.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/swing/svg/JSVGComponent.java,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- JSVGComponent.java 24 Jul 2002 00:02:28 -0000 1.56 +++ JSVGComponent.java 2 Aug 2002 00:18:35 -0000 1.57 @@ -1231,19 +1231,18 @@ * Called when an update was completed. */ public void updateCompleted(final UpdateManagerEvent e) { + // IMPORTANT: + // ========== + // + // The following call is 'invokeAndWait' and not + // 'invokeLater' because it is essential that the + // UpdateManager thread (which invokes this + // 'updateCompleted' method, blocks until the repaint + // has completed. Otherwise, there is a possibility + // that internal buffers would get updated in the + // middle of a swing repaint. + // try { - // - // IMPORTANT: - // ========== - // - // The following call is 'invokeAndWait' and not - // 'invokeLater' because it is essential that the - // UpdateManager thread (which invokes this - // 'updateCompleted' method, blocks until the repaint - // has completed. Otherwise, there is a possibility - // that internal buffers would get updated in the - // middle of a swing repaint. - // EventQueue.invokeAndWait(new Runnable() { public void run() { image = e.getImage(); @@ -1261,7 +1260,10 @@ Iterator i = l.iterator(); while (i.hasNext()) { Rectangle r = (Rectangle)i.next(); - paintImmediately(r); + if (doubleBufferedRendering) + repaint(r); + else + paintImmediately(r); } } suspendInteractions = false;
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]