Problem was caused by a leaking PolygonIteratorDelegate that locked the DSS layout object. Solved by wrapping in PolygonIterator and changing the interface such that PolygonIteratorDelegegate is no longer useful.