Merge "Change Android.mk file to use the new location after /frameworks/media/libvideoeditor source files are moved"
diff --git a/core/java/android/view/DisplayList.java b/core/java/android/view/DisplayList.java
index 1dabad2..a50f09f 100644
--- a/core/java/android/view/DisplayList.java
+++ b/core/java/android/view/DisplayList.java
@@ -16,8 +16,6 @@
package android.view;
-import android.os.Handler;
-
/**
* A display lists records a series of graphics related operation and can replay
* them later. Display lists are usually built by recording operations on a
diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java
index b98257c..1f140e95 100644
--- a/core/java/android/view/HardwareRenderer.java
+++ b/core/java/android/view/HardwareRenderer.java
@@ -464,8 +464,8 @@
static final Object[] sEglLock = new Object[0];
int mWidth = -1, mHeight = -1;
- static final ThreadLocal<Gl20Renderer.Gl20RendererEglContext> sEglContextStorage
- = new ThreadLocal<Gl20Renderer.Gl20RendererEglContext>();
+ static final ThreadLocal<ManagedEGLContext> sEglContextStorage
+ = new ThreadLocal<ManagedEGLContext>();
EGLContext mEglContext;
Thread mEglThread;
@@ -622,7 +622,7 @@
}
}
- abstract GLES20Canvas createCanvas();
+ abstract HardwareCanvas createCanvas();
abstract int[] getConfig(boolean dirtyRegions);
@@ -662,16 +662,18 @@
}
}
- Gl20Renderer.Gl20RendererEglContext managedContext = sEglContextStorage.get();
+ ManagedEGLContext managedContext = sEglContextStorage.get();
mEglContext = managedContext != null ? managedContext.getContext() : null;
mEglThread = Thread.currentThread();
if (mEglContext == null) {
mEglContext = createContext(sEgl, sEglDisplay, sEglConfig);
- sEglContextStorage.set(new Gl20Renderer.Gl20RendererEglContext(mEglContext));
+ sEglContextStorage.set(createManagedContext(mEglContext));
}
}
+ abstract ManagedEGLContext createManagedContext(EGLContext eglContext);
+
private EGLConfig chooseEglConfig() {
EGLConfig[] configs = new EGLConfig[1];
int[] configsCount = new int[1];
@@ -1103,7 +1105,8 @@
// Make sure we do this on the correct thread.
if (mHandler.getLooper() != Looper.myLooper()) {
mHandler.post(new Runnable() {
- @Override public void run() {
+ @Override
+ public void run() {
onTerminate(eglContext);
}
});
@@ -1142,11 +1145,16 @@
}
@Override
- GLES20Canvas createCanvas() {
+ HardwareCanvas createCanvas() {
return mGlCanvas = new GLES20Canvas(mTranslucent);
}
@Override
+ ManagedEGLContext createManagedContext(EGLContext eglContext) {
+ return new Gl20Renderer.Gl20RendererEglContext(mEglContext);
+ }
+
+ @Override
int[] getConfig(boolean dirtyRegions) {
return new int[] {
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
@@ -1249,7 +1257,8 @@
if (isEnabled() && checkCurrent() != SURFACE_STATE_ERROR) needsContext = false;
if (needsContext) {
- Gl20RendererEglContext managedContext = sEglContextStorage.get();
+ Gl20RendererEglContext managedContext =
+ (Gl20RendererEglContext) sEglContextStorage.get();
if (managedContext == null) return;
usePbufferSurface(managedContext.getContext());
}
@@ -1282,7 +1291,8 @@
static void trimMemory(int level) {
if (sEgl == null || sEglConfig == null) return;
- Gl20RendererEglContext managedContext = sEglContextStorage.get();
+ Gl20RendererEglContext managedContext =
+ (Gl20RendererEglContext) sEglContextStorage.get();
// We do not have OpenGL objects
if (managedContext == null) {
return;
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 0e5ff20..17dbde8 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -403,6 +403,9 @@
mIInputContext.finishComposingText();
} catch (RemoteException e) {
}
+ // Check focus again in case that "onWindowFocus" is called before
+ // handling this message.
+ checkFocus(mHasBeenInactive);
}
}
return;
@@ -1173,13 +1176,17 @@
}
}
+ private void checkFocus(boolean forceNewFocus) {
+ if (checkFocusNoStartInput(forceNewFocus)) {
+ startInputInner(null, 0, 0, 0);
+ }
+ }
+
/**
* @hide
*/
public void checkFocus() {
- if (checkFocusNoStartInput(false)) {
- startInputInner(null, 0, 0, 0);
- }
+ checkFocus(false);
}
private boolean checkFocusNoStartInput(boolean forceNewFocus) {