Merge "Hack to workaround the fact that the EGL context can be removed from under us by framework in low memory condition." into ics-mr1
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 907e8db..3238da3 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -119,6 +119,11 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.microedition.khronos.egl.EGL10;
+import javax.microedition.khronos.egl.EGLContext;
+import javax.microedition.khronos.egl.EGLDisplay;
+import static javax.microedition.khronos.egl.EGL10.*;
+
 /**
  * <p>A View that displays web pages. This class is the basis upon which you
  * can roll your own web browser or simply display some online content within your Activity.
@@ -909,6 +914,9 @@
     private Rect mScrollingLayerBounds = new Rect();
     private boolean mSentAutoScrollMessage = false;
 
+    // Temporary hack to work around the context removal upon memory pressure
+    private static boolean mIncrementEGLContextHack = false;
+
     // used for serializing asynchronously handled touch events.
     private final TouchEventQueue mTouchEventQueue = new TouchEventQueue();
 
@@ -4225,6 +4233,13 @@
         }
 
         if (canvas.isHardwareAccelerated()) {
+            if (mIncrementEGLContextHack == false) {
+                mIncrementEGLContextHack = true;
+                EGL10 egl = (EGL10) EGLContext.getEGL();
+                EGLDisplay eglDisplay = egl.eglGetDisplay(EGL_DEFAULT_DISPLAY);
+                int[] version = new int[2];
+                egl.eglInitialize(eglDisplay, version);
+            }
             mZoomManager.setHardwareAccelerated();
         }