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()); RefPtr<CompositableHost> host = imageBridge->FindCompositable(op.compositable());
if (!host) { if (!host) {
NS_ERROR("CompositableHost not found in the map"); // This normally should not happen, but can after a GPU process crash.
return IPC_FAIL_NO_REASON(this); // 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)) { if (!Attach(AsLayer(op.layer()), host, true)) {
return IPC_FAIL_NO_REASON(this); return IPC_FAIL_NO_REASON(this);