Index: Source/platform/graphics/RecordingImageBufferSurface.h |
diff --git a/Source/platform/graphics/RecordingImageBufferSurface.h b/Source/platform/graphics/RecordingImageBufferSurface.h |
index 6bb095c9a8001624f0bbfb9f64d0277394ef0f50..c73a61ea45afac11f0f3719554b8a0b57d0aa6eb 100644 |
--- a/Source/platform/graphics/RecordingImageBufferSurface.h |
+++ b/Source/platform/graphics/RecordingImageBufferSurface.h |
@@ -20,10 +20,16 @@ namespace blink { |
class ImageBuffer; |
+class RecordingImageBufferFallbackSurfaceFactory { |
+public: |
+ virtual PassOwnPtr<ImageBufferSurface> createSurface(const IntSize&, OpacityMode) = 0; |
+ virtual ~RecordingImageBufferFallbackSurfaceFactory() { } |
+}; |
+ |
class PLATFORM_EXPORT RecordingImageBufferSurface : public ImageBufferSurface { |
WTF_MAKE_NONCOPYABLE(RecordingImageBufferSurface); WTF_MAKE_FAST_ALLOCATED; |
public: |
- RecordingImageBufferSurface(const IntSize&, OpacityMode = NonOpaque); |
+ RecordingImageBufferSurface(const IntSize&, PassOwnPtr<RecordingImageBufferFallbackSurfaceFactory> fallbackFactory, OpacityMode = NonOpaque); |
virtual ~RecordingImageBufferSurface(); |
// Implementation of ImageBufferSurface interfaces |
@@ -35,6 +41,18 @@ public: |
virtual void didClearCanvas() override; |
virtual void setImageBuffer(ImageBuffer*) override; |
+ // Passthroughs to fallback surface |
+ virtual const SkBitmap& bitmap() override; |
+ virtual bool restore() override; |
+ virtual WebLayer* layer() const override; |
+ virtual bool isAccelerated() const override; |
+ virtual Platform3DObject getBackingTexture() const override; |
+ virtual bool cachedBitmapEnabled() const override; |
+ virtual const SkBitmap& cachedBitmap() const override; |
+ virtual void invalidateCachedBitmap() override; |
+ virtual void updateCachedBitmapIfNeeded() override; |
+ virtual void setIsHidden(bool) override; |
+ |
private: |
struct StateRec { |
public: |
@@ -55,10 +73,11 @@ private: |
OwnPtr<SkPictureRecorder> m_currentFrame; |
RefPtr<SkPicture> m_previousFrame; |
- OwnPtr<SkCanvas> m_rasterCanvas; |
+ OwnPtr<ImageBufferSurface> m_fallbackSurface; |
ImageBuffer* m_imageBuffer; |
int m_initialSaveCount; |
bool m_frameWasCleared; |
+ OwnPtr<RecordingImageBufferFallbackSurfaceFactory> m_fallbackFactory; |
}; |
} // namespace blink |