diff --git a/mobile/android/base/gfx/GeckoLayerClient.java b/mobile/android/base/gfx/GeckoLayerClient.java index ad9da6f1d52..b5143fe3b6d 100644 --- a/mobile/android/base/gfx/GeckoLayerClient.java +++ b/mobile/android/base/gfx/GeckoLayerClient.java @@ -727,7 +727,12 @@ public class GeckoLayerClient implements LayerView.Listener, PanZoomTarget mLayerRendererInitialized = true; } - return mLayerRenderer.createFrame(mFrameMetrics); + try { + return mLayerRenderer.createFrame(mFrameMetrics); + } catch (Exception e) { + Log.w(LOGTAG, e); + return null; + } } @WrapElementForJNI(allowMultithread = true) diff --git a/mobile/android/base/gfx/LayerRenderer.java b/mobile/android/base/gfx/LayerRenderer.java index e65da1fd11d..28857da9a6e 100644 --- a/mobile/android/base/gfx/LayerRenderer.java +++ b/mobile/android/base/gfx/LayerRenderer.java @@ -326,6 +326,9 @@ public class LayerRenderer implements Tabs.OnTabsChangedListener { } private RenderContext createContext(RectF viewport, RectF pageRect, float zoomFactor, PointF offset) { + if (mCoordBuffer == null) { + throw new IllegalStateException(); + } return new RenderContext(viewport, pageRect, zoomFactor, offset, mPositionHandle, mTextureHandle, mCoordBuffer); } diff --git a/widget/android/nsWindow.cpp b/widget/android/nsWindow.cpp index 0d50d715beb..365eae5eefb 100644 --- a/widget/android/nsWindow.cpp +++ b/widget/android/nsWindow.cpp @@ -2396,9 +2396,8 @@ nsWindow::DrawWindowUnderlay(LayerManagerComposite* aManager, nsIntRect aRect) } jobject frameObj = client->CreateFrame(); - NS_ABORT_IF_FALSE(frameObj, "No frame object!"); if (!frameObj) { - ALOG_BRIDGE("Exceptional Exit: %s", __PRETTY_FUNCTION__); + NS_WARNING("Warning: unable to obtain a LayerRenderer frame; aborting window underlay draw"); return; } @@ -2425,8 +2424,10 @@ nsWindow::DrawWindowOverlay(LayerManagerComposite* aManager, nsIntRect aRect) AutoLocalJNIFrame jniFrame(env); - NS_ABORT_IF_FALSE(!mLayerRendererFrame.isNull(), - "Frame should have been created in DrawWindowUnderlay()!"); + if (mLayerRendererFrame.isNull()) { + NS_WARNING("Warning: do not have a LayerRenderer frame; aborting window overlay draw"); + return; + } mozilla::widget::android::GeckoLayerClient* client = AndroidBridge::Bridge()->GetLayerClient();