resubmit after fixing assert issue: https://codereview.appspot.com/6744050
git-svn-id: http://skia.googlecode.com/svn/trunk@7892 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/pdf/SkPDFFormXObject.cpp b/src/pdf/SkPDFFormXObject.cpp
index 5e33995b..884e6db 100644
--- a/src/pdf/SkPDFFormXObject.cpp
+++ b/src/pdf/SkPDFFormXObject.cpp
@@ -20,16 +20,8 @@
// We don't want to keep around device because we'd have two copies
// of content, so reference or copy everything we need (content and
// resources).
- device->getResources(&fResources, false);
-
- // Fail fast if in the tree of resources a child references a parent.
- // If there is an issue, getResources will end up consuming all memory.
- // TODO: A better approach might be for all SkPDFObject to keep track
- // of possible cycles.
-#ifdef SK_DEBUG
- SkTDArray<SkPDFObject*> dummy_resourceList;
- getResources(&dummy_resourceList);
-#endif
+ SkTSet<SkPDFObject*> emptySet;
+ device->getResources(emptySet, &fResources, false);
SkAutoTUnref<SkStream> content(device->content());
setData(content.get());
@@ -64,6 +56,10 @@
fResources.unrefAll();
}
-void SkPDFFormXObject::getResources(SkTDArray<SkPDFObject*>* resourceList) {
- GetResourcesHelper(&fResources, resourceList);
+void SkPDFFormXObject::getResources(
+ const SkTSet<SkPDFObject*>& knownResourceObjects,
+ SkTSet<SkPDFObject*>* newResourceObjects) {
+ GetResourcesHelper(&fResources.toArray(),
+ knownResourceObjects,
+ newResourceObjects);
}