mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 988800 - Catch and ignore situations where we try to composite on a destroyed LayerRenderer instance. r=Cwiiis
This commit is contained in:
parent
e2501186d2
commit
c57736de6f
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user