mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 00:35:44 +00:00
Bug 1204895 - Add fence handling to AutoRemoveTexture on gonk r=nical
This commit is contained in:
parent
e284a1b7b0
commit
51c653ee0e
@ -270,5 +270,26 @@ CompositableClient::DumpTextureClient(std::stringstream& aStream, TextureClient*
|
||||
aStream << gfxUtils::GetAsLZ4Base64Str(dSurf).get();
|
||||
}
|
||||
|
||||
AutoRemoveTexture::~AutoRemoveTexture()
|
||||
{
|
||||
#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17
|
||||
if (mCompositable && mTexture && mCompositable->GetForwarder()) {
|
||||
// remove old buffer from CompositableHost
|
||||
RefPtr<AsyncTransactionWaiter> waiter = new AsyncTransactionWaiter();
|
||||
RefPtr<AsyncTransactionTracker> tracker =
|
||||
new RemoveTextureFromCompositableTracker(waiter);
|
||||
// Hold TextureClient until transaction complete.
|
||||
tracker->SetTextureClient(mTexture);
|
||||
mTexture->SetRemoveFromCompositableWaiter(waiter);
|
||||
// RemoveTextureFromCompositableAsync() expects CompositorChild's presence.
|
||||
mCompositable->GetForwarder()->RemoveTextureFromCompositableAsync(tracker, mCompositable, mTexture);
|
||||
}
|
||||
#else
|
||||
if (mCompositable && mTexture) {
|
||||
mCompositable->RemoveTexture(mTexture);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
} // namespace layers
|
||||
} // namespace mozilla
|
||||
|
@ -248,12 +248,7 @@ struct AutoRemoveTexture
|
||||
, mCompositable(aCompositable)
|
||||
{}
|
||||
|
||||
~AutoRemoveTexture()
|
||||
{
|
||||
if (mCompositable && mTexture) {
|
||||
mCompositable->RemoveTexture(mTexture);
|
||||
}
|
||||
}
|
||||
~AutoRemoveTexture();
|
||||
|
||||
RefPtr<TextureClient> mTexture;
|
||||
private:
|
||||
|
@ -360,7 +360,6 @@ ImageClientOverlay::UpdateImage(ImageContainer* aContainer, uint32_t aContentFla
|
||||
}
|
||||
mLastUpdateGenerationCounter = (uint32_t)image->GetSerial();
|
||||
|
||||
AutoRemoveTexture autoRemoveTexture(this);
|
||||
if (image->GetFormat() == ImageFormat::OVERLAY_IMAGE) {
|
||||
OverlayImage* overlayImage = static_cast<OverlayImage*>(image);
|
||||
uint32_t overlayId = overlayImage->GetOverlayId();
|
||||
|
Loading…
Reference in New Issue
Block a user