Merge "Dynamically configurable accessibility flags mishandled."
diff --git a/core/java/android/app/backup/BackupAgent.java b/core/java/android/app/backup/BackupAgent.java
index 9ad33a5..b678df7 100644
--- a/core/java/android/app/backup/BackupAgent.java
+++ b/core/java/android/app/backup/BackupAgent.java
@@ -227,6 +227,7 @@
String libDir = (appInfo.nativeLibraryDir != null)
? new File(appInfo.nativeLibraryDir).getCanonicalPath()
: null;
+ String externalFilesDir = getExternalFilesDir(null).getCanonicalPath();
// Filters, the scan queue, and the set of resulting entities
HashSet<String> filterSet = new HashSet<String>();
@@ -254,6 +255,12 @@
filterSet.add(databaseDir);
filterSet.remove(sharedPrefsDir);
fullBackupFileTree(packageName, FullBackup.SHAREDPREFS_TREE_TOKEN, sharedPrefsDir, filterSet, data);
+
+ // getExternalFilesDir() location associated with this app. Technically there should
+ // not be any files here if the app does not properly have permission to access
+ // external storage, but edge cases happen. fullBackupFileTree() catches
+ // IOExceptions and similar, and treats them as non-fatal, so we rely on that here.
+ fullBackupFileTree(packageName, FullBackup.MANAGED_EXTERNAL_TREE_TOKEN, externalFilesDir, null, data);
}
/**
@@ -274,6 +281,7 @@
String spDir;
String cacheDir;
String libDir;
+ String efDir;
String filePath;
ApplicationInfo appInfo = getApplicationInfo();
@@ -287,6 +295,7 @@
libDir = (appInfo.nativeLibraryDir == null)
? null
: new File(appInfo.nativeLibraryDir).getCanonicalPath();
+ efDir = getExternalFilesDir(null).getCanonicalPath();
// Now figure out which well-defined tree the file is placed in, working from
// most to least specific. We also specifically exclude the lib and cache dirs.
@@ -315,6 +324,9 @@
} else if (filePath.startsWith(mainDir)) {
domain = FullBackup.ROOT_TREE_TOKEN;
rootpath = mainDir;
+ } else if (filePath.startsWith(efDir)) {
+ domain = FullBackup.MANAGED_EXTERNAL_TREE_TOKEN;
+ rootpath = efDir;
} else {
Log.w(TAG, "File " + filePath + " is in an unsupported location; skipping");
return;
@@ -438,6 +450,8 @@
basePath = getSharedPrefsFile("foo").getParentFile().getCanonicalPath();
} else if (domain.equals(FullBackup.CACHE_TREE_TOKEN)) {
basePath = getCacheDir().getCanonicalPath();
+ } else if (domain.equals(FullBackup.MANAGED_EXTERNAL_TREE_TOKEN)) {
+ basePath = getExternalFilesDir(null).getCanonicalPath();
} else {
// Not a supported location
Log.i(TAG, "Data restored from non-app domain " + domain + ", ignoring");
diff --git a/core/java/android/app/backup/FullBackup.java b/core/java/android/app/backup/FullBackup.java
index f859599..2fe08f3 100644
--- a/core/java/android/app/backup/FullBackup.java
+++ b/core/java/android/app/backup/FullBackup.java
@@ -46,6 +46,7 @@
public static final String DATA_TREE_TOKEN = "f";
public static final String DATABASE_TREE_TOKEN = "db";
public static final String SHAREDPREFS_TREE_TOKEN = "sp";
+ public static final String MANAGED_EXTERNAL_TREE_TOKEN = "ef";
public static final String CACHE_TREE_TOKEN = "c";
public static final String SHARED_STORAGE_TOKEN = "shared";
diff --git a/core/java/android/view/GestureDetector.java b/core/java/android/view/GestureDetector.java
index 9ddb32e..28c1058 100644
--- a/core/java/android/view/GestureDetector.java
+++ b/core/java/android/view/GestureDetector.java
@@ -213,6 +213,7 @@
private OnDoubleTapListener mDoubleTapListener;
private boolean mStillDown;
+ private boolean mDeferConfirmSingleTap;
private boolean mInLongPress;
private boolean mAlwaysInTapRegion;
private boolean mAlwaysInBiggerTapRegion;
@@ -267,8 +268,12 @@
case TAP:
// If the user's finger is still down, do not count it as a tap
- if (mDoubleTapListener != null && !mStillDown) {
- mDoubleTapListener.onSingleTapConfirmed(mCurrentDownEvent);
+ if (mDoubleTapListener != null) {
+ if (!mStillDown) {
+ mDoubleTapListener.onSingleTapConfirmed(mCurrentDownEvent);
+ } else {
+ mDeferConfirmSingleTap = true;
+ }
}
break;
@@ -533,6 +538,7 @@
mAlwaysInBiggerTapRegion = true;
mStillDown = true;
mInLongPress = false;
+ mDeferConfirmSingleTap = false;
if (mIsLongpressEnabled) {
mHandler.removeMessages(LONG_PRESS);
@@ -586,6 +592,9 @@
mInLongPress = false;
} else if (mAlwaysInTapRegion) {
handled = mListener.onSingleTapUp(ev);
+ if (mDeferConfirmSingleTap && mDoubleTapListener != null) {
+ mDoubleTapListener.onSingleTapConfirmed(ev);
+ }
} else {
// A fling must travel the minimum tap distance
@@ -612,6 +621,7 @@
mVelocityTracker = null;
}
mIsDoubleTapping = false;
+ mDeferConfirmSingleTap = false;
mHandler.removeMessages(SHOW_PRESS);
mHandler.removeMessages(LONG_PRESS);
break;
@@ -637,6 +647,7 @@
mStillDown = false;
mAlwaysInTapRegion = false;
mAlwaysInBiggerTapRegion = false;
+ mDeferConfirmSingleTap = false;
if (mInLongPress) {
mInLongPress = false;
}
@@ -649,6 +660,7 @@
mIsDoubleTapping = false;
mAlwaysInTapRegion = false;
mAlwaysInBiggerTapRegion = false;
+ mDeferConfirmSingleTap = false;
if (mInLongPress) {
mInLongPress = false;
}
@@ -671,6 +683,7 @@
private void dispatchLongPress() {
mHandler.removeMessages(TAP);
+ mDeferConfirmSingleTap = false;
mInLongPress = true;
mListener.onLongPress(mCurrentDownEvent);
}
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java
index 63f0e1f..de64e14 100644
--- a/core/java/android/view/Surface.java
+++ b/core/java/android/view/Surface.java
@@ -32,6 +32,20 @@
public class Surface implements Parcelable {
private static final String TAG = "Surface";
+ private static native int nativeCreateFromSurfaceTexture(SurfaceTexture surfaceTexture)
+ throws OutOfResourcesException;
+
+ private native Canvas nativeLockCanvas(int nativeObject, Rect dirty);
+ private native void nativeUnlockCanvasAndPost(int nativeObject, Canvas canvas);
+
+ private static native void nativeRelease(int nativeObject);
+ private static native void nativeDestroy(int nativeObject);
+ private static native boolean nativeIsValid(int nativeObject);
+ private static native boolean nativeIsConsumerRunningBehind(int nativeObject);
+ private static native int nativeCopyFrom(int nativeObject, int surfaceControlNativeObject);
+ private static native int nativeReadFromParcel(int nativeObject, Parcel source);
+ private static native void nativeWriteToParcel(int nativeObject, Parcel dest);
+
public static final Parcelable.Creator<Surface> CREATOR =
new Parcelable.Creator<Surface>() {
public Surface createFromParcel(Parcel source) {
@@ -44,33 +58,11 @@
return null;
}
}
-
public Surface[] newArray(int size) {
return new Surface[size];
}
};
- /**
- * Rotation constant: 0 degree rotation (natural orientation)
- */
- public static final int ROTATION_0 = 0;
-
- /**
- * Rotation constant: 90 degree rotation.
- */
- public static final int ROTATION_90 = 1;
-
- /**
- * Rotation constant: 180 degree rotation.
- */
- public static final int ROTATION_180 = 2;
-
- /**
- * Rotation constant: 270 degree rotation.
- */
- public static final int ROTATION_270 = 3;
-
-
private final CloseGuard mCloseGuard = CloseGuard.get();
private String mName;
@@ -95,6 +87,28 @@
/**
+ * Rotation constant: 0 degree rotation (natural orientation)
+ */
+ public static final int ROTATION_0 = 0;
+
+ /**
+ * Rotation constant: 90 degree rotation.
+ */
+ public static final int ROTATION_90 = 1;
+
+ /**
+ * Rotation constant: 180 degree rotation.
+ */
+ public static final int ROTATION_180 = 2;
+
+ /**
+ * Rotation constant: 270 degree rotation.
+ */
+ public static final int ROTATION_270 = 3;
+
+
+
+ /**
* Create an empty surface, which will later be filled in by readFromParcel().
* @hide
*/
@@ -436,20 +450,4 @@
if (mNativeObject == 0) throw new NullPointerException(
"mNativeObject is null. Have you called release() already?");
}
-
- private native int nativeCreateFromSurfaceTexture(SurfaceTexture surfaceTexture)
- throws OutOfResourcesException;
-
- private native void nativeRelease(int nativeObject);
- private native void nativeDestroy(int nativeObject);
- private native boolean nativeIsValid(int nativeObject);
-
- private native boolean nativeIsConsumerRunningBehind(int nativeObject);
-
- private native Canvas nativeLockCanvas(int nativeObject, Rect dirty);
- private native void nativeUnlockCanvasAndPost(int nativeObject, Canvas canvas);
-
- private native int nativeCopyFrom(int nativeObject, int surfaceControlNativeObject);
- private native int nativeReadFromParcel(int nativeObject, Parcel source);
- private native void nativeWriteToParcel(int nativeObject, Parcel dest);
}
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index dd288b9..9f50065 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -30,6 +30,46 @@
*/
public class SurfaceControl {
private static final String TAG = "SurfaceControl";
+
+ private static native int nativeCreate(SurfaceSession session, String name,
+ int w, int h, int format, int flags)
+ throws OutOfResourcesException;
+ private static native void nativeRelease(int nativeObject);
+ private static native void nativeDestroy(int nativeObject);
+
+ private static native Bitmap nativeScreenshot(IBinder displayToken,
+ int width, int height, int minLayer, int maxLayer, boolean allLayers);
+
+ private static native void nativeOpenTransaction();
+ private static native void nativeCloseTransaction();
+ private static native void nativeSetAnimationTransaction();
+
+ private static native void nativeSetLayer(int nativeObject, int zorder);
+ private static native void nativeSetPosition(int nativeObject, float x, float y);
+ private static native void nativeSetSize(int nativeObject, int w, int h);
+ private static native void nativeSetTransparentRegionHint(int nativeObject, Region region);
+ private static native void nativeSetAlpha(int nativeObject, float alpha);
+ private static native void nativeSetMatrix(int nativeObject, float dsdx, float dtdx, float dsdy, float dtdy);
+ private static native void nativeSetFlags(int nativeObject, int flags, int mask);
+ private static native void nativeSetWindowCrop(int nativeObject, int l, int t, int r, int b);
+ private static native void nativeSetLayerStack(int nativeObject, int layerStack);
+
+ private static native IBinder nativeGetBuiltInDisplay(int physicalDisplayId);
+ private static native IBinder nativeCreateDisplay(String name, boolean secure);
+ private static native void nativeSetDisplaySurface(
+ IBinder displayToken, int nativeSurfaceObject);
+ private static native void nativeSetDisplayLayerStack(
+ IBinder displayToken, int layerStack);
+ private static native void nativeSetDisplayProjection(
+ IBinder displayToken, int orientation,
+ int l, int t, int r, int b,
+ int L, int T, int R, int B);
+ private static native boolean nativeGetDisplayInfo(
+ IBinder displayToken, SurfaceControl.PhysicalDisplayInfo outInfo);
+ private static native void nativeBlankDisplay(IBinder displayToken);
+ private static native void nativeUnblankDisplay(IBinder displayToken);
+
+
private final CloseGuard mCloseGuard = CloseGuard.get();
private String mName;
int mNativeObject; // package visibility only for Surface.java access
@@ -532,44 +572,4 @@
throw new UnsupportedOperationException("Device is headless");
}
}
-
-
-
- private native int nativeCreate(SurfaceSession session, String name,
- int w, int h, int format, int flags)
- throws OutOfResourcesException;
- private native void nativeRelease(int nativeObject);
- private native void nativeDestroy(int nativeObject);
-
- private static native Bitmap nativeScreenshot(IBinder displayToken,
- int width, int height, int minLayer, int maxLayer, boolean allLayers);
-
- private static native void nativeOpenTransaction();
- private static native void nativeCloseTransaction();
- private static native void nativeSetAnimationTransaction();
-
- private native void nativeSetLayer(int nativeObject, int zorder);
- private native void nativeSetPosition(int nativeObject, float x, float y);
- private native void nativeSetSize(int nativeObject, int w, int h);
- private native void nativeSetTransparentRegionHint(int nativeObject, Region region);
- private native void nativeSetAlpha(int nativeObject, float alpha);
- private native void nativeSetMatrix(int nativeObject, float dsdx, float dtdx, float dsdy, float dtdy);
- private native void nativeSetFlags(int nativeObject, int flags, int mask);
- private native void nativeSetWindowCrop(int nativeObject, int l, int t, int r, int b);
- private native void nativeSetLayerStack(int nativeObject, int layerStack);
-
- private static native IBinder nativeGetBuiltInDisplay(int physicalDisplayId);
- private static native IBinder nativeCreateDisplay(String name, boolean secure);
- private static native void nativeSetDisplaySurface(
- IBinder displayToken, int nativeSurfaceObject);
- private static native void nativeSetDisplayLayerStack(
- IBinder displayToken, int layerStack);
- private static native void nativeSetDisplayProjection(
- IBinder displayToken, int orientation,
- int l, int t, int r, int b,
- int L, int T, int R, int B);
- private static native boolean nativeGetDisplayInfo(
- IBinder displayToken, SurfaceControl.PhysicalDisplayInfo outInfo);
- private static native void nativeBlankDisplay(IBinder displayToken);
- private static native void nativeUnblankDisplay(IBinder displayToken);
}
diff --git a/core/jni/android/graphics/SurfaceTexture.cpp b/core/jni/android/graphics/SurfaceTexture.cpp
index f8715fe..296d9b2 100644
--- a/core/jni/android/graphics/SurfaceTexture.cpp
+++ b/core/jni/android/graphics/SurfaceTexture.cpp
@@ -19,7 +19,7 @@
#include <stdio.h>
#include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
#include <android_runtime/AndroidRuntime.h>
@@ -86,8 +86,8 @@
JNIEnv* env, jobject thiz)
{
sp<GLConsumer> surfaceTexture(SurfaceTexture_getSurfaceTexture(env, thiz));
- sp<SurfaceTextureClient> surfaceTextureClient(surfaceTexture != NULL ?
- new SurfaceTextureClient(surfaceTexture->getBufferQueue()) : NULL);
+ sp<Surface> surfaceTextureClient(surfaceTexture != NULL ?
+ new Surface(surfaceTexture->getBufferQueue()) : NULL);
return surfaceTextureClient;
}
diff --git a/core/jni/android/graphics/TextLayoutCache.h b/core/jni/android/graphics/TextLayoutCache.h
index 29805ee..6858c0e 100644
--- a/core/jni/android/graphics/TextLayoutCache.h
+++ b/core/jni/android/graphics/TextLayoutCache.h
@@ -24,7 +24,6 @@
#include <utils/String16.h>
#include <utils/LruCache.h>
#include <utils/KeyedVector.h>
-#include <utils/Compare.h>
#include <utils/RefBase.h>
#include <utils/Singleton.h>
diff --git a/core/jni/android_media_RemoteDisplay.cpp b/core/jni/android_media_RemoteDisplay.cpp
index a340fa1..80d13be 100644
--- a/core/jni/android_media_RemoteDisplay.cpp
+++ b/core/jni/android_media_RemoteDisplay.cpp
@@ -64,7 +64,7 @@
uint32_t width, uint32_t height, uint32_t flags) {
JNIEnv* env = AndroidRuntime::getJNIEnv();
- jobject surfaceObj = android_view_Surface_createFromISurfaceTexture(env, bufferProducer);
+ jobject surfaceObj = android_view_Surface_createFromIGraphicBufferProducer(env, bufferProducer);
if (surfaceObj == NULL) {
ALOGE("Could not create Surface from surface texture %p provided by media server.",
bufferProducer.get());
diff --git a/core/jni/android_opengl_EGL14.cpp b/core/jni/android_opengl_EGL14.cpp
index 9c7124a..26fc261 100644
--- a/core/jni/android_opengl_EGL14.cpp
+++ b/core/jni/android_opengl_EGL14.cpp
@@ -29,7 +29,7 @@
#include <gui/Surface.h>
#include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
#include <ui/ANativeObjectBase.h>
@@ -631,7 +631,7 @@
if (surfaceTexture == NULL)
goto not_valid_surface;
- window = new android::SurfaceTextureClient(surfaceTexture->getBufferQueue());
+ window = new android::Surface(surfaceTexture->getBufferQueue());
if (window == NULL)
goto not_valid_surface;
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index 6f71868..e5a31e5 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -28,6 +28,7 @@
#include <android_runtime/android_graphics_SurfaceTexture.h>
#include <gui/Surface.h>
+#include <gui/SurfaceControl.h>
#include <gui/GLConsumer.h>
#include <ui/Rect.h>
@@ -85,7 +86,7 @@
env->GetIntField(surfaceObj, gSurfaceClassInfo.mNativeObject));
}
-jobject android_view_Surface_createFromISurfaceTexture(JNIEnv* env,
+jobject android_view_Surface_createFromIGraphicBufferProducer(JNIEnv* env,
const sp<IGraphicBufferProducer>& bufferProducer) {
if (bufferProducer == NULL) {
return NULL;
@@ -111,7 +112,13 @@
// ----------------------------------------------------------------------------
-static jint nativeCreateFromSurfaceTexture(JNIEnv* env, jobject surfaceObj,
+static bool isSurfaceValid(const sp<Surface>& sur) {
+ return sur != 0 && sur->getISurfaceTexture() != 0;
+}
+
+// ----------------------------------------------------------------------------
+
+static jint nativeCreateFromSurfaceTexture(JNIEnv* env, jclass clazz,
jobject surfaceTextureObj) {
sp<GLConsumer> st(SurfaceTexture_getSurfaceTexture(env, surfaceTextureObj));
if (st == NULL) {
@@ -127,28 +134,28 @@
return 0;
}
- surface->incStrong(surfaceObj);
+ surface->incStrong(clazz);
return int(surface.get());
}
-static void nativeRelease(JNIEnv* env, jobject surfaceObj, jint nativeObject) {
+static void nativeRelease(JNIEnv* env, jclass clazz, jint nativeObject) {
sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
- sur->decStrong(surfaceObj);
+ sur->decStrong(clazz);
}
-static void nativeDestroy(JNIEnv* env, jobject surfaceObj, jint nativeObject) {
+static void nativeDestroy(JNIEnv* env, jclass clazz, jint nativeObject) {
sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
- sur->decStrong(surfaceObj);
+ sur->decStrong(clazz);
}
-static jboolean nativeIsValid(JNIEnv* env, jobject surfaceObj, jint nativeObject) {
+static jboolean nativeIsValid(JNIEnv* env, jclass clazz, jint nativeObject) {
sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
- return Surface::isValid(sur) ? JNI_TRUE : JNI_FALSE;
+ return isSurfaceValid(sur) ? JNI_TRUE : JNI_FALSE;
}
-static jboolean nativeIsConsumerRunningBehind(JNIEnv* env, jobject surfaceObj, jint nativeObject) {
+static jboolean nativeIsConsumerRunningBehind(JNIEnv* env, jclass clazz, jint nativeObject) {
sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
- if (!Surface::isValid(sur)) {
+ if (!isSurfaceValid(sur)) {
doThrowIAE(env);
return JNI_FALSE;
}
@@ -176,7 +183,7 @@
static jobject nativeLockCanvas(JNIEnv* env, jobject surfaceObj, jint nativeObject, jobject dirtyRectObj) {
sp<Surface> surface(reinterpret_cast<Surface *>(nativeObject));
- if (!Surface::isValid(surface)) {
+ if (!isSurfaceValid(surface)) {
doThrowIAE(env);
return NULL;
}
@@ -196,9 +203,11 @@
dirtyRegion.set(Rect(0x3FFF, 0x3FFF));
}
- Surface::SurfaceInfo info;
- status_t err = surface->lock(&info, &dirtyRegion);
+ ANativeWindow_Buffer outBuffer;
+ Rect dirtyBounds(dirtyRegion.getBounds());
+ status_t err = surface->lock(&outBuffer, &dirtyBounds);
if (err < 0) {
+ dirtyRegion.set(dirtyBounds);
const char* const exception = (err == NO_MEMORY) ?
OutOfResourcesException :
"java/lang/IllegalArgumentException";
@@ -208,18 +217,18 @@
// Associate a SkCanvas object to this surface
jobject canvasObj = env->GetObjectField(surfaceObj, gSurfaceClassInfo.mCanvas);
- env->SetIntField(canvasObj, gCanvasClassInfo.mSurfaceFormat, info.format);
+ env->SetIntField(canvasObj, gCanvasClassInfo.mSurfaceFormat, outBuffer.format);
SkCanvas* nativeCanvas = reinterpret_cast<SkCanvas*>(
env->GetIntField(canvasObj, gCanvasClassInfo.mNativeCanvas));
SkBitmap bitmap;
- ssize_t bpr = info.s * bytesPerPixel(info.format);
- bitmap.setConfig(convertPixelFormat(info.format), info.w, info.h, bpr);
- if (info.format == PIXEL_FORMAT_RGBX_8888) {
+ ssize_t bpr = outBuffer.stride * bytesPerPixel(outBuffer.format);
+ bitmap.setConfig(convertPixelFormat(outBuffer.format), outBuffer.width, outBuffer.height, bpr);
+ if (outBuffer.format == PIXEL_FORMAT_RGBX_8888) {
bitmap.setIsOpaque(true);
}
- if (info.w > 0 && info.h > 0) {
- bitmap.setPixels(info.bits);
+ if (outBuffer.width > 0 && outBuffer.height > 0) {
+ bitmap.setPixels(outBuffer.bits);
} else {
// be safe with an empty bitmap.
bitmap.setPixels(NULL);
@@ -263,7 +272,7 @@
}
sp<Surface> surface(reinterpret_cast<Surface *>(nativeObject));
- if (!Surface::isValid(surface)) {
+ if (!isSurfaceValid(surface)) {
return;
}
@@ -284,7 +293,7 @@
// ----------------------------------------------------------------------------
-static jint nativeCopyFrom(JNIEnv* env, jobject surfaceObj,
+static jint nativeCopyFrom(JNIEnv* env, jclass clazz,
jint nativeObject, jint surfaceControlNativeObj) {
/*
* This is used by the WindowManagerService just after constructing
@@ -295,18 +304,18 @@
sp<SurfaceControl> ctrl(reinterpret_cast<SurfaceControl *>(surfaceControlNativeObj));
sp<Surface> other(ctrl->getSurface());
if (other != NULL) {
- other->incStrong(surfaceObj);
+ other->incStrong(clazz);
}
sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject));
if (sur != NULL) {
- sur->decStrong(surfaceObj);
+ sur->decStrong(clazz);
}
return int(other.get());
}
-static jint nativeReadFromParcel(JNIEnv* env, jobject surfaceObj,
+static jint nativeReadFromParcel(JNIEnv* env, jclass clazz,
jint nativeObject, jobject parcelObj) {
Parcel* parcel = parcelForJavaObject(env, parcelObj);
if (parcel == NULL) {
@@ -315,16 +324,16 @@
}
sp<Surface> self(reinterpret_cast<Surface *>(nativeObject));
if (self != NULL) {
- self->decStrong(surfaceObj);
+ self->decStrong(clazz);
}
sp<Surface> sur(Surface::readFromParcel(*parcel));
if (sur != NULL) {
- sur->incStrong(surfaceObj);
+ sur->incStrong(clazz);
}
return int(sur.get());
}
-static void nativeWriteToParcel(JNIEnv* env, jobject surfaceObj,
+static void nativeWriteToParcel(JNIEnv* env, jclass clazz,
jint nativeObject, jobject parcelObj) {
Parcel* parcel = parcelForJavaObject(env, parcelObj);
if (parcel == NULL) {
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 7398895..e477e54 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -120,7 +120,7 @@
// ----------------------------------------------------------------------------
-static jint nativeCreate(JNIEnv* env, jobject surfaceObj, jobject sessionObj,
+static jint nativeCreate(JNIEnv* env, jclass clazz, jobject sessionObj,
jstring nameStr, jint w, jint h, jint format, jint flags) {
ScopedUtfChars name(env, nameStr);
sp<SurfaceComposerClient> client(android_view_SurfaceSession_getClient(env, sessionObj));
@@ -130,19 +130,19 @@
jniThrowException(env, OutOfResourcesException, NULL);
return 0;
}
- surface->incStrong(surfaceObj);
+ surface->incStrong(clazz);
return int(surface.get());
}
-static void nativeRelease(JNIEnv* env, jobject surfaceObj, jint nativeObject) {
+static void nativeRelease(JNIEnv* env, jclass clazz, jint nativeObject) {
sp<SurfaceControl> ctrl(reinterpret_cast<SurfaceControl *>(nativeObject));
- ctrl->decStrong(surfaceObj);
+ ctrl->decStrong(clazz);
}
-static void nativeDestroy(JNIEnv* env, jobject surfaceObj, jint nativeObject) {
+static void nativeDestroy(JNIEnv* env, jclass clazz, jint nativeObject) {
sp<SurfaceControl> ctrl(reinterpret_cast<SurfaceControl *>(nativeObject));
ctrl->clear();
- ctrl->decStrong(surfaceObj);
+ ctrl->decStrong(clazz);
}
static inline SkBitmap::Config convertPixelFormat(PixelFormat format) {
@@ -210,7 +210,7 @@
SurfaceComposerClient::setAnimationTransaction();
}
-static void nativeSetLayer(JNIEnv* env, jobject surfaceObj, jint nativeObject, jint zorder) {
+static void nativeSetLayer(JNIEnv* env, jclass clazz, jint nativeObject, jint zorder) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setLayer(zorder);
if (err < 0 && err != NO_INIT) {
@@ -218,7 +218,7 @@
}
}
-static void nativeSetPosition(JNIEnv* env, jobject surfaceObj, jint nativeObject, jfloat x, jfloat y) {
+static void nativeSetPosition(JNIEnv* env, jclass clazz, jint nativeObject, jfloat x, jfloat y) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setPosition(x, y);
if (err < 0 && err != NO_INIT) {
@@ -226,7 +226,7 @@
}
}
-static void nativeSetSize(JNIEnv* env, jobject surfaceObj, jint nativeObject, jint w, jint h) {
+static void nativeSetSize(JNIEnv* env, jclass clazz, jint nativeObject, jint w, jint h) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setSize(w, h);
if (err < 0 && err != NO_INIT) {
@@ -234,7 +234,7 @@
}
}
-static void nativeSetFlags(JNIEnv* env, jobject surfaceObj, jint nativeObject, jint flags, jint mask) {
+static void nativeSetFlags(JNIEnv* env, jclass clazz, jint nativeObject, jint flags, jint mask) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setFlags(flags, mask);
if (err < 0 && err != NO_INIT) {
@@ -242,7 +242,7 @@
}
}
-static void nativeSetTransparentRegionHint(JNIEnv* env, jobject surfaceObj, jint nativeObject, jobject regionObj) {
+static void nativeSetTransparentRegionHint(JNIEnv* env, jclass clazz, jint nativeObject, jobject regionObj) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
SkRegion* region = android_graphics_Region_getSkRegion(env, regionObj);
if (!region) {
@@ -267,7 +267,7 @@
}
}
-static void nativeSetAlpha(JNIEnv* env, jobject surfaceObj, jint nativeObject, jfloat alpha) {
+static void nativeSetAlpha(JNIEnv* env, jclass clazz, jint nativeObject, jfloat alpha) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setAlpha(alpha);
if (err < 0 && err != NO_INIT) {
@@ -275,7 +275,7 @@
}
}
-static void nativeSetMatrix(JNIEnv* env, jobject surfaceObj, jint nativeObject,
+static void nativeSetMatrix(JNIEnv* env, jclass clazz, jint nativeObject,
jfloat dsdx, jfloat dtdx, jfloat dsdy, jfloat dtdy) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setMatrix(dsdx, dtdx, dsdy, dtdy);
@@ -284,7 +284,7 @@
}
}
-static void nativeSetWindowCrop(JNIEnv* env, jobject surfaceObj, jint nativeObject,
+static void nativeSetWindowCrop(JNIEnv* env, jclass clazz, jint nativeObject,
jint l, jint t, jint r, jint b) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
Rect crop(l, t, r, b);
@@ -294,7 +294,7 @@
}
}
-static void nativeSetLayerStack(JNIEnv* env, jobject surfaceObj, jint nativeObject, jint layerStack) {
+static void nativeSetLayerStack(JNIEnv* env, jclass clazz, jint nativeObject, jint layerStack) {
SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject);
status_t err = ctrl->setLayerStack(layerStack);
if (err < 0 && err != NO_INIT) {
@@ -320,7 +320,7 @@
sp<IBinder> token(ibinderForJavaObject(env, tokenObj));
if (token == NULL) return;
sp<Surface> sur(reinterpret_cast<Surface *>(nativeSurfaceObject));
- sp<IGraphicBufferProducer> bufferProducer(sur->getSurfaceTexture());
+ sp<IGraphicBufferProducer> bufferProducer(sur->getIGraphicBufferProducer());
SurfaceComposerClient::setDisplaySurface(token, bufferProducer);
}
diff --git a/core/jni/android_view_TextureView.cpp b/core/jni/android_view_TextureView.cpp
index 87b312f..e75a2d8 100644
--- a/core/jni/android_view_TextureView.cpp
+++ b/core/jni/android_view_TextureView.cpp
@@ -23,7 +23,7 @@
#include <ui/Rect.h>
#include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
#include <SkBitmap.h>
#include <SkCanvas.h>
@@ -102,7 +102,7 @@
jobject surface) {
sp<GLConsumer> glConsumer(SurfaceTexture_getSurfaceTexture(env, surface));
- sp<ANativeWindow> window = new SurfaceTextureClient(glConsumer->getBufferQueue());
+ sp<ANativeWindow> window = new Surface(glConsumer->getBufferQueue());
window->incStrong(0);
SET_INT(textureView, gTextureViewClassInfo.nativeWindow, jint(window.get()));
diff --git a/core/jni/com_google_android_gles_jni_EGLImpl.cpp b/core/jni/com_google_android_gles_jni_EGLImpl.cpp
index 199d5bf..37330ec 100644
--- a/core/jni/com_google_android_gles_jni_EGLImpl.cpp
+++ b/core/jni/com_google_android_gles_jni_EGLImpl.cpp
@@ -28,7 +28,7 @@
#include <gui/Surface.h>
#include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
#include <SkBitmap.h>
#include <SkPixelRef.h>
@@ -355,7 +355,7 @@
sp<GLConsumer> glConsumer(SurfaceTexture_getSurfaceTexture(_env, native_window));
- window = new SurfaceTextureClient(glConsumer->getBufferQueue());
+ window = new Surface(glConsumer->getBufferQueue());
if (window == NULL)
goto not_valid_surface;
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index ac422ea..4cb7888 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -618,7 +618,7 @@
<string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"verander verrekening van netwerkgebruik"</string>
<string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"Laat die program toe om te verander hoe netwerkgebruik teenoor programme gemeet word. Nie vir gebruik deur normale programme nie."</string>
<string name="permlab_accessNotifications" msgid="7673416487873432268">"kry toegang tot kennisgewings"</string>
- <string name="permdesc_accessNotifications" msgid="458457742683431387">"Laat die program toe om kennisgewings te herwin, bestudeer en te verwyder, met inbegrip van daardie kennisgewings wat deur ander programme geplaas is."</string>
+ <string name="permdesc_accessNotifications" msgid="458457742683431387">"Laat die program toe om kennisgewings op te haal, te bestudeer en te verwyder, insluitende die kennisgewings wat deur ander programme geplaas is."</string>
<string name="policylab_limitPassword" msgid="4497420728857585791">"Stel wagwoordreëls"</string>
<string name="policydesc_limitPassword" msgid="3252114203919510394">"Beheer lengte en watter karakters wat in die skermontsluit-wagwoorde gebruik word."</string>
<string name="policylab_watchLogin" msgid="914130646942199503">"Monitor pogings om skerm te ontsluit"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 40fc411..5e3c56b 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -1291,7 +1291,7 @@
<item quantity="one" msgid="8167147081136579439">"1 αποτέλεσμα"</item>
<item quantity="other" msgid="4641872797067609177">"<xliff:g id="INDEX">%d</xliff:g> από <xliff:g id="TOTAL">%d</xliff:g>"</item>
</plurals>
- <string name="action_mode_done" msgid="7217581640461922289">"Ολοκληρώθηκε"</string>
+ <string name="action_mode_done" msgid="7217581640461922289">"Τέλος"</string>
<string name="progress_unmounting" product="nosdcard" msgid="3923810448507612746">"Αποσύνδεση του χώρου αποθήκευσης USB..."</string>
<string name="progress_unmounting" product="default" msgid="1327894998409537190">"Αφαίρεση κάρτας SD..."</string>
<string name="progress_erasing" product="nosdcard" msgid="4521573321524340058">"Διαγραφή χώρου αποθήκευσης USB..."</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index a472123..d74810a 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -1062,7 +1062,7 @@
<string name="noApplications" msgid="2991814273936504689">"Egy alkalmazás sem tudja végrehajtani ezt a műveletet."</string>
<string name="aerr_title" msgid="1905800560317137752"></string>
<string name="aerr_application" msgid="932628488013092776">"A(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazás sajnos leállt."</string>
- <string name="aerr_process" msgid="4507058997035697579">"Sajnos a(z) <xliff:g id="PROCESS">%1$s</xliff:g> folyamat leállt."</string>
+ <string name="aerr_process" msgid="4507058997035697579">"Sajnos a <xliff:g id="PROCESS">%1$s</xliff:g> alkalmazás leállt."</string>
<string name="anr_title" msgid="4351948481459135709"></string>
<string name="anr_activity_application" msgid="1904477189057199066">"A(z) <xliff:g id="APPLICATION">%2$s</xliff:g> nem válaszol."\n\n"Szeretné bezárni?"</string>
<string name="anr_activity_process" msgid="5776209883299089767">"A(z) <xliff:g id="ACTIVITY">%1$s</xliff:g> tevékenység nem válaszol."\n\n"Szeretné bezárni?"</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 186eb3e..7f7d6d2 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -1054,7 +1054,7 @@
<string name="loading" msgid="7933681260296021180">"A carregar…"</string>
<string name="capital_on" msgid="1544682755514494298">"Activado"</string>
<string name="capital_off" msgid="6815870386972805832">"Desactivar"</string>
- <string name="whichApplication" msgid="4533185947064773386">"Concluir acção utilizando"</string>
+ <string name="whichApplication" msgid="4533185947064773386">"Concluir ação utilizando"</string>
<string name="alwaysUse" msgid="4583018368000610438">"Utilizar por predefinição para esta acção."</string>
<string name="clearDefaultHintMsg" msgid="3252584689512077257">"Limpar a predefinição nas Definições do Sistema > Aplicações > Transferidas."</string>
<string name="chooseActivity" msgid="7486876147751803333">"Escolha uma ação"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index e7df782..af28134 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -618,7 +618,7 @@
<string name="permlab_modifyNetworkAccounting" msgid="5088217309088729650">"แก้ไขการบันทึกบัญชีการใช้งานเครือข่าย"</string>
<string name="permdesc_modifyNetworkAccounting" msgid="5443412866746198123">"อนุญาตให้แอปพลิเคชันแก้ไขวิธีการบันทึกบัญชีการใช้งานเครือข่ายของแอปพลิเคชัน ไม่ใช้สำหรับแอปพลิเคชันทั่วไป"</string>
<string name="permlab_accessNotifications" msgid="7673416487873432268">"เข้าถึงการแจ้งเตือน"</string>
- <string name="permdesc_accessNotifications" msgid="458457742683431387">"ทำให้แอปสามารถเรียกคืน ตรวจสอบ และล้างการแจ้งเตือนได้ ซึ่งรวมถึงการแจ้งเตือนที่โพสต์โดยแอปอื่นๆ ด้วย"</string>
+ <string name="permdesc_accessNotifications" msgid="458457742683431387">"ทำให้แอปสามารถเรียกดู ตรวจสอบ และล้างการแจ้งเตือนได้ ซึ่งรวมถึงการแจ้งเตือนที่โพสต์โดยแอปอื่นๆ ด้วย"</string>
<string name="policylab_limitPassword" msgid="4497420728857585791">"ตั้งค่ากฎรหัสผ่าน"</string>
<string name="policydesc_limitPassword" msgid="3252114203919510394">"ควบคุมความยาวและอักขระที่อนุญาตให้ใช้ในรหัสผ่านการปลดล็อกหน้าจอ"</string>
<string name="policylab_watchLogin" msgid="914130646942199503">"ตรวจสอบความพยายามในการปลดล็อกหน้าจอ"</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 7f80706..ce5fdc06 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -1062,7 +1062,7 @@
<string name="noApplications" msgid="2991814273936504689">"Жодна програма не може виконати цю дію."</string>
<string name="aerr_title" msgid="1905800560317137752"></string>
<string name="aerr_application" msgid="932628488013092776">"На жаль, програма <xliff:g id="APPLICATION">%1$s</xliff:g> припинила роботу."</string>
- <string name="aerr_process" msgid="4507058997035697579">"На жаль, процес <xliff:g id="PROCESS">%1$s</xliff:g> припинився."</string>
+ <string name="aerr_process" msgid="4507058997035697579">"На жаль, програма <xliff:g id="PROCESS">%1$s</xliff:g> припинила роботу."</string>
<string name="anr_title" msgid="4351948481459135709"></string>
<string name="anr_activity_application" msgid="1904477189057199066">"Програма <xliff:g id="APPLICATION">%2$s</xliff:g> не відповідає."\n\n"Закрити її?"</string>
<string name="anr_activity_process" msgid="5776209883299089767">"Дія <xliff:g id="ACTIVITY">%1$s</xliff:g> не відповідає."\n\n"Закінчити її?"</string>
diff --git a/docs/html/about/versions/jelly-bean.jd b/docs/html/about/versions/jelly-bean.jd
index 6cd6f9d..acb2538 100644
--- a/docs/html/about/versions/jelly-bean.jd
+++ b/docs/html/about/versions/jelly-bean.jd
@@ -331,14 +331,14 @@
appropriate.</p>
<p>For precise control over your app UI, Android 4.2 includes new APIs that let
-you manage layout direction, text direction, text alignment, gravity, and locale
-direction in View components. You can even create custom versions of layout,
-drawables, and other resources for display when a right-to-left script is in
-use.</p>
+you manage layout direction, text direction, text alignment, gravity, and
+locale direction in View components. You can even create custom versions of
+layout, drawables, and other resources for display when a right-to-left script
+is in use.</p>
<p>To help you debug and optimize your custom right-to-left layouts, the
HierarchyViewer tool now lets you see start/end properties, layout direction,
-text direction, and text alignment for all the Views in the hierarchy,</p>
+text direction, and text alignment for all the Views in the hierarchy.</p>
<h2 id="42-intl">Enhancements for international languages</h2>
diff --git a/graphics/jni/android_renderscript_RenderScript.cpp b/graphics/jni/android_renderscript_RenderScript.cpp
index 8830685..5e631af 100644
--- a/graphics/jni/android_renderscript_RenderScript.cpp
+++ b/graphics/jni/android_renderscript_RenderScript.cpp
@@ -43,7 +43,7 @@
#include <rsEnv.h>
#include <gui/Surface.h>
#include <gui/GLConsumer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
#include <android_runtime/android_graphics_SurfaceTexture.h>
//#define LOG_API ALOGE
@@ -247,7 +247,7 @@
} else {
st = SurfaceTexture_getSurfaceTexture(_env, sur);
- window = new SurfaceTextureClient(st->getBufferQueue());
+ window = new Surface(st->getBufferQueue());
}
rsContextSetSurface(con, width, height, window.get());
diff --git a/include/android_runtime/android_view_Surface.h b/include/android_runtime/android_view_Surface.h
index b56aff8..53e8b49 100644
--- a/include/android_runtime/android_view_Surface.h
+++ b/include/android_runtime/android_view_Surface.h
@@ -37,7 +37,7 @@
extern sp<Surface> android_view_Surface_getSurface(JNIEnv* env, jobject surfaceObj);
/* Creates a Surface from an IGraphicBufferProducer. */
-extern jobject android_view_Surface_createFromISurfaceTexture(JNIEnv* env,
+extern jobject android_view_Surface_createFromIGraphicBufferProducer(JNIEnv* env,
const sp<IGraphicBufferProducer>& bufferProducer);
} // namespace android
diff --git a/libs/hwui/Matrix.cpp b/libs/hwui/Matrix.cpp
index 79fae2b..5cec5a8 100644
--- a/libs/hwui/Matrix.cpp
+++ b/libs/hwui/Matrix.cpp
@@ -24,7 +24,6 @@
#include <SkMatrix.h>
-#include "utils/Compare.h"
#include "Matrix.h"
namespace android {
diff --git a/libs/hwui/Patch.h b/libs/hwui/Patch.h
index cab0e54..ee7bf70 100644
--- a/libs/hwui/Patch.h
+++ b/libs/hwui/Patch.h
@@ -25,7 +25,6 @@
#include "Rect.h"
#include "Vertex.h"
-#include "utils/Compare.h"
namespace android {
namespace uirenderer {
diff --git a/libs/hwui/PatchCache.cpp b/libs/hwui/PatchCache.cpp
index 8ee8f5c..f48f857 100644
--- a/libs/hwui/PatchCache.cpp
+++ b/libs/hwui/PatchCache.cpp
@@ -42,6 +42,35 @@
// Caching
///////////////////////////////////////////////////////////////////////////////
+int PatchCache::PatchDescription::compare(
+ const PatchCache::PatchDescription& lhs, const PatchCache::PatchDescription& rhs) {
+ int deltaInt = lhs.bitmapWidth - rhs.bitmapWidth;
+ if (deltaInt != 0) return deltaInt;
+
+ deltaInt = lhs.bitmapHeight - rhs.bitmapHeight;
+ if (deltaInt != 0) return deltaInt;
+
+ if (lhs.pixelWidth < rhs.pixelWidth) return -1;
+ if (lhs.pixelWidth > lhs.pixelWidth) return +1;
+
+ if (lhs.pixelHeight < rhs.pixelHeight) return -1;
+ if (lhs.pixelHeight > lhs.pixelHeight) return +1;
+
+ deltaInt = lhs.xCount - rhs.xCount;
+ if (deltaInt != 0) return deltaInt;
+
+ deltaInt = lhs.yCount - rhs.yCount;
+ if (deltaInt != 0) return deltaInt;
+
+ deltaInt = lhs.emptyCount - rhs.emptyCount;
+ if (deltaInt != 0) return deltaInt;
+
+ deltaInt = lhs.colorKey - rhs.colorKey;
+ if (deltaInt != 0) return deltaInt;
+
+ return 0;
+}
+
void PatchCache::clear() {
size_t count = mCache.size();
for (size_t i = 0; i < count; i++) {
@@ -50,7 +79,7 @@
mCache.clear();
}
-Patch* PatchCache::get(const float bitmapWidth, const float bitmapHeight,
+Patch* PatchCache::get(const uint32_t bitmapWidth, const uint32_t bitmapHeight,
const float pixelWidth, const float pixelHeight,
const int32_t* xDivs, const int32_t* yDivs, const uint32_t* colors,
const uint32_t width, const uint32_t height, const int8_t numColors) {
diff --git a/libs/hwui/PatchCache.h b/libs/hwui/PatchCache.h
index 505798a..0822cba 100644
--- a/libs/hwui/PatchCache.h
+++ b/libs/hwui/PatchCache.h
@@ -19,7 +19,6 @@
#include <utils/KeyedVector.h>
-#include "utils/Compare.h"
#include "Debug.h"
#include "Patch.h"
@@ -47,7 +46,7 @@
PatchCache(uint32_t maxCapacity);
~PatchCache();
- Patch* get(const float bitmapWidth, const float bitmapHeight,
+ Patch* get(const uint32_t bitmapWidth, const uint32_t bitmapHeight,
const float pixelWidth, const float pixelHeight,
const int32_t* xDivs, const int32_t* yDivs, const uint32_t* colors,
const uint32_t width, const uint32_t height, const int8_t numColors);
@@ -70,7 +69,7 @@
xCount(0), yCount(0), emptyCount(0), colorKey(0) {
}
- PatchDescription(const float bitmapWidth, const float bitmapHeight,
+ PatchDescription(const uint32_t bitmapWidth, const uint32_t bitmapHeight,
const float pixelWidth, const float pixelHeight,
const uint32_t xCount, const uint32_t yCount,
const int8_t emptyCount, const uint32_t colorKey):
@@ -80,28 +79,29 @@
emptyCount(emptyCount), colorKey(colorKey) {
}
- bool operator<(const PatchDescription& rhs) const {
- LTE_FLOAT(bitmapWidth) {
- LTE_FLOAT(bitmapHeight) {
- LTE_FLOAT(pixelWidth) {
- LTE_FLOAT(pixelHeight) {
- LTE_INT(xCount) {
- LTE_INT(yCount) {
- LTE_INT(emptyCount) {
- LTE_INT(colorKey) return false;
- }
- }
- }
- }
- }
- }
- }
- return false;
+ static int compare(const PatchDescription& lhs, const PatchDescription& rhs);
+
+ bool operator==(const PatchDescription& other) const {
+ return compare(*this, other) == 0;
+ }
+
+ bool operator!=(const PatchDescription& other) const {
+ return compare(*this, other) != 0;
+ }
+
+ friend inline int strictly_order_type(const PatchDescription& lhs,
+ const PatchDescription& rhs) {
+ return PatchDescription::compare(lhs, rhs) < 0;
+ }
+
+ friend inline int compare_type(const PatchDescription& lhs,
+ const PatchDescription& rhs) {
+ return PatchDescription::compare(lhs, rhs);
}
private:
- float bitmapWidth;
- float bitmapHeight;
+ uint32_t bitmapWidth;
+ uint32_t bitmapHeight;
float pixelWidth;
float pixelHeight;
uint32_t xCount;
diff --git a/libs/hwui/utils/Compare.h b/libs/hwui/utils/Compare.h
deleted file mode 100644
index fdd9acf..0000000
--- a/libs/hwui/utils/Compare.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef ANDROID_HWUI_COMPARE_H
-#define ANDROID_HWUI_COMPARE_H
-
-#include <cmath>
-
-/**
- * Compare floats.
- */
-#define LTE_FLOAT(a) \
- if (a < rhs.a) return true; \
- if (a == rhs.a)
-
-/**
- * Compare integers.
- */
-#define LTE_INT(a) \
- if (a < rhs.a) return true; \
- if (a == rhs.a)
-
-#endif // ANDROID_HWUI_COMPARE_H
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index f8c945b..86700b3 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -28,7 +28,6 @@
#include "JNIHelp.h"
#include <gui/Surface.h>
-#include <gui/SurfaceTextureClient.h>
#include <media/ICrypto.h>
#include <media/stagefright/MediaCodec.h>
@@ -114,9 +113,9 @@
const sp<IGraphicBufferProducer> &bufferProducer,
const sp<ICrypto> &crypto,
int flags) {
- sp<SurfaceTextureClient> client;
+ sp<Surface> client;
if (bufferProducer != NULL) {
- mSurfaceTextureClient = new SurfaceTextureClient(bufferProducer);
+ mSurfaceTextureClient = new Surface(bufferProducer);
} else {
mSurfaceTextureClient.clear();
}
@@ -398,7 +397,7 @@
if (jsurface != NULL) {
sp<Surface> surface(android_view_Surface_getSurface(env, jsurface));
if (surface != NULL) {
- bufferProducer = surface->getSurfaceTexture();
+ bufferProducer = surface->getIGraphicBufferProducer();
} else {
jniThrowException(
env,
diff --git a/media/jni/android_media_MediaCodec.h b/media/jni/android_media_MediaCodec.h
index a9bb9af..f478788 100644
--- a/media/jni/android_media_MediaCodec.h
+++ b/media/jni/android_media_MediaCodec.h
@@ -32,7 +32,7 @@
struct ICrypto;
struct IGraphicBufferProducer;
struct MediaCodec;
-struct SurfaceTextureClient;
+class Surface;
struct JMediaCodec : public RefBase {
JMediaCodec(
@@ -91,7 +91,7 @@
private:
jclass mClass;
jweak mObject;
- sp<SurfaceTextureClient> mSurfaceTextureClient;
+ sp<Surface> mSurfaceTextureClient;
sp<ALooper> mLooper;
sp<MediaCodec> mCodec;
diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp
index 5408a1f..7421022 100644
--- a/media/jni/android_media_MediaPlayer.cpp
+++ b/media/jni/android_media_MediaPlayer.cpp
@@ -273,7 +273,7 @@
if (jsurface) {
sp<Surface> surface(android_view_Surface_getSurface(env, jsurface));
if (surface != NULL) {
- new_st = surface->getSurfaceTexture();
+ new_st = surface->getIGraphicBufferProducer();
if (new_st == NULL) {
jniThrowException(env, "java/lang/IllegalArgumentException",
"The surface does not have a binding SurfaceTexture!");
diff --git a/media/mca/filterfw/jni/jni_gl_environment.cpp b/media/mca/filterfw/jni/jni_gl_environment.cpp
index b64004e..9abf191 100644
--- a/media/mca/filterfw/jni/jni_gl_environment.cpp
+++ b/media/mca/filterfw/jni/jni_gl_environment.cpp
@@ -24,7 +24,7 @@
#include "native/core/gl_env.h"
#include <gui/IGraphicBufferProducer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
#include <utils/Errors.h>
#include <system/window.h>
@@ -34,7 +34,7 @@
using android::MediaRecorder;
using android::sp;
using android::IGraphicBufferProducer;
-using android::SurfaceTextureClient;
+using android::Surface;
class NativeWindowHandle : public WindowHandle {
@@ -290,7 +290,7 @@
<IGraphicBufferProducer> handle.");
return -1;
}
- sp<SurfaceTextureClient> surfaceTC = new SurfaceTextureClient(surfaceMS);
+ sp<Surface> surfaceTC = new Surface(surfaceMS);
// Get the ANativeWindow
sp<ANativeWindow> window = surfaceTC;
diff --git a/media/mca/filterfw/native/core/gl_env.cpp b/media/mca/filterfw/native/core/gl_env.cpp
index 8ed82e2..73768fe 100644
--- a/media/mca/filterfw/native/core/gl_env.cpp
+++ b/media/mca/filterfw/native/core/gl_env.cpp
@@ -161,7 +161,7 @@
// Create dummy surface using a GLConsumer
surfaceTexture_ = new GLConsumer(0);
- window_ = new SurfaceTextureClient(static_cast<sp<IGraphicBufferProducer> >(
+ window_ = new Surface(static_cast<sp<IGraphicBufferProducer> >(
surfaceTexture_->getBufferQueue()));
surfaces_[0] = SurfaceWindowPair(eglCreateWindowSurface(display(), config, window_.get(), NULL), NULL);
diff --git a/media/mca/filterfw/native/core/gl_env.h b/media/mca/filterfw/native/core/gl_env.h
index 3c87195..81e1e9d 100644
--- a/media/mca/filterfw/native/core/gl_env.h
+++ b/media/mca/filterfw/native/core/gl_env.h
@@ -28,7 +28,7 @@
#include <EGL/egl.h>
#include <gui/IGraphicBufferProducer.h>
-#include <gui/SurfaceTextureClient.h>
+#include <gui/Surface.h>
namespace android {
namespace filterfw {
diff --git a/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java b/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java
index a6415b2..89f84fc 100644
--- a/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java
+++ b/packages/SharedStorageBackup/src/com/android/sharedstoragebackup/SharedStorageAgent.java
@@ -4,6 +4,7 @@
import android.app.backup.FullBackup;
import android.app.backup.FullBackupDataOutput;
import android.content.Context;
+import android.os.Environment;
import android.os.ParcelFileDescriptor;
import android.os.storage.StorageManager;
import android.os.storage.StorageVolume;
@@ -11,6 +12,7 @@
import java.io.File;
import java.io.IOException;
+import java.util.HashSet;
public class SharedStorageAgent extends FullBackupAgent {
static final String TAG = "SharedStorageAgent";
@@ -38,13 +40,20 @@
// "primary" shared storage volume is first in the list.
if (mVolumes != null) {
if (DEBUG) Slog.i(TAG, "Backing up " + mVolumes.length + " shared volumes");
+ // Ignore all apps' getExternalFilesDir() content; it is backed up as part of
+ // each app-specific payload.
+ HashSet<String> externalFilesDirFilter = new HashSet<String>();
+ final File externalAndroidRoot = new File(Environment.getExternalStorageDirectory(),
+ Environment.DIRECTORY_ANDROID);
+ externalFilesDirFilter.add(externalAndroidRoot.getCanonicalPath());
+
for (int i = 0; i < mVolumes.length; i++) {
StorageVolume v = mVolumes[i];
// Express the contents of volume N this way in the tar stream:
// shared/N/path/to/file
// The restore will then extract to the given volume
String domain = FullBackup.SHARED_PREFIX + i;
- fullBackupFileTree(null, domain, v.getPath(), null, output);
+ fullBackupFileTree(null, domain, v.getPath(), externalFilesDirFilter, output);
}
}
}
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index a03ca33..a58c9a0 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -196,7 +196,7 @@
<string name="quick_settings_wifi_label" msgid="9135344704899546041">"Wi-Fi"</string>
<string name="quick_settings_wifi_not_connected" msgid="7171904845345573431">"Ej ansluten"</string>
<string name="quick_settings_wifi_no_network" msgid="2221993077220856376">"Inget nätverk"</string>
- <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi är inaktiverat"</string>
+ <string name="quick_settings_wifi_off_label" msgid="7558778100843885864">"Wi-Fi av"</string>
<string name="quick_settings_wifi_display_label" msgid="6893592964463624333">"Trådlös skärm"</string>
<string name="quick_settings_wifi_display_no_connection_label" msgid="2355298740765736918">"Trådlös skärm"</string>
<string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"Ljusstyrka"</string>
diff --git a/services/input/SpriteController.cpp b/services/input/SpriteController.cpp
index 1f3d2cf..3c3b919 100644
--- a/services/input/SpriteController.cpp
+++ b/services/input/SpriteController.cpp
@@ -22,12 +22,14 @@
#include <cutils/log.h>
#include <utils/String8.h>
+#include <gui/Surface.h>
#include <SkBitmap.h>
#include <SkCanvas.h>
#include <SkColor.h>
#include <SkPaint.h>
#include <SkXfermode.h>
+#include <android/native_window.h>
namespace android {
@@ -197,16 +199,16 @@
if (update.state.surfaceControl != NULL && !update.state.surfaceDrawn
&& update.state.wantSurfaceVisible()) {
sp<Surface> surface = update.state.surfaceControl->getSurface();
- Surface::SurfaceInfo surfaceInfo;
- status_t status = surface->lock(&surfaceInfo);
+ ANativeWindow_Buffer outBuffer;
+ status_t status = surface->lock(&outBuffer, NULL);
if (status) {
ALOGE("Error %d locking sprite surface before drawing.", status);
} else {
SkBitmap surfaceBitmap;
- ssize_t bpr = surfaceInfo.s * bytesPerPixel(surfaceInfo.format);
+ ssize_t bpr = outBuffer.stride * bytesPerPixel(outBuffer.format);
surfaceBitmap.setConfig(SkBitmap::kARGB_8888_Config,
- surfaceInfo.w, surfaceInfo.h, bpr);
- surfaceBitmap.setPixels(surfaceInfo.bits);
+ outBuffer.width, outBuffer.height, bpr);
+ surfaceBitmap.setPixels(outBuffer.bits);
SkCanvas surfaceCanvas;
surfaceCanvas.setBitmapDevice(surfaceBitmap);
@@ -215,15 +217,15 @@
paint.setXfermodeMode(SkXfermode::kSrc_Mode);
surfaceCanvas.drawBitmap(update.state.icon.bitmap, 0, 0, &paint);
- if (surfaceInfo.w > uint32_t(update.state.icon.bitmap.width())) {
+ if (outBuffer.width > uint32_t(update.state.icon.bitmap.width())) {
paint.setColor(0); // transparent fill color
surfaceCanvas.drawRectCoords(update.state.icon.bitmap.width(), 0,
- surfaceInfo.w, update.state.icon.bitmap.height(), paint);
+ outBuffer.width, update.state.icon.bitmap.height(), paint);
}
- if (surfaceInfo.h > uint32_t(update.state.icon.bitmap.height())) {
+ if (outBuffer.height > uint32_t(update.state.icon.bitmap.height())) {
paint.setColor(0); // transparent fill color
surfaceCanvas.drawRectCoords(0, update.state.icon.bitmap.height(),
- surfaceInfo.w, surfaceInfo.h, paint);
+ outBuffer.width, outBuffer.height, paint);
}
status = surface->unlockAndPost();
@@ -371,8 +373,7 @@
sp<SurfaceControl> surfaceControl = mSurfaceComposerClient->createSurface(
String8("Sprite"), width, height, PIXEL_FORMAT_RGBA_8888,
ISurfaceComposerClient::eHidden);
- if (surfaceControl == NULL || !surfaceControl->isValid()
- || !surfaceControl->getSurface()->isValid()) {
+ if (surfaceControl == NULL || !surfaceControl->isValid()) {
ALOGE("Error creating sprite surface.");
return NULL;
}
diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
index 9c02a46..9c518a1 100644
--- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -718,7 +718,7 @@
synchronized (mLock) {
// Disconnect from services for the old user.
UserState oldUserState = getUserStateLocked(mCurrentUserId);
- unbindAllServicesLocked(oldUserState);
+ oldUserState.onSwitchToAnotherUser();
// Disable the local managers for the old user.
if (oldUserState.mClients.getRegisteredCallbackCount() > 0) {
@@ -737,11 +737,14 @@
if (userState.mUiAutomationService != null) {
// Switching users disables the UI automation service.
userState.mUiAutomationService.binderDied();
- } else if (readConfigurationForUserStateLocked(userState)) {
- // Update the user state if needed.
- onUserStateChangedLocked(userState);
}
+ readConfigurationForUserStateLocked(userState);
+ // Even if reading did not yield change, we have to update
+ // the state since the context in which the current user
+ // state was used has changed since it was inactive.
+ onUserStateChangedLocked(userState);
+
if (announceNewUser) {
// Schedule announcement of the current user if needed.
mMainHandler.sendEmptyMessageDelayed(MainHandler.MSG_ANNOUNCE_NEW_USER_IF_NEEDED,
@@ -2565,11 +2568,21 @@
private class UserState {
public final int mUserId;
- public final CopyOnWriteArrayList<Service> mBoundServices = new CopyOnWriteArrayList<Service>();
+ // Non-transient state.
public final RemoteCallbackList<IAccessibilityManagerClient> mClients =
new RemoteCallbackList<IAccessibilityManagerClient>();
+ public final SparseArray<AccessibilityConnectionWrapper> mInteractionConnections =
+ new SparseArray<AccessibilityConnectionWrapper>();
+
+ public final SparseArray<IBinder> mWindowTokens = new SparseArray<IBinder>();
+
+ // Transient state.
+
+ public final CopyOnWriteArrayList<Service> mBoundServices =
+ new CopyOnWriteArrayList<Service>();
+
public final Map<ComponentName, Service> mComponentNameToServiceMap =
new HashMap<ComponentName, Service>();
@@ -2583,15 +2596,9 @@
public final Set<ComponentName> mTouchExplorationGrantedServices =
new HashSet<ComponentName>();
- public final SparseArray<AccessibilityConnectionWrapper>
- mInteractionConnections =
- new SparseArray<AccessibilityConnectionWrapper>();
-
- public final SparseArray<IBinder> mWindowTokens = new SparseArray<IBinder>();
-
public int mHandledFeedbackTypes = 0;
- public int mLastSentClientState;
+ public int mLastSentClientState = -1;
public boolean mIsAccessibilityEnabled;
public boolean mIsTouchExplorationEnabled;
@@ -2616,6 +2623,34 @@
}
return clientState;
}
+
+ public void onSwitchToAnotherUser() {
+ // Clear UI test automation state.
+ if (mUiAutomationService != null) {
+ mUiAutomationService.binderDied();
+ mUiAutomationService = null;
+ mUiAutomationServiceClient = null;
+ }
+
+ // Unbind all services.
+ unbindAllServicesLocked(this);
+
+ // Clear service management state.
+ mBoundServices.clear();
+ mBindingServices.clear();
+
+ // Clear event management state.
+ mHandledFeedbackTypes = 0;
+ mLastSentClientState = -1;
+
+ // Clear state persisted in settings.
+ mEnabledServices.clear();
+ mTouchExplorationGrantedServices.clear();
+ mIsAccessibilityEnabled = false;
+ mIsTouchExplorationEnabled = false;
+ mIsEnhancedWebAccessibilityEnabled = false;
+ mIsDisplayMagnificationEnabled = false;
+ }
}
private final class AccessibilityContentObserver extends ContentObserver {
diff --git a/services/java/com/android/server/power/ElectronBeam.java b/services/java/com/android/server/power/ElectronBeam.java
index 2828e5e..e302e83 100644
--- a/services/java/com/android/server/power/ElectronBeam.java
+++ b/services/java/com/android/server/power/ElectronBeam.java
@@ -713,17 +713,17 @@
*/
private static final class NaturalSurfaceLayout implements DisplayTransactionListener {
private final DisplayManagerService mDisplayManager;
- private SurfaceControl mSurface;
+ private SurfaceControl mSurfaceControl;
- public NaturalSurfaceLayout(DisplayManagerService displayManager, SurfaceControl surface) {
+ public NaturalSurfaceLayout(DisplayManagerService displayManager, SurfaceControl surfaceControl) {
mDisplayManager = displayManager;
- mSurface = surface;
+ mSurfaceControl = surfaceControl;
mDisplayManager.registerDisplayTransactionListener(this);
}
public void dispose() {
synchronized (this) {
- mSurface = null;
+ mSurfaceControl = null;
}
mDisplayManager.unregisterDisplayTransactionListener(this);
}
@@ -731,27 +731,27 @@
@Override
public void onDisplayTransaction() {
synchronized (this) {
- if (mSurface == null) {
+ if (mSurfaceControl == null) {
return;
}
DisplayInfo displayInfo = mDisplayManager.getDisplayInfo(Display.DEFAULT_DISPLAY);
switch (displayInfo.rotation) {
case Surface.ROTATION_0:
- mSurface.setPosition(0, 0);
- mSurface.setMatrix(1, 0, 0, 1);
+ mSurfaceControl.setPosition(0, 0);
+ mSurfaceControl.setMatrix(1, 0, 0, 1);
break;
case Surface.ROTATION_90:
- mSurface.setPosition(0, displayInfo.logicalHeight);
- mSurface.setMatrix(0, -1, 1, 0);
+ mSurfaceControl.setPosition(0, displayInfo.logicalHeight);
+ mSurfaceControl.setMatrix(0, -1, 1, 0);
break;
case Surface.ROTATION_180:
- mSurface.setPosition(displayInfo.logicalWidth, displayInfo.logicalHeight);
- mSurface.setMatrix(-1, 0, 0, -1);
+ mSurfaceControl.setPosition(displayInfo.logicalWidth, displayInfo.logicalHeight);
+ mSurfaceControl.setMatrix(-1, 0, 0, -1);
break;
case Surface.ROTATION_270:
- mSurface.setPosition(displayInfo.logicalWidth, 0);
- mSurface.setMatrix(0, 1, -1, 0);
+ mSurfaceControl.setPosition(displayInfo.logicalWidth, 0);
+ mSurfaceControl.setMatrix(0, 1, -1, 0);
break;
}
}
diff --git a/services/java/com/android/server/wm/AppWindowToken.java b/services/java/com/android/server/wm/AppWindowToken.java
index 8fd5209..8cc1d02 100644
--- a/services/java/com/android/server/wm/AppWindowToken.java
+++ b/services/java/com/android/server/wm/AppWindowToken.java
@@ -157,7 +157,7 @@
+ win.isDrawnLw()
+ ", isAnimating=" + win.mWinAnimator.isAnimating());
if (!win.isDrawnLw()) {
- Slog.v(WindowManagerService.TAG, "Not displayed: s=" + win.mWinAnimator.mSurface
+ Slog.v(WindowManagerService.TAG, "Not displayed: s=" + win.mWinAnimator.mSurfaceControl
+ " pv=" + win.mPolicyVisibility
+ " mDrawState=" + win.mWinAnimator.mDrawState
+ " ah=" + win.mAttachedHidden
diff --git a/services/java/com/android/server/wm/BlackFrame.java b/services/java/com/android/server/wm/BlackFrame.java
index a197840..774b165 100644
--- a/services/java/com/android/server/wm/BlackFrame.java
+++ b/services/java/com/android/server/wm/BlackFrame.java
@@ -37,24 +37,22 @@
final SurfaceControl surface;
BlackSurface(SurfaceSession session, int layer, int l, int t, int r, int b, int layerStack)
- throws Surface.OutOfResourcesException {
+ throws SurfaceControl.OutOfResourcesException {
left = l;
top = t;
this.layer = layer;
int w = r-l;
int h = b-t;
- try {
- if (WindowManagerService.DEBUG_SURFACE_TRACE) {
- surface = new WindowStateAnimator.SurfaceTrace(session, "BlackSurface("
- + l + ", " + t + ")",
- w, h, PixelFormat.OPAQUE, SurfaceControl.FX_SURFACE_DIM | SurfaceControl.HIDDEN);
- } else {
- surface = new SurfaceControl(session, "BlackSurface",
- w, h, PixelFormat.OPAQUE, SurfaceControl.FX_SURFACE_DIM | SurfaceControl.HIDDEN);
- }
- } catch (SurfaceControl.OutOfResourcesException e) {
- throw new Surface.OutOfResourcesException(e.getMessage());
+
+ if (WindowManagerService.DEBUG_SURFACE_TRACE) {
+ surface = new WindowStateAnimator.SurfaceTrace(session, "BlackSurface("
+ + l + ", " + t + ")",
+ w, h, PixelFormat.OPAQUE, SurfaceControl.FX_SURFACE_DIM | SurfaceControl.HIDDEN);
+ } else {
+ surface = new SurfaceControl(session, "BlackSurface",
+ w, h, PixelFormat.OPAQUE, SurfaceControl.FX_SURFACE_DIM | SurfaceControl.HIDDEN);
}
+
surface.setAlpha(1);
surface.setLayerStack(layerStack);
surface.setLayer(layer);
@@ -109,7 +107,7 @@
}
public BlackFrame(SurfaceSession session, Rect outer, Rect inner,
- int layer, final int layerStack) throws Surface.OutOfResourcesException {
+ int layer, final int layerStack) throws SurfaceControl.OutOfResourcesException {
boolean success = false;
mOuterRect = new Rect(outer);
diff --git a/services/java/com/android/server/wm/DisplayMagnifier.java b/services/java/com/android/server/wm/DisplayMagnifier.java
index 55c6fa6..0f51028 100644
--- a/services/java/com/android/server/wm/DisplayMagnifier.java
+++ b/services/java/com/android/server/wm/DisplayMagnifier.java
@@ -491,15 +491,15 @@
private boolean mInvalidated;
public ViewportWindow(Context context) {
- SurfaceControl surface = null;
+ SurfaceControl surfaceControl = null;
try {
mWindowManager.getDefaultDisplay().getRealSize(mTempPoint);
- surface = new SurfaceControl(mWindowManagerService.mFxSession, SURFACE_TITLE,
+ surfaceControl = new SurfaceControl(mWindowManagerService.mFxSession, SURFACE_TITLE,
mTempPoint.x, mTempPoint.y, PixelFormat.TRANSLUCENT, SurfaceControl.HIDDEN);
} catch (SurfaceControl.OutOfResourcesException oore) {
/* ignore */
}
- mSurfaceControl = surface;
+ mSurfaceControl = surfaceControl;
mSurfaceControl.setLayerStack(mWindowManager.getDefaultDisplay().getLayerStack());
mSurfaceControl.setLayer(mWindowManagerService.mPolicy.windowTypeToLayerLw(
WindowManager.LayoutParams.TYPE_MAGNIFICATION_OVERLAY)
diff --git a/services/java/com/android/server/wm/DragState.java b/services/java/com/android/server/wm/DragState.java
index 63f306f..745b886 100644
--- a/services/java/com/android/server/wm/DragState.java
+++ b/services/java/com/android/server/wm/DragState.java
@@ -46,7 +46,7 @@
class DragState {
final WindowManagerService mService;
IBinder mToken;
- SurfaceControl mSurface;
+ SurfaceControl mSurfaceControl;
int mFlags;
IBinder mLocalWin;
ClipData mData;
@@ -69,17 +69,17 @@
int flags, IBinder localWin) {
mService = service;
mToken = token;
- mSurface = surface;
+ mSurfaceControl = surface;
mFlags = flags;
mLocalWin = localWin;
mNotifiedWindows = new ArrayList<WindowState>();
}
void reset() {
- if (mSurface != null) {
- mSurface.destroy();
+ if (mSurfaceControl != null) {
+ mSurfaceControl.destroy();
}
- mSurface = null;
+ mSurfaceControl = null;
mFlags = 0;
mLocalWin = null;
mToken = null;
@@ -296,9 +296,9 @@
WindowManagerService.TAG, ">>> OPEN TRANSACTION notifyMoveLw");
SurfaceControl.openTransaction();
try {
- mSurface.setPosition(x - mThumbOffsetX, y - mThumbOffsetY);
+ mSurfaceControl.setPosition(x - mThumbOffsetX, y - mThumbOffsetY);
if (WindowManagerService.SHOW_TRANSACTIONS) Slog.i(WindowManagerService.TAG, " DRAG "
- + mSurface + ": pos=(" +
+ + mSurfaceControl + ": pos=(" +
(int)(x - mThumbOffsetX) + "," + (int)(y - mThumbOffsetY) + ")");
} finally {
SurfaceControl.closeTransaction();
diff --git a/services/java/com/android/server/wm/ScreenRotationAnimation.java b/services/java/com/android/server/wm/ScreenRotationAnimation.java
index 05397ac..5d4ab56 100644
--- a/services/java/com/android/server/wm/ScreenRotationAnimation.java
+++ b/services/java/com/android/server/wm/ScreenRotationAnimation.java
@@ -44,7 +44,7 @@
final Context mContext;
final Display mDisplay;
- SurfaceControl mSurface;
+ SurfaceControl mSurfaceControl;
BlackFrame mCustomBlackFrame;
BlackFrame mExitingBlackFrame;
BlackFrame mEnteringBlackFrame;
@@ -128,7 +128,7 @@
long mHalfwayPoint;
public void printTo(String prefix, PrintWriter pw) {
- pw.print(prefix); pw.print("mSurface="); pw.print(mSurface);
+ pw.print(prefix); pw.print("mSurface="); pw.print(mSurfaceControl);
pw.print(" mWidth="); pw.print(mWidth);
pw.print(" mHeight="); pw.println(mHeight);
if (USE_CUSTOM_BLACK_FRAME) {
@@ -220,25 +220,25 @@
try {
try {
if (WindowManagerService.DEBUG_SURFACE_TRACE) {
- mSurface = new SurfaceTrace(session, "FreezeSurface",
+ mSurfaceControl = new SurfaceTrace(session, "FreezeSurface",
mWidth, mHeight,
PixelFormat.OPAQUE, SurfaceControl.FX_SURFACE_SCREENSHOT | SurfaceControl.HIDDEN);
} else {
- mSurface = new SurfaceControl(session, "FreezeSurface",
+ mSurfaceControl = new SurfaceControl(session, "FreezeSurface",
mWidth, mHeight,
PixelFormat.OPAQUE, SurfaceControl.FX_SURFACE_SCREENSHOT | SurfaceControl.HIDDEN);
}
- mSurface.setLayerStack(mDisplay.getLayerStack());
- mSurface.setLayer(FREEZE_LAYER + 1);
- mSurface.setAlpha(0);
- mSurface.show();
+ mSurfaceControl.setLayerStack(mDisplay.getLayerStack());
+ mSurfaceControl.setLayer(FREEZE_LAYER + 1);
+ mSurfaceControl.setAlpha(0);
+ mSurfaceControl.show();
} catch (SurfaceControl.OutOfResourcesException e) {
Slog.w(TAG, "Unable to allocate freeze surface", e);
}
if (WindowManagerService.SHOW_TRANSACTIONS ||
WindowManagerService.SHOW_SURFACE_ALLOC) Slog.i(WindowManagerService.TAG,
- " FREEZE " + mSurface + ": CREATE");
+ " FREEZE " + mSurfaceControl + ": CREATE");
setRotationInTransaction(originalRotation);
} finally {
@@ -251,7 +251,7 @@
}
boolean hasScreenshot() {
- return mSurface != null;
+ return mSurfaceControl != null;
}
static int deltaRotation(int oldRotation, int newRotation) {
@@ -261,13 +261,13 @@
}
private void setSnapshotTransformInTransaction(Matrix matrix, float alpha) {
- if (mSurface != null) {
+ if (mSurfaceControl != null) {
matrix.getValues(mTmpFloats);
- mSurface.setPosition(mTmpFloats[Matrix.MTRANS_X], mTmpFloats[Matrix.MTRANS_Y]);
- mSurface.setMatrix(
+ mSurfaceControl.setPosition(mTmpFloats[Matrix.MTRANS_X], mTmpFloats[Matrix.MTRANS_Y]);
+ mSurfaceControl.setMatrix(
mTmpFloats[Matrix.MSCALE_X], mTmpFloats[Matrix.MSKEW_Y],
mTmpFloats[Matrix.MSKEW_X], mTmpFloats[Matrix.MSCALE_Y]);
- mSurface.setAlpha(alpha);
+ mSurfaceControl.setAlpha(alpha);
if (DEBUG_TRANSFORMS) {
float[] srcPnts = new float[] { 0, 0, mWidth, mHeight };
float[] dstPnts = new float[4];
@@ -333,7 +333,7 @@
*/
private boolean startAnimation(SurfaceSession session, long maxAnimationDuration,
float animationScale, int finalWidth, int finalHeight, boolean dismissing) {
- if (mSurface == null) {
+ if (mSurfaceControl == null) {
// Can't do animation.
return false;
}
@@ -509,7 +509,7 @@
mCustomBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER + 3,
layerStack);
mCustomBlackFrame.setMatrix(mFrameInitialMatrix);
- } catch (Surface.OutOfResourcesException e) {
+ } catch (SurfaceControl.OutOfResourcesException e) {
Slog.w(TAG, "Unable to allocate black surface", e);
} finally {
SurfaceControl.closeTransaction();
@@ -539,7 +539,7 @@
mExitingBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER + 2,
layerStack);
mExitingBlackFrame.setMatrix(mFrameInitialMatrix);
- } catch (Surface.OutOfResourcesException e) {
+ } catch (SurfaceControl.OutOfResourcesException e) {
Slog.w(TAG, "Unable to allocate black surface", e);
} finally {
SurfaceControl.closeTransaction();
@@ -561,7 +561,7 @@
Rect inner = new Rect(0, 0, finalWidth, finalHeight);
mEnteringBlackFrame = new BlackFrame(session, outer, inner, FREEZE_LAYER,
layerStack);
- } catch (Surface.OutOfResourcesException e) {
+ } catch (SurfaceControl.OutOfResourcesException e) {
Slog.w(TAG, "Unable to allocate black surface", e);
} finally {
SurfaceControl.closeTransaction();
@@ -580,7 +580,7 @@
public boolean dismiss(SurfaceSession session, long maxAnimationDuration,
float animationScale, int finalWidth, int finalHeight) {
if (DEBUG_STATE) Slog.v(TAG, "Dismiss!");
- if (mSurface == null) {
+ if (mSurfaceControl == null) {
// Can't do animation.
return false;
}
@@ -598,12 +598,12 @@
public void kill() {
if (DEBUG_STATE) Slog.v(TAG, "Kill!");
- if (mSurface != null) {
+ if (mSurfaceControl != null) {
if (WindowManagerService.SHOW_TRANSACTIONS ||
WindowManagerService.SHOW_SURFACE_ALLOC) Slog.i(WindowManagerService.TAG,
- " FREEZE " + mSurface + ": DESTROY");
- mSurface.destroy();
- mSurface = null;
+ " FREEZE " + mSurfaceControl + ": DESTROY");
+ mSurfaceControl.destroy();
+ mSurfaceControl = null;
}
if (mCustomBlackFrame != null) {
mCustomBlackFrame.kill();
@@ -861,10 +861,10 @@
return;
}
- if (mSurface != null) {
+ if (mSurfaceControl != null) {
if (!mMoreStartExit && !mMoreFinishExit && !mMoreRotateExit) {
if (DEBUG_STATE) Slog.v(TAG, "Exit animations done, hiding screenshot surface");
- mSurface.hide();
+ mSurfaceControl.hide();
}
}
diff --git a/services/java/com/android/server/wm/Session.java b/services/java/com/android/server/wm/Session.java
index 7a0fa16..e82068c 100644
--- a/services/java/com/android/server/wm/Session.java
+++ b/services/java/com/android/server/wm/Session.java
@@ -314,17 +314,17 @@
mService.mDragState.mThumbOffsetY = thumbCenterY;
// Make the surface visible at the proper location
- final SurfaceControl surface = mService.mDragState.mSurface;
+ final SurfaceControl surfaceControl = mService.mDragState.mSurfaceControl;
if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS) Slog.i(
WindowManagerService.TAG, ">>> OPEN TRANSACTION performDrag");
SurfaceControl.openTransaction();
try {
- surface.setPosition(touchX - thumbCenterX,
+ surfaceControl.setPosition(touchX - thumbCenterX,
touchY - thumbCenterY);
- surface.setAlpha(.7071f);
- surface.setLayer(mService.mDragState.getDragLayerLw());
- surface.setLayerStack(display.getLayerStack());
- surface.show();
+ surfaceControl.setAlpha(.7071f);
+ surfaceControl.setLayer(mService.mDragState.getDragLayerLw());
+ surfaceControl.setLayerStack(display.getLayerStack());
+ surfaceControl.show();
} finally {
SurfaceControl.closeTransaction();
if (WindowManagerService.SHOW_LIGHT_TRANSACTIONS) Slog.i(
diff --git a/services/java/com/android/server/wm/WindowAnimator.java b/services/java/com/android/server/wm/WindowAnimator.java
index a2c44ef..67daf75 100644
--- a/services/java/com/android/server/wm/WindowAnimator.java
+++ b/services/java/com/android/server/wm/WindowAnimator.java
@@ -225,7 +225,7 @@
WindowStateAnimator winAnimator = win.mWinAnimator;
final int flags = winAnimator.mAttrFlags;
- if (winAnimator.mSurface != null) {
+ if (winAnimator.mSurfaceControl != null) {
final boolean wasAnimating = winAnimator.mWasAnimating;
final boolean nowAnimating = winAnimator.stepAnimationLocked(mCurrentTime);
@@ -373,7 +373,7 @@
for (int i = windows.size() - 1; i >= 0; i--) {
final WindowState win = windows.get(i);
WindowStateAnimator winAnimator = win.mWinAnimator;
- if (winAnimator.mSurface == null) {
+ if (winAnimator.mSurfaceControl == null) {
continue;
}
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index 7b83c24..d38273d 100644
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -1112,7 +1112,7 @@
if (DEBUG_INPUT_METHOD) {
Slog.i(TAG, "isVisibleOrAdding " + w + ": " + w.isVisibleOrAdding());
if (!w.isVisibleOrAdding()) {
- Slog.i(TAG, " mSurface=" + w.mWinAnimator.mSurface
+ Slog.i(TAG, " mSurface=" + w.mWinAnimator.mSurfaceControl
+ " relayoutCalled=" + w.mRelayoutCalled + " viewVis=" + w.mViewVisibility
+ " policyVis=" + w.mPolicyVisibility
+ " policyVisAfterAnim=" + w.mPolicyVisibilityAfterAnim
@@ -2278,14 +2278,14 @@
TAG, "Remove " + win + " client="
+ Integer.toHexString(System.identityHashCode(
win.mClient.asBinder()))
- + ", surface=" + win.mWinAnimator.mSurface);
+ + ", surface=" + win.mWinAnimator.mSurfaceControl);
final long origId = Binder.clearCallingIdentity();
win.disposeInputChannel();
if (DEBUG_APP_TRANSITIONS) Slog.v(
- TAG, "Remove " + win + ": mSurface=" + win.mWinAnimator.mSurface
+ TAG, "Remove " + win + ": mSurface=" + win.mWinAnimator.mSurfaceControl
+ " mExiting=" + win.mExiting
+ " isAnimating=" + win.mWinAnimator.isAnimating()
+ " app-animation="
@@ -2775,9 +2775,9 @@
if (!win.mHasSurface) {
surfaceChanged = true;
}
- SurfaceControl surface = winAnimator.createSurfaceLocked();
- if (surface != null) {
- outSurface.copyFrom(surface);
+ SurfaceControl surfaceControl = winAnimator.createSurfaceLocked();
+ if (surfaceControl != null) {
+ outSurface.copyFrom(surfaceControl);
if (SHOW_TRANSACTIONS) Slog.i(TAG,
" OUT SURFACE " + outSurface + ": copied");
} else {
@@ -2817,7 +2817,7 @@
}
} else {
winAnimator.mEnterAnimationPending = false;
- if (winAnimator.mSurface != null) {
+ if (winAnimator.mSurfaceControl != null) {
if (DEBUG_VISIBILITY) Slog.i(TAG, "Relayout invis " + win
+ ": mExiting=" + win.mExiting);
// If we are not currently running the exit animation, we
@@ -7935,15 +7935,15 @@
// TODO(multi-display): support other displays
final DisplayContent displayContent = getDefaultDisplayContentLocked();
final Display display = displayContent.getDisplay();
- SurfaceControl surface = new SurfaceControl(mFxSession,
+ SurfaceControl surfaceControl = new SurfaceControl(mFxSession,
"thumbnail anim",
dirty.width(), dirty.height(),
PixelFormat.TRANSLUCENT, SurfaceControl.HIDDEN);
- surface.setLayerStack(display.getLayerStack());
- appAnimator.thumbnail = surface;
- if (SHOW_TRANSACTIONS) Slog.i(TAG, " THUMBNAIL " + surface + ": CREATE");
+ surfaceControl.setLayerStack(display.getLayerStack());
+ appAnimator.thumbnail = surfaceControl;
+ if (SHOW_TRANSACTIONS) Slog.i(TAG, " THUMBNAIL " + surfaceControl + ": CREATE");
Surface drawSurface = new Surface();
- drawSurface.copyFrom(surface);
+ drawSurface.copyFrom(surfaceControl);
Canvas c = drawSurface.lockCanvas(dirty);
c.drawBitmap(nextAppTransitionThumbnail, 0, 0, null);
drawSurface.unlockCanvasAndPost(c);
@@ -8064,7 +8064,7 @@
if (w.mOrientationChanging) {
if (DEBUG_SURFACE_TRACE || DEBUG_ANIM || DEBUG_ORIENTATION) Slog.v(TAG,
"Orientation start waiting for draw mDrawState=DRAW_PENDING in "
- + w + ", surface " + winAnimator.mSurface);
+ + w + ", surface " + winAnimator.mSurfaceControl);
winAnimator.mDrawState = WindowStateAnimator.DRAW_PENDING;
if (w.mAppToken != null) {
w.mAppToken.allDrawn = false;
@@ -8081,7 +8081,7 @@
if (w.isDrawnLw()) {
if (DEBUG_ORIENTATION) Slog.v(TAG,
"Orientation not waiting for draw in "
- + w + ", surface " + winAnimator.mSurface);
+ + w + ", surface " + winAnimator.mSurfaceControl);
w.mOrientationChanging = false;
}
}
@@ -8429,7 +8429,7 @@
Slog.v(TAG, "Eval win " + w + ": isDrawn=" + w.isDrawnLw()
+ ", isAnimating=" + winAnimator.isAnimating());
if (!w.isDrawnLw()) {
- Slog.v(TAG, "Not displayed: s=" + winAnimator.mSurface
+ Slog.v(TAG, "Not displayed: s=" + winAnimator.mSurfaceControl
+ " pv=" + w.mPolicyVisibility
+ " mDrawState=" + winAnimator.mDrawState
+ " ah=" + w.mAttachedHidden
@@ -8914,7 +8914,7 @@
boolean reclaimSomeSurfaceMemoryLocked(WindowStateAnimator winAnimator, String operation,
boolean secure) {
- final SurfaceControl surface = winAnimator.mSurface;
+ final SurfaceControl surface = winAnimator.mSurfaceControl;
boolean leakedSurface = false;
boolean killedApps = false;
@@ -8936,28 +8936,28 @@
while (mTmpWindowsIterator.hasNext()) {
WindowState ws = mTmpWindowsIterator.next();
WindowStateAnimator wsa = ws.mWinAnimator;
- if (wsa.mSurface != null) {
+ if (wsa.mSurfaceControl != null) {
if (!mSessions.contains(wsa.mSession)) {
Slog.w(TAG, "LEAKED SURFACE (session doesn't exist): "
- + ws + " surface=" + wsa.mSurface
+ + ws + " surface=" + wsa.mSurfaceControl
+ " token=" + ws.mToken
+ " pid=" + ws.mSession.mPid
+ " uid=" + ws.mSession.mUid);
if (SHOW_TRANSACTIONS) logSurface(ws, "LEAK DESTROY", null);
- wsa.mSurface.destroy();
+ wsa.mSurfaceControl.destroy();
wsa.mSurfaceShown = false;
- wsa.mSurface = null;
+ wsa.mSurfaceControl = null;
ws.mHasSurface = false;
mForceRemoves.add(ws);
leakedSurface = true;
} else if (ws.mAppToken != null && ws.mAppToken.clientHidden) {
Slog.w(TAG, "LEAKED SURFACE (app token hidden): "
- + ws + " surface=" + wsa.mSurface
+ + ws + " surface=" + wsa.mSurfaceControl
+ " token=" + ws.mAppToken);
if (SHOW_TRANSACTIONS) logSurface(ws, "LEAK DESTROY", null);
- wsa.mSurface.destroy();
+ wsa.mSurfaceControl.destroy();
wsa.mSurfaceShown = false;
- wsa.mSurface = null;
+ wsa.mSurfaceControl = null;
ws.mHasSurface = false;
leakedSurface = true;
}
@@ -8974,7 +8974,7 @@
continue;
}
WindowStateAnimator wsa = ws.mWinAnimator;
- if (wsa.mSurface != null) {
+ if (wsa.mSurfaceControl != null) {
pidCandidates.append(wsa.mSession.mPid, wsa.mSession.mPid);
}
}
@@ -9001,7 +9001,7 @@
"RECOVER DESTROY", null);
surface.destroy();
winAnimator.mSurfaceShown = false;
- winAnimator.mSurface = null;
+ winAnimator.mSurfaceControl = null;
winAnimator.mWin.mHasSurface = false;
}
diff --git a/services/java/com/android/server/wm/WindowStateAnimator.java b/services/java/com/android/server/wm/WindowStateAnimator.java
index 82e59a8..3a9f7cb 100644
--- a/services/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/java/com/android/server/wm/WindowStateAnimator.java
@@ -88,7 +88,7 @@
int mAnimLayer;
int mLastLayer;
- SurfaceControl mSurface;
+ SurfaceControl mSurfaceControl;
SurfaceControl mPendingDestroySurface;
/**
@@ -404,7 +404,7 @@
if (WindowManagerService.localLOGV) Slog.v(
TAG, "Exit animation finished in " + this
+ ": remove=" + mWin.mRemoveOnExit);
- if (mSurface != null) {
+ if (mSurfaceControl != null) {
mService.mDestroySurface.add(mWin);
mWin.mDestroying = true;
if (WindowState.SHOW_TRANSACTIONS) WindowManagerService.logSurface(
@@ -425,10 +425,10 @@
mLastHidden = true;
if (WindowManagerService.SHOW_TRANSACTIONS) WindowManagerService.logSurface(mWin,
"HIDE (performLayout)", null);
- if (mSurface != null) {
+ if (mSurfaceControl != null) {
mSurfaceShown = false;
try {
- mSurface.hide();
+ mSurfaceControl.hide();
} catch (RuntimeException e) {
Slog.w(TAG, "Exception hiding surface in " + mWin);
}
@@ -445,7 +445,7 @@
if (mDrawState == DRAW_PENDING) {
if (DEBUG_SURFACE_TRACE || DEBUG_ANIM || SHOW_TRANSACTIONS || DEBUG_ORIENTATION)
Slog.v(TAG, "finishDrawingLocked: mDrawState=COMMIT_DRAW_PENDING " + this + " in "
- + mSurface);
+ + mSurfaceControl);
if (DEBUG_STARTING_WINDOW &&
mWin.mAttrs.type == WindowManager.LayoutParams.TYPE_APPLICATION_STARTING) {
Slog.v(TAG, "Draw state now committed in " + mWin);
@@ -467,7 +467,7 @@
return false;
}
if (DEBUG_SURFACE_TRACE || DEBUG_ANIM) {
- Slog.i(TAG, "commitFinishDrawingLocked: mDrawState=READY_TO_SHOW " + mSurface);
+ Slog.i(TAG, "commitFinishDrawingLocked: mDrawState=READY_TO_SHOW " + mSurfaceControl);
}
mDrawState = READY_TO_SHOW;
final boolean starting = mWin.mAttrs.type == TYPE_APPLICATION_STARTING;
@@ -625,7 +625,7 @@
}
SurfaceControl createSurfaceLocked() {
- if (mSurface == null) {
+ if (mSurfaceControl == null) {
if (DEBUG_ANIM || DEBUG_ORIENTATION) Slog.i(TAG,
"createSurface " + this + ": mDrawState=DRAW_PENDING");
mDrawState = DRAW_PENDING;
@@ -685,12 +685,12 @@
flags |= SurfaceControl.OPAQUE;
}
if (DEBUG_SURFACE_TRACE) {
- mSurface = new SurfaceTrace(
+ mSurfaceControl = new SurfaceTrace(
mSession.mSurfaceSession,
attrs.getTitle().toString(),
w, h, format, flags);
} else {
- mSurface = new SurfaceControl(
+ mSurfaceControl = new SurfaceControl(
mSession.mSurfaceSession,
attrs.getTitle().toString(),
w, h, format, flags);
@@ -698,7 +698,7 @@
mWin.mHasSurface = true;
if (SHOW_TRANSACTIONS || SHOW_SURFACE_ALLOC) Slog.i(TAG,
" CREATE SURFACE "
- + mSurface + " IN SESSION "
+ + mSurfaceControl + " IN SESSION "
+ mSession.mSurfaceSession
+ ": pid=" + mSession.mPid + " format="
+ attrs.format + " flags=0x"
@@ -718,7 +718,7 @@
}
if (WindowManagerService.localLOGV) Slog.v(
- TAG, "Got surface: " + mSurface
+ TAG, "Got surface: " + mSurfaceControl
+ ", set left=" + mWin.mFrame.left + " top=" + mWin.mFrame.top
+ ", animLayer=" + mAnimLayer);
if (SHOW_LIGHT_TRANSACTIONS) {
@@ -733,11 +733,11 @@
try {
mSurfaceX = mWin.mFrame.left + mWin.mXOffset;
mSurfaceY = mWin.mFrame.top + mWin.mYOffset;
- mSurface.setPosition(mSurfaceX, mSurfaceY);
+ mSurfaceControl.setPosition(mSurfaceX, mSurfaceY);
mSurfaceLayer = mAnimLayer;
- mSurface.setLayerStack(mLayerStack);
- mSurface.setLayer(mAnimLayer);
- mSurface.setAlpha(0);
+ mSurfaceControl.setLayerStack(mLayerStack);
+ mSurfaceControl.setLayer(mAnimLayer);
+ mSurfaceControl.setAlpha(0);
mSurfaceShown = false;
} catch (RuntimeException e) {
Slog.w(TAG, "Error creating surface in " + w, e);
@@ -752,7 +752,7 @@
if (WindowManagerService.localLOGV) Slog.v(
TAG, "Created surface " + this);
}
- return mSurface;
+ return mSurfaceControl;
}
void destroySurfaceLocked() {
@@ -760,7 +760,7 @@
mWin.mAppToken.startingDisplayed = false;
}
- if (mSurface != null) {
+ if (mSurfaceControl != null) {
int i = mWin.mChildWindows.size();
while (i > 0) {
@@ -777,10 +777,10 @@
e.fillInStackTrace();
}
Slog.w(TAG, "Window " + this + " destroying surface "
- + mSurface + ", session " + mSession, e);
+ + mSurfaceControl + ", session " + mSession, e);
}
if (mSurfaceDestroyDeferred) {
- if (mSurface != null && mPendingDestroySurface != mSurface) {
+ if (mSurfaceControl != null && mPendingDestroySurface != mSurfaceControl) {
if (mPendingDestroySurface != null) {
if (SHOW_TRANSACTIONS || SHOW_SURFACE_ALLOC) {
RuntimeException e = null;
@@ -792,7 +792,7 @@
}
mPendingDestroySurface.destroy();
}
- mPendingDestroySurface = mSurface;
+ mPendingDestroySurface = mSurfaceControl;
}
} else {
if (SHOW_TRANSACTIONS || SHOW_SURFACE_ALLOC) {
@@ -803,17 +803,17 @@
}
WindowManagerService.logSurface(mWin, "DESTROY", e);
}
- mSurface.destroy();
+ mSurfaceControl.destroy();
}
mAnimator.hideWallpapersLocked(mWin);
} catch (RuntimeException e) {
Slog.w(TAG, "Exception thrown when destroying Window " + this
- + " surface " + mSurface + " session " + mSession
+ + " surface " + mSurfaceControl + " session " + mSession
+ ": " + e.toString());
}
mSurfaceShown = false;
- mSurface = null;
+ mSurfaceControl = null;
mWin.mHasSurface = false;
mDrawState = NO_SURFACE;
}
@@ -1120,7 +1120,7 @@
try {
if (WindowManagerService.SHOW_TRANSACTIONS) WindowManagerService.logSurface(w,
"CROP " + w.mSystemDecorRect.toShortString(), null);
- mSurface.setWindowCrop(w.mSystemDecorRect);
+ mSurfaceControl.setWindowCrop(w.mSystemDecorRect);
} catch (RuntimeException e) {
Slog.w(TAG, "Error setting crop surface of " + w
+ " crop=" + w.mSystemDecorRect.toShortString(), e);
@@ -1164,7 +1164,7 @@
"POS " + left + ", " + top, null);
mSurfaceX = left;
mSurfaceY = top;
- mSurface.setPosition(left, top);
+ mSurfaceControl.setPosition(left, top);
} catch (RuntimeException e) {
Slog.w(TAG, "Error positioning surface of " + w
+ " pos=(" + left
@@ -1180,7 +1180,7 @@
if (WindowManagerService.SHOW_TRANSACTIONS) WindowManagerService.logSurface(w,
"SIZE " + width + "x" + height, null);
mSurfaceResized = true;
- mSurface.setSize(width, height);
+ mSurfaceControl.setSize(width, height);
final int displayId = w.mDisplayContent.getDisplayId();
mAnimator.setPendingLayoutChanges(displayId,
WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER);
@@ -1204,7 +1204,7 @@
public void prepareSurfaceLocked(final boolean recoveringMemory) {
final WindowState w = mWin;
- if (mSurface == null) {
+ if (mSurfaceControl == null) {
if (w.mOrientationChanging) {
if (DEBUG_ORIENTATION) {
Slog.v(TAG, "Orientation change skips hidden " + w);
@@ -1262,13 +1262,13 @@
+ "," + (mDtDx*w.mVScale)
+ "][" + (mDsDy*w.mHScale)
+ "," + (mDtDy*w.mVScale) + "]", null);
- if (mSurface != null) {
+ if (mSurfaceControl != null) {
try {
mSurfaceAlpha = mShownAlpha;
- mSurface.setAlpha(mShownAlpha);
+ mSurfaceControl.setAlpha(mShownAlpha);
mSurfaceLayer = mAnimLayer;
- mSurface.setLayer(mAnimLayer);
- mSurface.setMatrix(
+ mSurfaceControl.setLayer(mAnimLayer);
+ mSurfaceControl.setMatrix(
mDsDx*w.mHScale, mDtDx*w.mVScale,
mDsDy*w.mHScale, mDtDy*w.mVScale);
@@ -1286,7 +1286,7 @@
w.mOrientationChanging = false;
}
}
- if (mSurface != null) {
+ if (mSurfaceControl != null) {
w.mToken.hasVisible = true;
}
} catch (RuntimeException e) {
@@ -1319,7 +1319,7 @@
}
void setTransparentRegionHintLocked(final Region region) {
- if (mSurface == null) {
+ if (mSurfaceControl == null) {
Slog.w(TAG, "setTransparentRegionHint: null mSurface after mHasSurface true");
return;
}
@@ -1329,7 +1329,7 @@
try {
if (SHOW_TRANSACTIONS) WindowManagerService.logSurface(mWin,
"transparentRegionHint=" + region, null);
- mSurface.setTransparentRegionHint(region);
+ mSurfaceControl.setTransparentRegionHint(region);
} finally {
SurfaceControl.closeTransaction();
if (SHOW_LIGHT_TRANSACTIONS) Slog.i(TAG,
@@ -1356,7 +1356,7 @@
try {
if (WindowManagerService.SHOW_TRANSACTIONS) WindowManagerService.logSurface(mWin,
"POS " + left + ", " + top, null);
- mSurface.setPosition(mWin.mFrame.left + left, mWin.mFrame.top + top);
+ mSurfaceControl.setPosition(mWin.mFrame.left + left, mWin.mFrame.top + top);
updateSurfaceWindowCrop(false);
} catch (RuntimeException e) {
Slog.w(TAG, "Error positioning surface of " + mWin
@@ -1431,7 +1431,7 @@
WindowState c = mWin.mChildWindows.get(i);
if (c.mAttachedHidden) {
c.mAttachedHidden = false;
- if (c.mWinAnimator.mSurface != null) {
+ if (c.mWinAnimator.mSurfaceControl != null) {
c.mWinAnimator.performShowLocked();
// It hadn't been shown, which means layout not
// performed on it, so now we want to make sure to
@@ -1479,9 +1479,9 @@
*/
boolean showSurfaceRobustlyLocked() {
try {
- if (mSurface != null) {
+ if (mSurfaceControl != null) {
mSurfaceShown = true;
- mSurface.show();
+ mSurfaceControl.show();
if (mWin.mTurnOnScreen) {
if (DEBUG_VISIBILITY) Slog.v(TAG,
"Show surface turning screen on: " + mWin);
@@ -1491,7 +1491,7 @@
}
return true;
} catch (RuntimeException e) {
- Slog.w(TAG, "Failure showing surface " + mSurface + " in " + mWin, e);
+ Slog.w(TAG, "Failure showing surface " + mSurfaceControl + " in " + mWin, e);
}
mService.reclaimSomeSurfaceMemoryLocked(this, "show", true);
@@ -1600,9 +1600,9 @@
pw.print(" "); mTransformation.printShortString(pw);
pw.println();
}
- if (mSurface != null) {
+ if (mSurfaceControl != null) {
if (dumpAll) {
- pw.print(prefix); pw.print("mSurface="); pw.println(mSurface);
+ pw.print(prefix); pw.print("mSurface="); pw.println(mSurfaceControl);
pw.print(prefix); pw.print("mDrawState=");
pw.print(drawStateToString(mDrawState));
pw.print(" mLastHidden="); pw.println(mLastHidden);
diff --git a/tools/aidl/Type.cpp b/tools/aidl/Type.cpp
index d572af6..c637aee 100644
--- a/tools/aidl/Type.cpp
+++ b/tools/aidl/Type.cpp
@@ -1348,7 +1348,7 @@
// would be the place to do it, but I don't think the complexity in
// scoping rules is worth it.
int N = m_types.size();
- for (int i=0; i<N; i++) {
+ for (int i=N-1; i>=0; i--) {
if (m_types[i]->Name() == name) {
return m_types[i];
}