Grant Mc Auley wrote:
Thank you for your quick reply.

I had already tried this (and just double checked it again) but the
mutex apparently never gets notified, the thread waits indefinitely.
That was why I was asking about how the GVTTreeBuilder thread is related
to the main thread.  I have even tried spawning a thread from the main
thread and locking on the mutex from it, but it hangs also.

Is 'notifyAll' getting called?


  The GVTTreeBuilder is a seperate thread but I believe it notifies in the
AWT event thread.

Without the wait/notify the renderingCompleted() returns OK and I can
see the main thread wait()ing in my debugger.  So it seems that the
trouble is from the GVTTreeBuilder event handler end.

Does it get into they sync blocks?


-----Original Message-----
From: Thomas DeWeese [mailto:[EMAIL PROTECTED] Sent: Tuesday, September 09, 2003 4:50 PM
To: Batik Users
Subject: Re: Waiting for RenderingCompleted



Grant Mc Auley wrote:


I need to ensure that the UpdateManager and all SVG element

are not null


and available before an Applet's init() method returns in the code
below.  In other words, I need to delay init() from returning until
gvtRendingCompleted() is called.

Does anybody have any suggestions on how I might accomplish this? I
have tried many approaches but to no avail. I am unclear about the
relationship between the GVTTreeBuilder thread and the main

thread. Any


help with this would be much appreciated as I am facing a deadline.

You need to setup a mutex and wait on it, you probably also want to check for failed/interrupted conditions:

Object mutext = new Object;
   canvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {
public void gvtRenderingCompleted(GVTTreeRendererEvent e) {
    //  . . .

    synchronized (mutext) {
      mutex.notifyAll();
    }
 }

synchronized (mutext) {
  canvas.setDocument(doc);
  try {
    mutext.wait();
  catch(InterruptedException ie) {
        ie.printStackTrace();
  }
}




//----------------------------------------------------------------


init() {

 File f = new File("file.svg");
 canvas = new JSVGCanvas();
 canvas.addGVTTreeRendererListener(new GVTTreeRendererAdapter() {

public void gvtRenderingCompleted(GVTTreeRendererEvent e) {

     um = canvas.getUpdateManager();
     element = doc.getElementByID("name");
          . . .

}

 });
 canvas.setDocumentState(JSVGCanvas.ALWAYS_DYNAMIC);
 String parser = XMLResourceDescriptor.getXMLParserClassName();
 SAXSVGDocumentFactory factory = new SAXSVGDocumentFactory(parser);
 doc = factory.createDocument(f.toURL().toString());
 canvas.setDocument(doc);

// delay goes here

}

//----------------------------------------------------------------





---------------------------------------------------------------------


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






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





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






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



Reply via email to