Has anyone tackled the situation where layout of child nodes takes too
long to do on the event thread in layoutChildren()?

I tried using a javax.swing.SwingWorker as follows

protected void layoutChildren()
  // layout quickly now

  // delay long-running layout
  new LayoutCorrectly(childNode).execute();

private static class LayoutCorrectly extends SwingWorker<Point2D, Object>
  private PNode childNode;

  private LayoutCorrectly(final PNode childNode)
    this.childNode = childNode;

  public Point2D doInBackground()
     // calculate offset in background thread
     // ...
     return offset;

  protected void done()
    // set offset back in event thread
    Point2D offset = get();
    childNode.setOffset(offset.getX(), offset.getY());

When setOffset is called on the child node on the event thread in
SwingWorker.done(), it re-calls layoutChildren() on the parent,
leading to that soft infinite loop described in comments for
validateFullBounds() in PNode.java source.

I tried making childNode's bounds volatile without fully understanding
what that means to no effect.


Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en

To unsubscribe, reply using "remove me" as the subject.

Reply via email to