Bug 1388639 - Use KnowsCompositor instead of ShadowForwarder in MaskImageData and MaskLayerImageCache r=nical

This commit is contained in:
sotaro 2017-08-10 11:43:11 +09:00
Родитель b15e213fc9
Коммит 276b8889d3
3 изменённых файлов: 16 добавлений и 16 удалений

Просмотреть файл

@ -1699,20 +1699,20 @@ public:
return mDrawTarget;
}
if (mLayerManager->GetBackendType() == LayersBackend::LAYERS_BASIC ||
mLayerManager->GetBackendType() == LayersBackend::LAYERS_WR) {
if (mLayerManager->GetBackendType() == LayersBackend::LAYERS_BASIC) {
mDrawTarget = mLayerManager->CreateOptimalMaskDrawTarget(mSize);
return mDrawTarget;
}
MOZ_ASSERT(mLayerManager->GetBackendType() == LayersBackend::LAYERS_CLIENT);
MOZ_ASSERT(mLayerManager->GetBackendType() == LayersBackend::LAYERS_CLIENT ||
mLayerManager->GetBackendType() == LayersBackend::LAYERS_WR);
ShadowLayerForwarder* fwd = mLayerManager->AsShadowForwarder();
if (!fwd) {
KnowsCompositor* knowsCompositor = mLayerManager->AsKnowsCompositor();
if (!knowsCompositor) {
return nullptr;
}
mTextureClient =
TextureClient::CreateForDrawing(fwd,
TextureClient::CreateForDrawing(knowsCompositor,
SurfaceFormat::A8,
mSize,
BackendSelector::Content,
@ -1747,8 +1747,7 @@ public:
private:
already_AddRefed<Image> CreateImage()
{
if ((mLayerManager->GetBackendType() == LayersBackend::LAYERS_BASIC ||
mLayerManager->GetBackendType() == LayersBackend::LAYERS_WR) &&
if (mLayerManager->GetBackendType() == LayersBackend::LAYERS_BASIC &&
mDrawTarget) {
RefPtr<SourceSurface> surface = mDrawTarget->Snapshot();
RefPtr<SourceSurfaceImage> image = new SourceSurfaceImage(mSize, surface);
@ -1758,7 +1757,8 @@ private:
return image.forget();
}
if (mLayerManager->GetBackendType() == LayersBackend::LAYERS_CLIENT &&
if ((mLayerManager->GetBackendType() == LayersBackend::LAYERS_CLIENT ||
mLayerManager->GetBackendType() == LayersBackend::LAYERS_WR) &&
mTextureClient &&
mDrawTarget) {
RefPtr<TextureWrapperImage> image =
@ -6459,7 +6459,7 @@ ContainerState::CreateMaskLayer(Layer *aLayer,
mContainerFrame->PresContext()));
newKey->mRoundedClipRects[i].ScaleAndTranslate(imageTransform);
}
newKey->mForwarder = mManager->AsShadowForwarder();
newKey->mKnowsCompositor = mManager->AsKnowsCompositor();
const MaskLayerImageCache::MaskLayerImageKey* lookupKey = newKey;

Просмотреть файл

@ -6,7 +6,7 @@
#include "MaskLayerImageCache.h"
#include "ImageContainer.h"
#include "mozilla/layers/ShadowLayers.h"
#include "mozilla/layers/KnowsCompositor.h"
using namespace mozilla::layers;

Просмотреть файл

@ -15,7 +15,7 @@ namespace mozilla {
namespace layers {
class ImageContainer;
class ShadowLayerForwarder;
class KnowsCompositor;
} // namespace layers
/**
@ -34,7 +34,7 @@ class ShadowLayerForwarder;
class MaskLayerImageCache
{
typedef mozilla::layers::ImageContainer ImageContainer;
typedef mozilla::layers::ShadowLayerForwarder ShadowLayerForwarder;
typedef mozilla::layers::KnowsCompositor KnowsCompositor;
public:
MaskLayerImageCache();
~MaskLayerImageCache();
@ -154,19 +154,19 @@ public:
for (uint32_t i = 0; i < mRoundedClipRects.Length(); ++i) {
hash = AddToHash(hash, mRoundedClipRects[i].Hash());
}
hash = AddToHash(hash, mForwarder.get());
hash = AddToHash(hash, mKnowsCompositor.get());
return hash;
}
bool operator==(const MaskLayerImageKey& aOther) const
{
return mForwarder == aOther.mForwarder &&
return mKnowsCompositor == aOther.mKnowsCompositor &&
mRoundedClipRects == aOther.mRoundedClipRects;
}
nsTArray<PixelRoundedRect> mRoundedClipRects;
RefPtr<ShadowLayerForwarder> mForwarder;
RefPtr<KnowsCompositor> mKnowsCompositor;
private:
void IncLayerCount() const { ++mLayerCount; }
void DecLayerCount() const