deweese     2003/11/03 03:58:27

  Modified:    .        build.xml
               sources/org/apache/batik/swing/svg JSVGComponent.java
  Log:
  1) Another try at fixing the race condition in setSVGDocument.
  
  Revision  Changes    Path
  1.144     +2 -2      xml-batik/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/xml-batik/build.xml,v
  retrieving revision 1.143
  retrieving revision 1.144
  diff -u -r1.143 -r1.144
  --- build.xml 1 Oct 2003 13:19:33 -0000       1.143
  +++ build.xml 3 Nov 2003 11:58:27 -0000       1.144
  @@ -938,7 +938,7 @@
           <pathelement location="resources" />
         </classpath>
         <arg line="${args}"/> 
  -      <!-- <jvmarg value="-Xmx512m"/>  <jvmarg value="-Xms64m"/> -->
  +      <jvmarg value="-Xmx512m"/>  <jvmarg value="-Xms64m"/>
         <!-- <jvmarg value="-Djava.security.debug=all"/>  
              <jvmarg value="-verbose" /> -->
        <!-- 
  
  
  
  1.90      +97 -96    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.89
  retrieving revision 1.90
  diff -u -r1.89 -r1.90
  --- JSVGComponent.java        3 Nov 2003 11:12:43 -0000       1.89
  +++ JSVGComponent.java        3 Nov 2003 11:58:27 -0000       1.90
  @@ -607,109 +607,14 @@
           }
   
           if (documentLoader != null) {
  -            documentLoader.addSVGDocumentLoaderListener
  -                (new SVGDocumentLoaderAdapter() {
  -                        SVGDocumentLoader sdl = documentLoader;
  -                        public void documentLoadingCompleted
  -                            (SVGDocumentLoaderEvent e) { install(); }
  -                        public void documentLoadingCancelled
  -                            (SVGDocumentLoaderEvent e) { install(); }
  -                        public void documentLoadingFailed
  -                            (SVGDocumentLoaderEvent e) { install(); }
  -                        public void install() {
  -                            // Remove ourselves from the doc loader,
  -                            // and install the new document.
  -                            sdl.removeSVGDocumentLoaderListener(this);
  -                            synchronized (JSVGComponent.this) {
  -                                EventQueue.invokeLater(afterStopRunnable);
  -                                afterStopRunnable = null;
  -                            }
  -                        }
  -                    });
               stopProcessing();
           } else if (gvtTreeBuilder != null) {
  -            gvtTreeBuilder.addGVTTreeBuilderListener
  -                (new GVTTreeBuilderAdapter() {
  -                        GVTTreeBuilder gtb = gvtTreeBuilder;
  -                        public void gvtBuildCompleted
  -                            (GVTTreeBuilderEvent e) { install(); }
  -                        public void gvtBuildCancelled
  -                            (GVTTreeBuilderEvent e) { install(); }
  -                        public void gvtBuildFailed
  -                            (GVTTreeBuilderEvent e) { install(); }
  -                        public void install() {
  -                            // Remove ourselves from the old tree builder,
  -                            // and install the new document.
  -                            gtb.removeGVTTreeBuilderListener(this);
  -                            synchronized (JSVGComponent.this) {
  -                                EventQueue.invokeLater(afterStopRunnable);
  -                                afterStopRunnable = null;
  -                            }
  -                        }
  -                    });
               stopProcessing();
           } else if (updateManager != null) {
  -            // We have to wait for the update manager to stop
  -            // before we install the new document otherwise bad
  -            // things can happen with the update manager.
  -            addUpdateManagerListener(new UpdateManagerAdapter () {
  -                    public void managerStopped(UpdateManagerEvent e) {
  -                        // Remove ourselves and install the new document.
  -                        JSVGComponent.this.removeUpdateManagerListener(this);
  -                        synchronized (JSVGComponent.this) {
  -                            EventQueue.invokeLater(afterStopRunnable);
  -                            afterStopRunnable = null;
  -                        }
  -                    }
  -                });
               stopProcessing();
           } else if (nextUpdateManager != null) {
  -            // We have to wait for the rendering to stop
  -            // before we install the new document.
  -            gvtTreeRenderer.addGVTTreeRendererListener
  -                (new GVTTreeRendererAdapter() {
  -                        GVTTreeRenderer gtr = gvtTreeRenderer;
  -                        public void gvtRenderingCompleted
  -                            (GVTTreeRendererEvent e) { install(); }
  -                        public void gvtRenderingCancelled
  -                            (GVTTreeRendererEvent e) { install(); }
  -                        public void gvtRenderingFailed
  -                            (GVTTreeRendererEvent e) { install(); }
  -
  -                        public void install() {
  -                            // Remove ourselves from the old update manger,
  -                            // and install the new document.
  -                            gtr.removeGVTTreeRendererListener(this);
  -                            synchronized (JSVGComponent.this) {
  -                                EventQueue.invokeLater(afterStopRunnable);
  -                                afterStopRunnable = null;
  -                            }
  -                        }
  -                    });
               stopProcessing();
           } else if (svgLoadEventDispatcher != null) {
  -            // We have to wait for the onload dispatch to stop
  -            // before we install the new document.
  -            svgLoadEventDispatcher.addSVGLoadEventDispatcherListener
  -                (new SVGLoadEventDispatcherAdapter() {
  -                        SVGLoadEventDispatcher sled = svgLoadEventDispatcher;
  -                        public void svgLoadEventDispatchCompleted
  -                            (SVGLoadEventDispatcherEvent e) { install(); }
  -                        public void svgLoadEventDispatchCancelled
  -                            (SVGLoadEventDispatcherEvent e) { install(); }
  -                        public void svgLoadEventDispatchFailed
  -                            (SVGLoadEventDispatcherEvent e) { install(); }
  -
  -                        public void install() {
  -                            // Remove ourselves from the old onload dispacher
  -                            // and install the new document.
  -                            sled.removeSVGLoadEventDispatcherListener(this);
  -                            synchronized (JSVGComponent.this) {
  -                                EventQueue.invokeLater(afterStopRunnable);
  -                                afterStopRunnable = null;
  -                            }
  -                        }
  -                    });
               stopProcessing();
           }  else {
               stopProcessing();
  @@ -1288,6 +1193,12 @@
               }
   
               documentLoader = null;
  +            if (afterStopRunnable != null) {
  +                EventQueue.invokeLater(afterStopRunnable);
  +                afterStopRunnable = null;
  +                return;
  +            }
  +                
               setSVGDocument(e.getSVGDocument());
           }
   
  @@ -1301,6 +1212,11 @@
               }
   
               documentLoader = null;
  +            if (afterStopRunnable != null) {
  +                EventQueue.invokeLater(afterStopRunnable);
  +                afterStopRunnable = null;
  +                return;
  +            }
   
               if (nextGVTTreeBuilder != null) {
                   startGVTTreeBuilder();
  @@ -1321,6 +1237,11 @@
               userAgent.displayError(((SVGDocumentLoader)e.getSource()).
                                      getException());
   
  +            if (afterStopRunnable != null) {
  +                EventQueue.invokeLater(afterStopRunnable);
  +                afterStopRunnable = null;
  +                return;
  +            }
               if (nextGVTTreeBuilder != null) {
                   startGVTTreeBuilder();
                   return;
  @@ -1349,6 +1270,13 @@
   
               loader = null;
               gvtTreeBuilder = null;
  +
  +            if (afterStopRunnable != null) {
  +                EventQueue.invokeLater(afterStopRunnable);
  +                afterStopRunnable = null;
  +                return;
  +            }
  +
               if (nextDocumentLoader != null) {
                   startDocumentLoader();
                   return;
  @@ -1399,6 +1327,13 @@
   
               loader = null;
               gvtTreeBuilder = null;
  +
  +            if (afterStopRunnable != null) {
  +                EventQueue.invokeLater(afterStopRunnable);
  +                afterStopRunnable = null;
  +                return;
  +            }
  +
               if (nextDocumentLoader != null) {
                   startDocumentLoader();
                   return;
  @@ -1418,6 +1353,13 @@
   
               loader = null;
               gvtTreeBuilder = null;
  +
  +            if (afterStopRunnable != null) {
  +                EventQueue.invokeLater(afterStopRunnable);
  +                afterStopRunnable = null;
  +                return;
  +            }
  +
               if (nextDocumentLoader != null) {
                   startDocumentLoader();
                   return;
  @@ -1456,6 +1398,15 @@
               nextUpdateManager = svgLoadEventDispatcher.getUpdateManager();
               svgLoadEventDispatcher = null;
   
  +            if (afterStopRunnable != null) {
  +                nextUpdateManager.interrupt();
  +                nextUpdateManager = null;
  +            
  +                EventQueue.invokeLater(afterStopRunnable);
  +                afterStopRunnable = null;
  +                return;
  +            }
  +
               if (nextGVTTreeBuilder != null) {
                   nextUpdateManager.interrupt();
                   nextUpdateManager = null;
  @@ -1486,6 +1437,12 @@
               nextUpdateManager.interrupt();
               nextUpdateManager = null;
               
  +            if (afterStopRunnable != null) {
  +                EventQueue.invokeLater(afterStopRunnable);
  +                afterStopRunnable = null;
  +                return;
  +            }
  +
               if (nextGVTTreeBuilder != null) {
                   startGVTTreeBuilder();
                   return;
  @@ -1507,6 +1464,12 @@
               nextUpdateManager.interrupt();
               nextUpdateManager = null;
   
  +            if (afterStopRunnable != null) {
  +                EventQueue.invokeLater(afterStopRunnable);
  +                afterStopRunnable = null;
  +                return;
  +            }
  +
               if (nextGVTTreeBuilder != null) {
                   startGVTTreeBuilder();
                   return;
  @@ -1537,6 +1500,16 @@
           public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
               super.gvtRenderingCompleted(e);
   
  +            if (afterStopRunnable != null) {
  +                if (nextUpdateManager != null) {
  +                    nextUpdateManager.interrupt();
  +                    nextUpdateManager = null;
  +                }
  +                EventQueue.invokeLater(afterStopRunnable);
  +                afterStopRunnable = null;
  +                return;
  +            }
  +
               if (nextGVTTreeBuilder != null) {
                   if (nextUpdateManager != null) {
                       nextUpdateManager.interrupt();
  @@ -1568,6 +1541,17 @@
           public void gvtRenderingCancelled(GVTTreeRendererEvent e) {
               super.gvtRenderingCancelled(e);
   
  +            if (afterStopRunnable != null) {
  +                if (nextUpdateManager != null) {
  +                    nextUpdateManager.interrupt();
  +                    nextUpdateManager = null;
  +                }
  +
  +                EventQueue.invokeLater(afterStopRunnable);
  +                afterStopRunnable = null;
  +                return;
  +            }
  +
               if (nextGVTTreeBuilder != null) {
                   if (nextUpdateManager != null) {
                       nextUpdateManager.interrupt();
  @@ -1593,6 +1577,17 @@
           public void gvtRenderingFailed(GVTTreeRendererEvent e) {
               super.gvtRenderingFailed(e);
   
  +            if (afterStopRunnable != null) {
  +                if (nextUpdateManager != null) {
  +                    nextUpdateManager.interrupt();
  +                    nextUpdateManager = null;
  +                }
  +
  +                EventQueue.invokeLater(afterStopRunnable);
  +                afterStopRunnable = null;
  +                return;
  +            }
  +
               if (nextGVTTreeBuilder != null) {
                   if (nextUpdateManager != null) {
                       nextUpdateManager.interrupt();
  @@ -1687,6 +1682,12 @@
                                   ((UpdateManagerListener)dll[i]).
                                       managerStopped(e);
                               }
  +                        }
  +
  +                        if (afterStopRunnable != null) {
  +                            EventQueue.invokeLater(afterStopRunnable);
  +                            afterStopRunnable = null;
  +                            return;
                           }
   
                           if (nextGVTTreeBuilder != null) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to