bool ImageHostBuffered::Update(const SurfaceDescriptor& aImage, SurfaceDescriptor* aResult) { if (!GetTextureHost()) { *aResult = aImage; return false; } GetTextureHost()->SwapTextures(aImage, aResult); return GetTextureHost()->IsValid(); }
bool CompositableHost::Update(const SurfaceDescriptor& aImage, SurfaceDescriptor* aResult) { if (!GetTextureHost()) { *aResult = aImage; return false; } MOZ_ASSERT(!GetTextureHost()->GetBuffer(), "This path not suitable for texture-level double buffering."); GetTextureHost()->Update(aImage); *aResult = aImage; return GetTextureHost()->IsValid(); }
bool CompositableHost::AddMaskEffect(EffectChain& aEffects, const gfx::Matrix4x4& aTransform, bool aIs3D) { RefPtr<TextureSource> source; RefPtr<DeprecatedTextureHost> oldHost = GetDeprecatedTextureHost(); if (oldHost) { oldHost->Lock(); source = oldHost; } else { RefPtr<TextureHost> host = GetTextureHost(); if (host) { host->Lock(); source = host->GetTextureSources(); } } if (!source) { NS_WARNING("Using compositable with no texture host as mask layer"); return false; } RefPtr<EffectMask> effect = new EffectMask(source, source->GetSize(), aTransform); effect->mIs3D = aIs3D; aEffects.mSecondaryEffects[EFFECT_MASK] = effect; return true; }
void CompositableHost::AddTextureHost(TextureHost* aTexture) { MOZ_ASSERT(aTexture); MOZ_ASSERT(GetTextureHost(aTexture->GetID()) == nullptr, "A texture is already present with this ID"); RefPtr<TextureHost> second = mFirstTexture; mFirstTexture = aTexture; aTexture->SetNextSibling(second); }
void CompositableHost::RemoveMaskEffect() { RefPtr<DeprecatedTextureHost> oldHost = GetDeprecatedTextureHost(); if (oldHost) { oldHost->Unlock(); } else { RefPtr<TextureHost> host = GetTextureHost(); if (host) { host->Unlock(); } } }
bool CompositableHost::AddMaskEffect(EffectChain& aEffects, const gfx::Matrix4x4& aTransform, bool aIs3D) { RefPtr<TextureSource> source = GetTextureHost(); RefPtr<EffectMask> effect = new EffectMask(source, source->GetSize(), aTransform); effect->mIs3D = aIs3D; aEffects.mSecondaryEffects[EFFECT_MASK] = effect; return true; }