diff options
Diffstat (limited to 'Source/WebKit/android/jni/ViewStateSerializer.cpp')
-rw-r--r-- | Source/WebKit/android/jni/ViewStateSerializer.cpp | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/Source/WebKit/android/jni/ViewStateSerializer.cpp b/Source/WebKit/android/jni/ViewStateSerializer.cpp index 93f4375..6b473f5 100644 --- a/Source/WebKit/android/jni/ViewStateSerializer.cpp +++ b/Source/WebKit/android/jni/ViewStateSerializer.cpp @@ -111,11 +111,6 @@ static BaseLayerAndroid* nativeDeserializeViewState(JNIEnv* env, jobject, jobjec if (childLayer) layer->addChild(childLayer); } - // Now double back and delete any imageRefs - for (int i = 0; i < layer->countChildren(); i++) { - LayerAndroid* childLayer = static_cast<LayerAndroid*>(layer->getChild(i)); - cleanupImageRefs(childLayer); - } delete stream; return layer; } @@ -297,15 +292,16 @@ void serializeLayer(LayerAndroid* layer, SkWStream* stream) stream->writeBool(layer->m_preserves3D); stream->writeScalar(layer->m_anchorPointZ); stream->writeScalar(layer->m_drawOpacity); - bool hasContentsImage = layer->m_imageRef != 0; + bool hasContentsImage = layer->m_imageCRC != 0; stream->writeBool(hasContentsImage); if (hasContentsImage) { SkFlattenableWriteBuffer buffer(1024); buffer.setFlags(SkFlattenableWriteBuffer::kCrossProcess_Flag); ImageTexture* imagetexture = - ImagesManager::instance()->getTextureForImage(layer->m_imageRef, false); + ImagesManager::instance()->retainImage(layer->m_imageCRC); if (imagetexture && imagetexture->bitmap()) imagetexture->bitmap()->flatten(buffer); + ImagesManager::instance()->releaseImage(layer->m_imageCRC); stream->write32(buffer.size()); buffer.writeToStream(stream); } @@ -388,8 +384,7 @@ LayerAndroid* deserializeLayer(SkStream* stream) contentsImage.unflatten(buffer); SkBitmapRef* imageRef = new SkBitmapRef(contentsImage); layer->setContentsImage(imageRef); - // We delay deleting the imageRef until after deserialization to make - // sure we have unique keys + delete imageRef; } bool hasRecordingPicture = stream->readBool(); if (hasRecordingPicture) { @@ -418,17 +413,6 @@ LayerAndroid* deserializeLayer(SkStream* stream) return layer; } -void cleanupImageRefs(LayerAndroid* layer) -{ - if (!layer) - return; - int count = layer->countChildren(); - for (int i = 0; i < count; i++) - cleanupImageRefs(layer->getChild(i)); - if (layer->m_imageRef) - delete layer->m_imageRef; -} - /* * JNI registration */ |