Bug 1384043 - Support solid color for layers free mode. r=mattwoodrow

MozReview-Commit-ID: H4YWgdl1yAV

--HG--
extra : rebase_source : ea2920a5b25c2fde2950af189c7245c90d370934
This commit is contained in:
Ethan Lin 2017-07-26 10:03:23 +08:00
Родитель 680df47bd6
Коммит 805e149605
2 изменённых файлов: 31 добавлений и 0 удалений

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

@ -2892,6 +2892,31 @@ nsDisplaySolidColor::WriteDebugInfo(std::stringstream& aStream)
<< (int)NS_GET_A(mColor) << ")";
}
bool
nsDisplaySolidColor::CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
const StackingContextHelper& aSc,
nsTArray<WebRenderParentCommand>& aParentCommands,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder)
{
if (aManager->IsLayersFreeTransaction()) {
ContainerLayerParameters parameter;
if (GetLayerState(aDisplayListBuilder, aManager, parameter) != LAYER_ACTIVE) {
return false;
}
}
LayoutDeviceRect bounds = LayoutDeviceRect::FromAppUnits(
mVisibleRect, mFrame->PresContext()->AppUnitsPerDevPixel());
wr::LayoutRect transformedRect = aSc.ToRelativeLayoutRect(bounds);
aBuilder.PushRect(transformedRect,
transformedRect,
wr::ToColorF(ToDeviceColor(mColor)));
return true;
}
nsRect
nsDisplaySolidColorRegion::GetBounds(nsDisplayListBuilder* aBuilder, bool* aSnap)
{

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

@ -3004,6 +3004,12 @@ public:
virtual void WriteDebugInfo(std::stringstream& aStream) override;
virtual bool CreateWebRenderCommands(mozilla::wr::DisplayListBuilder& aBuilder,
const StackingContextHelper& aSc,
nsTArray<WebRenderParentCommand>& aParentCommands,
mozilla::layers::WebRenderLayerManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder) override;
NS_DISPLAY_DECL_NAME("SolidColor", TYPE_SOLID_COLOR)
private: