Bug 1498092 - Add necessary forced frame rendering r=nical

This commit is contained in:
sotaro 2018-10-15 20:28:01 +09:00
Родитель 73f65236b3
Коммит 2dae3826d6
3 изменённых файлов: 17 добавлений и 4 удалений

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

@ -645,7 +645,7 @@ mozilla::ipc::IPCResult
CompositorBridgeParent::RecvForcePresent()
{
if (mWrBridge) {
mWrBridge->ScheduleGenerateFrame();
mWrBridge->ScheduleForcedGenerateFrame();
}
// During the shutdown sequence mLayerManager may be null
if (mLayerManager) {

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

@ -1389,18 +1389,23 @@ WebRenderBridgeParent::UpdateWebRender(CompositorVsyncScheduler* aScheduler,
mozilla::ipc::IPCResult
WebRenderBridgeParent::RecvScheduleComposite()
{
ScheduleGenerateFrame();
return IPC_OK();
}
void
WebRenderBridgeParent::ScheduleForcedGenerateFrame()
{
if (mDestroyed) {
return IPC_OK();
return;
}
// Force frame rendering during next frame generation.
wr::TransactionBuilder fastTxn(/* aUseSceneBuilderThread */ false);
fastTxn.InvalidateRenderedFrame();
mApi->SendTransaction(fastTxn);
ScheduleGenerateFrame();
return IPC_OK();
}
mozilla::ipc::IPCResult

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

@ -186,6 +186,14 @@ public:
*/
void ScheduleGenerateFrame();
/**
* Schedule forced frame rendering at next composite timing.
*
* WebRender could skip frame rendering if there is no update.
* This function is used to force rendering even when there is not update.
*/
void ScheduleForcedGenerateFrame();
wr::Epoch UpdateWebRender(CompositorVsyncScheduler* aScheduler,
wr::WebRenderAPI* aApi,
AsyncImagePipelineManager* aImageMgr,