Bug 1361111 - Avoid sending IPDL messages over a dead channel. r?jerry draft
authorKartikaya Gupta <kgupta@mozilla.com>
Mon, 01 May 2017 15:47:32 -0400
changeset 570975 47d30169de087644092d1ba74291d20d5491f2b1
parent 570886 57b37213d81150642f5139764e7044b07b9dccc3
child 626630 5346103f9f51c419be3164a13f3934050168d517
push id56642
push userkgupta@mozilla.com
push dateMon, 01 May 2017 19:47:49 +0000
reviewersjerry
bugs1361111
milestone55.0a1
Bug 1361111 - Avoid sending IPDL messages over a dead channel. r?jerry If the GPU process resets, we get a call to destroy the WebRenderLayerManager. This in turns tries to send messages over the PWebRenderBridge channel which has already been torn down. We should detect this case and avoid sending the messages. MozReview-Commit-ID: AV3q0WVpPN5
gfx/layers/wr/WebRenderLayerManager.cpp
--- a/gfx/layers/wr/WebRenderLayerManager.cpp
+++ b/gfx/layers/wr/WebRenderLayerManager.cpp
@@ -295,18 +295,20 @@ void
 WebRenderLayerManager::AddImageKeyForDiscard(wr::ImageKey key)
 {
   mImageKeys.push_back(key);
 }
 
 void
 WebRenderLayerManager::DiscardImages()
 {
-  for (auto key : mImageKeys) {
+  if (!WrBridge()->IsDestroyed()) {
+    for (auto key : mImageKeys) {
       WrBridge()->SendDeleteImage(key);
+    }
   }
   mImageKeys.clear();
 }
 
 void
 WebRenderLayerManager::AddCompositorAnimationsIdForDiscard(uint64_t aId)
 {
   mDiscardedCompositorAnimationsIds.push_back(aId);