xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Grant Mc Auley" <gmcau...@som.llu.edu>
Subject RE: Waiting for RenderingCompleted
Date Wed, 10 Sep 2003 00:21:05 GMT
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.

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.


> -----Original Message-----
> From: Thomas DeWeese [mailto:Thomas.DeWeese@Kodak.com] 
> 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: batik-users-unsubscribe@xml.apache.org
> > For additional commands, e-mail: batik-users-help@xml.apache.org
> > 
> > 
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-users-help@xml.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-users-help@xml.apache.org


Mime
View raw message