Bug 1379920 - Introduce WebRenderCanvasData. r=kats

MozReview-Commit-ID: 4aBfWib1bQq
This commit is contained in:
Morris Tseng 2017-08-03 13:55:14 +08:00
parent f3d4ff499f
commit 23c9ce9b7b
2 changed files with 41 additions and 0 deletions

View File

@ -10,6 +10,7 @@
#include "mozilla/layers/WebRenderLayerManager.h"
#include "mozilla/layers/WebRenderMessages.h"
#include "nsDisplayListInvalidation.h"
#include "WebRenderCanvasRenderer.h"
namespace mozilla {
namespace layers {
@ -190,5 +191,24 @@ WebRenderAnimationData::WebRenderAnimationData(WebRenderLayerManager* aWRManager
{
}
WebRenderCanvasData::WebRenderCanvasData(WebRenderLayerManager* aWRManager)
: WebRenderUserData(aWRManager)
{
}
WebRenderCanvasData::~WebRenderCanvasData()
{
}
WebRenderCanvasRendererAsync*
WebRenderCanvasData::GetCanvasRenderer()
{
if (!mCanvasRenderer) {
mCanvasRenderer = MakeUnique<WebRenderCanvasRendererAsync>(mWRManager);
}
return mCanvasRenderer.get();
}
} // namespace layers
} // namespace mozilla

View File

@ -14,9 +14,12 @@ class nsDisplayItemGeometry;
namespace mozilla {
namespace layers {
class CanvasLayer;
class ImageClient;
class ImageContainer;
class WebRenderBridgeChild;
class WebRenderCanvasData;
class WebRenderCanvasRendererAsync;
class WebRenderImageData;
class WebRenderFallbackData;
class WebRenderLayerManager;
@ -30,11 +33,13 @@ public:
virtual WebRenderImageData* AsImageData() { return nullptr; }
virtual WebRenderFallbackData* AsFallbackData() { return nullptr; }
virtual WebRenderCanvasData* AsCanvasData() { return nullptr; }
enum class UserDataType {
eImage,
eFallback,
eAnimation,
eCanvas,
};
virtual UserDataType GetType() = 0;
@ -120,6 +125,22 @@ protected:
AnimationInfo mAnimationInfo;
};
class WebRenderCanvasData : public WebRenderUserData
{
public:
explicit WebRenderCanvasData(WebRenderLayerManager* aWRManager);
virtual ~WebRenderCanvasData();
virtual WebRenderCanvasData* AsCanvasData() override { return this; }
virtual UserDataType GetType() override { return UserDataType::eCanvas; }
static UserDataType Type() { return UserDataType::eCanvas; }
WebRenderCanvasRendererAsync* GetCanvasRenderer();
protected:
UniquePtr<WebRenderCanvasRendererAsync> mCanvasRenderer;
};
} // namespace layers
} // namespace mozilla