aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/pdf/SkPDFTypes.cpp
diff options
context:
space:
mode:
authorGravatar vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-02-01 22:19:44 +0000
committerGravatar vandebo@chromium.org <vandebo@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-02-01 22:19:44 +0000
commitf7c157610ff85f7323f5e213b62478dcc66edbec (patch)
treef49c4a700685466c0ad80b2f0f5c0b04b205f1b9 /src/pdf/SkPDFTypes.cpp
parent6f7fbc9fbb584b9b9fa6ed3a677d71ecd49aafce (diff)
[PDF] Clean up ref counting.
Return ref'd objs where possible enabling removal of many SkRefPtr<> variables. Review URL: http://codereview.appspot.com/4029051 git-svn-id: http://skia.googlecode.com/svn/trunk@750 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/pdf/SkPDFTypes.cpp')
-rw-r--r--src/pdf/SkPDFTypes.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/pdf/SkPDFTypes.cpp b/src/pdf/SkPDFTypes.cpp
index 506b86d37f..cc1735e98a 100644
--- a/src/pdf/SkPDFTypes.cpp
+++ b/src/pdf/SkPDFTypes.cpp
@@ -254,25 +254,25 @@ void SkPDFArray::reserve(int length) {
fValue.setReserve(length);
}
-void SkPDFArray::setAt(int offset, SkPDFObject* value) {
+SkPDFObject* SkPDFArray::setAt(int offset, SkPDFObject* value) {
SkASSERT(offset < fValue.count());
SkSafeUnref(fValue[offset]);
fValue[offset] = value;
SkSafeRef(fValue[offset]);
+ return value;
}
-void SkPDFArray::append(SkPDFObject* value) {
+SkPDFObject* SkPDFArray::append(SkPDFObject* value) {
SkASSERT(fValue.count() < kMaxLen);
SkSafeRef(value);
fValue.push(value);
+ return value;
}
SkPDFDict::SkPDFDict() {}
SkPDFDict::SkPDFDict(const char type[]) {
- SkRefPtr<SkPDFName> typeName = new SkPDFName(type);
- typeName->unref(); // SkRefPtr and new both took a reference.
- insert("Type", typeName.get());
+ insert("Type", new SkPDFName(type))->unref();
}
SkPDFDict::~SkPDFDict() {
@@ -306,18 +306,19 @@ size_t SkPDFDict::getOutputSize(SkPDFCatalog* catalog, bool indirect) {
return result;
}
-void SkPDFDict::insert(SkPDFName* key, SkPDFObject* value) {
+SkPDFObject* SkPDFDict::insert(SkPDFName* key, SkPDFObject* value) {
struct Rec* newEntry = fValue.append();
newEntry->key = key;
SkSafeRef(newEntry->key);
newEntry->value = value;
SkSafeRef(newEntry->value);
+ return value;
}
-void SkPDFDict::insert(const char key[], SkPDFObject* value) {
+SkPDFObject* SkPDFDict::insert(const char key[], SkPDFObject* value) {
SkRefPtr<SkPDFName> keyName = new SkPDFName(key);
keyName->unref(); // SkRefPtr and new both took a reference.
- insert(keyName.get(), value);
+ return insert(keyName.get(), value);
}
void SkPDFDict::clear() {