xmlgraphics-batik-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lolling, Jan" <Jan.Loll...@t-systems.com>
Subject AW: InvokeAndWait problem
Date Thu, 13 Mar 2003 15:37:38 GMT
hello,
my experience is, that it could be, that invokeAndWait never come back an than our application
hangs.
I have not found the necessary circumstances to reproduce this bug, but invokeLater avoid
a total crash.
invokeLater does how it is called: invoke and do not wait. Your method goes on after invoking
the thread.
You have the same theme in Swing.

Jan

-----Ursprüngliche Nachricht-----
Von: Siarhei Biarozkin [mailto:sberyozkin@zandar.com]
Gesendet: Donnerstag, 13. März 2003 16:33
An: Batik Users; harm.cuppens@iosint.be
Betreff: Re: InvokeAndWait problem


Hi,
how about using invokeLater() on the runnable queue ? we see only minor
delay when using invokeLater() instead of invokeAndWait()
Cheers
Sergey Beryozkin
----- Original Message -----
From: "Harm Cuppens" <harm.cuppens@iosint.be>
To: "'Batik Users'" <batik-users@xml.apache.org>
Sent: Thursday, March 13, 2003 3:20 PM
Subject: RE: InvokeAndWait problem


> Hi,
>
> Thanks for the reply, I see your point, but the problem will still be
there.
> In the  void redo
>  svgCanvas.getUpdateManager().getUpdateRunnableQueue().invokeAndWait(new
> Runnable() {
>        // my code which acts on the DOM
>     });
> }
>
> Batik would still be able to call invokeAndWait in one of it's methods.
> Because my undo/redo code works with the DOM, lots of events are triggered
> as a result. These events can be for example in my case: DOMNodeInserted,
> which the Bridge takes care of. In my case an Image element being inserted
> with an XLink, then the URIResolver calls the
> checkLoadExternalResource(...,...) which calls invokeAndWait again!
>
> Harm
>
> -----Original Message-----
> From: Siarhei Biarozkin [mailto:sberyozkin@zandar.com]
> Sent: donderdag 13 maart 2003 16:12
> To: Batik Users; harm.cuppens@iosint.be
> Subject: Re: InvokeAndWait problem
>
>
> Hi,
> I'd recommend not to couple your undo/redo functionality with the Batik,
> after all, it's just one component of your application. Instead, use
> something like this :
>
> Undoable undoable = new Undoable() {
>  void  do() {
>
svgCanvas.getUpdateManager().getUpdateRunnableQueue().invokeAndWait(new
> Runnable() {
>          // do it/redo it
>     });
> }
>    void redo() {
>
> svgCanvas.getUpdateManager().getUpdateRunnableQueue().invokeAndWait(new
> Runnable() {
>        // undo it
>     });
>   }
> }
>
> YourUndoManager.redo() {
>      undoable.redo();
> }
>
> YourUndoManager.do() {
>      undoable.do();
> }
>
> There may be many more, perhaps, better approaches, but the key is to
> separate concerns
> Cheers
> Sergey Beryozkin
>
> ----- Original Message -----
> From: "Harm Cuppens" <harm.cuppens@iosint.be>
> To: "Batik Users (E-mail)" <batik-users@xml.apache.org>
> Sent: Thursday, March 13, 2003 2:58 PM
> Subject: InvokeAndWait problem
>
>
> > Hello all,
> >
> > I'm adding undo/redo support to my application (a little SVGEditor). I
> have
> > a JSVGCanvas where I can draw my lines, rectangles etc. I can also
import
> > images (or reference them) into the SVG document.
> >
> > For every action I perform I added undo/redo support.
> > For the undo/redo action to happen immediately on the canvas, i call the
> > InvokeAndWait method:
> >
> > svgCanvas.getUpdateManager().getUpdateRunnableQueue().invokeAndWait(new
> > Runnable() { undoManager.redo() });
> >
> > But I have the following problem, I insert an <image> with a xlink to a
> file
> > on my disk into the document. I then undo this operation (so the image
is
> > removed again). Now when I try to redo this action, I call the
> InvokeAndWait
> > method (to get immediate results on the canvas) which starts the redo
> code.
> > But it seems that the class org.apache.batik.bridge.URIResolver calls
the
> > method  userAgent.checkLoadExternalResource(purl, pDocURL). This brings
me
> > to the code inside the BridgeUserAgentWrapper inner class of
JSVGComponent
> > where the method calls another InvokeAndWait resulting a total halt of
the
> > program. So I'm in a situation where i'm calling invokeAndWait to run
code
> > that could call invokeAndWait again :-(
> > I have tried the invokeLater method, but that gave the same results,
> program
> > just hangs.
> >
> > Is there any way to get arround this (besides not using invokeAndWait)?
I
> > really like to have my undo/redo actions to occur immediately without
> having
> > to worry about that code calling another invokeAndWait.
> >
> > Thanks,
> >
> > Harm
> >
> >
> >
> > ---------------------------------------------------------------------
> > 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
>
>
>


---------------------------------------------------------------------
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