Bug 1392705 - part 4: Assert in ~nsBaseWidget on Android if the compositor session has not been destroyed r=jchen draft
authorRandall Barker <rbarker@mozilla.com>
Tue, 05 Sep 2017 16:42:10 -0700
changeset 661118 68bae6f9621ac99965a3abc61ecf5ef8e412da44
parent 661117 953ddd6686392eb3d690a8836f84ecaff2625f5e
child 730452 2c4de8e0bb2d4dc4bcbed888a6f499c06393bd68
push id78631
push userbmo:rbarker@mozilla.com
push dateThu, 07 Sep 2017 22:48:24 +0000
reviewersjchen
bugs1392705
milestone57.0a1
Bug 1392705 - part 4: Assert in ~nsBaseWidget on Android if the compositor session has not been destroyed r=jchen MozReview-Commit-ID: IsLj3AWu0ZO
widget/nsBaseWidget.cpp
--- a/widget/nsBaseWidget.cpp
+++ b/widget/nsBaseWidget.cpp
@@ -347,16 +347,22 @@ nsBaseWidget::~nsBaseWidget()
   if (mLayerManager) {
     if (BasicLayerManager* mgr = mLayerManager->AsBasicLayerManager()) {
       mgr->ClearRetainerWidget();
     }
   }
 
   FreeShutdownObserver();
   RevokeTransactionIdAllocator();
+#if defined(MOZ_WIDGET_ANDROID)
+  // The mCompositorSession should have been cleaned up in nsBaseWidget::Shutdown()
+  // DestroyLayerManager() will call DestroyCompositor() which will crash if
+  // called from nsBaseWidget destructor. See Bug 1392705
+  MOZ_ASSERT(!mCompositorSession);
+#endif // defined(MOZ_WIDGET_ANDROID)
   DestroyLayerManager();
 
 #ifdef NOISY_WIDGET_LEAKS
   gNumWidgets--;
   printf("WIDGETS- = %d\n", gNumWidgets);
 #endif
 
   delete mOriginalBounds;