Don't let stale async compositables break main-thread paint transactions. (bug 1331548 part 1, r=mattwoodrow)

This commit is contained in:
David Anderson 2017-02-01 23:51:51 -08:00
Родитель 8d6e3c6341
Коммит 436f68228a
1 изменённых файлов: 6 добавлений и 2 удалений

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

@ -420,8 +420,12 @@ LayerTransactionParent::RecvUpdate(const TransactionInfo& aInfo,
}
RefPtr<CompositableHost> host = imageBridge->FindCompositable(op.compositable());
if (!host) {
NS_ERROR("CompositableHost not found in the map");
return IPC_FAIL_NO_REASON(this);
// This normally should not happen, but can after a GPU process crash.
// Media may not have had time to update the ImageContainer associated
// with a video frame, and we may try to attach a stale CompositableHandle.
// Rather than break the whole transaction, we just continue.
gfxCriticalNote << "CompositableHost " << op.compositable().Value() << " not found";
continue;
}
if (!Attach(AsLayer(op.layer()), host, true)) {
return IPC_FAIL_NO_REASON(this);