mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
Bug 1461239 - Use InvalidateRenderedFrame() when necessary r=nical
This commit is contained in:
parent
98d23e2b2a
commit
848aa7ecc5
@ -280,6 +280,8 @@ AsyncImagePipelineManager::UpdateImageKeys(const wr::Epoch& aEpoch,
|
||||
}
|
||||
|
||||
if (aPipeline->mWrTextureWrapper) {
|
||||
// Force frame rendering, since WebRenderTextureHost update its data outside of WebRender.
|
||||
aMaybeFastTxn.InvalidateRenderedFrame();
|
||||
HoldExternalImage(aPipelineId, aEpoch, aPipeline->mWrTextureWrapper);
|
||||
}
|
||||
|
||||
|
@ -1393,6 +1393,12 @@ WebRenderBridgeParent::RecvScheduleComposite()
|
||||
if (mDestroyed) {
|
||||
return IPC_OK();
|
||||
}
|
||||
|
||||
// Force frame rendering during next frame generation.
|
||||
wr::TransactionBuilder fastTxn(/* aUseSceneBuilderThread */ false);
|
||||
fastTxn.InvalidateRenderedFrame();
|
||||
mApi->SendTransaction(fastTxn);
|
||||
|
||||
ScheduleGenerateFrame();
|
||||
return IPC_OK();
|
||||
}
|
||||
|
@ -208,6 +208,12 @@ TransactionBuilder::GenerateFrame()
|
||||
wr_transaction_generate_frame(mTxn);
|
||||
}
|
||||
|
||||
void
|
||||
TransactionBuilder::InvalidateRenderedFrame()
|
||||
{
|
||||
wr_transaction_invalidate_rendered_frame(mTxn);
|
||||
}
|
||||
|
||||
void
|
||||
TransactionBuilder::UpdateDynamicProperties(const nsTArray<wr::WrOpacityProperty>& aOpacityArray,
|
||||
const nsTArray<wr::WrTransformProperty>& aTransformArray)
|
||||
|
@ -89,6 +89,8 @@ public:
|
||||
|
||||
void GenerateFrame();
|
||||
|
||||
void InvalidateRenderedFrame();
|
||||
|
||||
void UpdateDynamicProperties(const nsTArray<wr::WrOpacityProperty>& aOpacityArray,
|
||||
const nsTArray<wr::WrTransformProperty>& aTransformArray);
|
||||
|
||||
|
@ -1274,6 +1274,11 @@ pub extern "C" fn wr_transaction_generate_frame(txn: &mut Transaction) {
|
||||
txn.generate_frame();
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn wr_transaction_invalidate_rendered_frame(txn: &mut Transaction) {
|
||||
txn.invalidate_rendered_frame();
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "C" fn wr_transaction_update_dynamic_properties(
|
||||
txn: &mut Transaction,
|
||||
|
@ -1820,6 +1820,10 @@ WR_INLINE
|
||||
void wr_transaction_generate_frame(Transaction *aTxn)
|
||||
WR_FUNC;
|
||||
|
||||
WR_INLINE
|
||||
void wr_transaction_invalidate_rendered_frame(Transaction *aTxn)
|
||||
WR_FUNC;
|
||||
|
||||
WR_INLINE
|
||||
bool wr_transaction_is_empty(const Transaction *aTxn)
|
||||
WR_FUNC;
|
||||
|
Loading…
Reference in New Issue
Block a user