| Index: Source/platform/graphics/RecordingImageBufferSurface.cpp
|
| diff --git a/Source/platform/graphics/RecordingImageBufferSurface.cpp b/Source/platform/graphics/RecordingImageBufferSurface.cpp
|
| index 1b445dcd6938e17956cd91bc9e525a3940741fe4..1d57c614d757a1b03d61de4176e118b9217be992 100644
|
| --- a/Source/platform/graphics/RecordingImageBufferSurface.cpp
|
| +++ b/Source/platform/graphics/RecordingImageBufferSurface.cpp
|
| @@ -28,8 +28,16 @@ RecordingImageBufferSurface::RecordingImageBufferSurface(const IntSize& size, Op
|
| RecordingImageBufferSurface::~RecordingImageBufferSurface()
|
| { }
|
|
|
| -void RecordingImageBufferSurface::initializeCurrentFrame()
|
| +bool RecordingImageBufferSurface::initializeCurrentFrame()
|
| {
|
| + StateStack stateStack;
|
| + bool saved = false;
|
| + if (m_currentFrame) {
|
| + saved = saveState(m_currentFrame->getRecordingCanvas(), &stateStack);
|
| + if (!saved)
|
| + return false;
|
| + }
|
| +
|
| static SkRTreeFactory rTreeFactory;
|
| m_currentFrame = adoptPtr(new SkPictureRecorder);
|
| m_currentFrame->beginRecording(size().width(), size().height(), &rTreeFactory);
|
| @@ -38,6 +46,11 @@ void RecordingImageBufferSurface::initializeCurrentFrame()
|
| m_imageBuffer->context()->resetCanvas(m_currentFrame->getRecordingCanvas());
|
| m_imageBuffer->context()->setRegionTrackingMode(GraphicsContext::RegionTrackingOverwrite);
|
| }
|
| +
|
| + if (saved)
|
| + setCurrentState(m_currentFrame->getRecordingCanvas(), &stateStack);
|
| +
|
| + return true;
|
| }
|
|
|
| void RecordingImageBufferSurface::setImageBuffer(ImageBuffer* imageBuffer)
|
| @@ -134,16 +147,10 @@ bool RecordingImageBufferSurface::finalizeFrameInternal()
|
| return false;
|
| }
|
|
|
| - StateStack stateStack;
|
| -
|
| - if (!saveState(m_currentFrame->getRecordingCanvas(), &stateStack)) {
|
| - return false;
|
| - }
|
| -
|
| m_previousFrame = adoptRef(m_currentFrame->endRecording());
|
| - initializeCurrentFrame();
|
| + if (!initializeCurrentFrame())
|
| + return false;
|
|
|
| - setCurrentState(m_currentFrame->getRecordingCanvas(), &stateStack);
|
|
|
| m_frameWasCleared = false;
|
| return true;
|
|
|