Hello,
I try to use pooling with my qx.application, because it gives me a significant 
performance boost on mobile devices (especially Android devices).
For structuring (and for setting huge widget selections to "excluded" with one 
command) I use many widgets including qx.ui.core.MChildrenHandling.
After leaving a menu I iterate through all containers recursively  and add them 
and their children to a pool.
For widget creation I try to get an instance from the pool.

This is working really fine but after some time I get the following error (on 
Chrome for Android):

"Uncaught HierarchyRequestError: Failed to execute 'appendChild' on 'Node': The 
new child element contains the parent"

With disposal of the Elements, everything runs fine.
This leads me to the conclusion that the objects aren't always removed from 
their DOM parent which leads to recursion (the parent node is added to an old 
child node).
Can someone point me in right direction how to ensure the removal of the child 
nodes before pooling them?

function getPoolElement(type) {
  var elem = pool.getObject(type);
  //console.log(type.toString() + " " + elem.$$hash + " " + elem.classname);
  return elem;
}

function poolElements(container) {
  var children = container.removeAll();
  for(var i = 0; i < children.length; i++) {
    if(children[i].classname == "guibuilder.group")
      poolElements(children[i]);
    else if(children[i].classname == "guibuilder.picgroup")
      poolElements(children[i]);
    else if(children[i].classname == "guibuilder.tablegroup")
      poolElements(children[i]);
    else if(children[i].classname == "guibuilder.bordergroup")
      poolElements(children[i]);
    else if(children[i].classname == "guibuilder.smallchoice" || 
children[i].classname == "guibuilder.choice") {
      var opts = children[i].removeAll();
      for(var j = 0; j < opts.length; j++) {
        pool.poolObject(opts[j]);
        //opts[j].dispose();
      }
    }
    pool.poolObject(children[i]);
    //children[i].dispose();
  }
}

Regards, Johannes

------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to