Bug 1049296 - Handle Sideband stream compositing in HwcComposer2D r=mwu,nical

This commit is contained in:
Sotaro Ikeda
2016-01-18 20:52:32 -08:00
parent cb3fde01f7
commit 2e0421527a
8 changed files with 126 additions and 14 deletions

View File

@@ -441,6 +441,9 @@ ImageHost::SetCompositor(Compositor* aCompositor)
img.mFrontBuffer->SetCompositor(aCompositor);
}
}
if (mImageHostOverlay) {
mImageHostOverlay->SetCompositor(aCompositor);
}
CompositableHost::SetCompositor(aCompositor);
}
@@ -586,6 +589,9 @@ ImageHostOverlay::ImageHostOverlay()
ImageHostOverlay::~ImageHostOverlay()
{
if (mCompositor) {
mCompositor->RemoveImageHostOverlay(this);
}
MOZ_COUNT_DTOR(ImageHostOverlay);
}
@@ -601,6 +607,18 @@ ImageHostOverlay::IsValid(OverlaySource aOverlay)
return false;
}
void
ImageHostOverlay::SetCompositor(Compositor* aCompositor)
{
if (mCompositor && (mCompositor != aCompositor)) {
mCompositor->RemoveImageHostOverlay(this);
}
if (aCompositor) {
aCompositor->AddImageHostOverlay(this);
}
mCompositor = aCompositor;
}
void
ImageHostOverlay::Composite(Compositor* aCompositor,
uint32_t aFlashCounter,
@@ -612,6 +630,8 @@ ImageHostOverlay::Composite(Compositor* aCompositor,
const gfx::Rect& aClipRect,
const nsIntRegion* aVisibleRegion)
{
MOZ_ASSERT(mCompositor == aCompositor);
if (mOverlay.handle().type() == OverlayHandle::Tnull_t) {
return;
}