modules/graphics/src/main/java/com/sun/javafx/css/StyleManager.java

Print this page
rev 6979 : RT-37025: StyleManager failed to remove stylesheet containers that reference children of a parent that is removed from the scene

*** 550,559 **** --- 550,580 ---- if (stylesheets != null && !stylesheets.isEmpty()) { for (String fname : stylesheets) { stylesheetRemoved(parent, fname); } } + + Iterator<StylesheetContainer> containerIterator = stylesheetContainerMap.values().iterator(); + while (containerIterator.hasNext()) { + StylesheetContainer container = containerIterator.next(); + container.parentUsers.remove(parent); + if (container.parentUsers.list.isEmpty()) { + + containerIterator.remove(); + + if (container.selectorPartitioning != null) { + container.selectorPartitioning.reset(); + } + + + // clean up image cache by removing images from the cache that + // might have come from this stylesheet + final String fname = container.fname; + cleanUpImageCache(fname); + } + } + // Do not iterate over children since this method will be called on each from Parent#scenesChanged } /** * called from Parent's stylesheets property's onChanged method