Move write buffer flags used by SkFlataData::Create into SkFlatController.
Review URL: https://codereview.appspot.com/6446135
git-svn-id: http://skia.googlecode.com/svn/trunk@5091 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/pipe/SkGPipeWrite.cpp b/src/pipe/SkGPipeWrite.cpp
index f5401aa..e1eaabd9 100644
--- a/src/pipe/SkGPipeWrite.cpp
+++ b/src/pipe/SkGPipeWrite.cpp
@@ -64,9 +64,13 @@
class FlattenableHeap : public SkFlatController {
public:
- FlattenableHeap(int numFlatsToKeep, SkNamedFactorySet* fset)
+ FlattenableHeap(int numFlatsToKeep, SkNamedFactorySet* fset, bool isCrossProcess)
: fNumFlatsToKeep(numFlatsToKeep) {
- this->setNamedFactorySet(fset);
+ SkASSERT((isCrossProcess && fset != NULL) || (!isCrossProcess && NULL == fset));
+ if (isCrossProcess) {
+ this->setNamedFactorySet(fset);
+ this->setWriteBufferFlags(SkFlattenableWriteBuffer::kCrossProcess_Flag);
+ }
}
~FlattenableHeap() {
@@ -348,18 +352,11 @@
return 0;
}
- uint32_t writeBufferFlags;
- if (isCrossProcess(fFlags)) {
- writeBufferFlags = SkFlattenableWriteBuffer::kCrossProcess_Flag;
- } else {
- // TODO: See if we can safely move this into the controller
- writeBufferFlags = 0;
- }
fBitmapHeap->deferAddingOwners();
bool added, replaced;
- const SkFlatData* flat = fFlatDictionary.findAndReplace(
- *obj, writeBufferFlags, fFlattenableHeap.flatToReplace(), &added, &replaced);
+ const SkFlatData* flat = fFlatDictionary.findAndReplace(*obj, fFlattenableHeap.flatToReplace(),
+ &added, &replaced);
fBitmapHeap->endAddingOwnersDeferral(added);
int index = flat->index();
if (added) {
@@ -407,7 +404,7 @@
: fFactorySet(isCrossProcess(flags) ? SkNEW(SkNamedFactorySet) : NULL)
, fWriter(*writer)
, fFlags(flags)
-, fFlattenableHeap(FLATTENABLES_TO_KEEP, fFactorySet)
+, fFlattenableHeap(FLATTENABLES_TO_KEEP, fFactorySet, isCrossProcess(flags))
, fFlatDictionary(&fFlattenableHeap) {
fController = controller;
fDone = false;