From cc262b2b7b517a633c2c5936b71c1ab2551d5b2b Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Fri, 16 Sep 2011 16:59:52 -0700 Subject: [PATCH 1/9] work around a problem where fp registers get corrupted (DO NOT MERGE) Bug: 5331198 Change-Id: I1f9b4a79d34d63f8adb0555909998664ea2ea9ca --- libs/hwui/LayerRenderer.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libs/hwui/LayerRenderer.cpp b/libs/hwui/LayerRenderer.cpp index 349b9e32268d2..a3986733a64ef 100644 --- a/libs/hwui/LayerRenderer.cpp +++ b/libs/hwui/LayerRenderer.cpp @@ -31,16 +31,20 @@ namespace uirenderer { // Rendering /////////////////////////////////////////////////////////////////////////////// +Rect* gHackDontCorruptRegisters; + void LayerRenderer::prepareDirty(float left, float top, float right, float bottom, bool opaque) { LAYER_RENDERER_LOGD("Rendering into layer, fbo = %d", mLayer->getFbo()); + Rect dirty(left, top, right, bottom); + gHackDontCorruptRegisters = &dirty; + glBindFramebuffer(GL_FRAMEBUFFER, mLayer->getFbo()); const float width = mLayer->layer.getWidth(); const float height = mLayer->layer.getHeight(); #if RENDER_LAYERS_AS_REGIONS - Rect dirty(left, top, right, bottom); if (dirty.isEmpty() || (dirty.left <= 0 && dirty.top <= 0 && dirty.right >= width && dirty.bottom >= height)) { mLayer->region.clear(); From c31a448972fda0f5c223f80477956692ea5008f2 Mon Sep 17 00:00:00 2001 From: The Android Automerger Date: Sat, 17 Sep 2011 08:25:18 -0700 Subject: [PATCH 2/9] Revert "work around a problem where fp registers get corrupted (DO NOT MERGE)" This reverts commit cc262b2b7b517a633c2c5936b71c1ab2551d5b2b. --- libs/hwui/LayerRenderer.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libs/hwui/LayerRenderer.cpp b/libs/hwui/LayerRenderer.cpp index a3986733a64ef..349b9e32268d2 100644 --- a/libs/hwui/LayerRenderer.cpp +++ b/libs/hwui/LayerRenderer.cpp @@ -31,20 +31,16 @@ namespace uirenderer { // Rendering /////////////////////////////////////////////////////////////////////////////// -Rect* gHackDontCorruptRegisters; - void LayerRenderer::prepareDirty(float left, float top, float right, float bottom, bool opaque) { LAYER_RENDERER_LOGD("Rendering into layer, fbo = %d", mLayer->getFbo()); - Rect dirty(left, top, right, bottom); - gHackDontCorruptRegisters = &dirty; - glBindFramebuffer(GL_FRAMEBUFFER, mLayer->getFbo()); const float width = mLayer->layer.getWidth(); const float height = mLayer->layer.getHeight(); #if RENDER_LAYERS_AS_REGIONS + Rect dirty(left, top, right, bottom); if (dirty.isEmpty() || (dirty.left <= 0 && dirty.top <= 0 && dirty.right >= width && dirty.bottom >= height)) { mLayer->region.clear(); From a48b9fa5aa48bdc41ae103c4ce98713490878d2f Mon Sep 17 00:00:00 2001 From: Wink Saville Date: Mon, 19 Sep 2011 14:27:09 -0700 Subject: [PATCH 3/9] Add PROPERTY_IMS_REG_REQUIRED. Bug: 5337311 Change-Id: Ic5f310f485b49b29385bc1427a1f156484896569 --- .../com/android/internal/telephony/TelephonyProperties.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/telephony/java/com/android/internal/telephony/TelephonyProperties.java b/telephony/java/com/android/internal/telephony/TelephonyProperties.java index abb45234dc8ec..101dd55e4a79e 100644 --- a/telephony/java/com/android/internal/telephony/TelephonyProperties.java +++ b/telephony/java/com/android/internal/telephony/TelephonyProperties.java @@ -182,4 +182,9 @@ public interface TelephonyProperties * in commercial configuration. */ static final String PROPERTY_TEST_CSIM = "persist.radio.test-csim"; + + /** + * Set to true to indicate a test ims registration required. + */ + static final String PROPERTY_IMS_REG_REQUIRED = "persist.radio.imsregrequired"; } From e676b37c63b2721d891f6bcf20ec679d166fd6dd Mon Sep 17 00:00:00 2001 From: James Dong Date: Mon, 19 Sep 2011 16:27:31 -0700 Subject: [PATCH 4/9] Add QVGA resolution to CamcorderProfile Change-Id: Icebbafb68d8164370f98a2c36699845d10ef081b related-to-bug: 5145483 --- include/media/MediaProfiles.h | 6 +++-- .../java/android/media/CamcorderProfile.java | 26 +++++++++++++++++-- media/jni/android_media_MediaProfiles.cpp | 16 +++++++----- media/libmedia/MediaProfiles.cpp | 6 +++-- 4 files changed, 42 insertions(+), 12 deletions(-) diff --git a/include/media/MediaProfiles.h b/include/media/MediaProfiles.h index 4b023d1460180..eab764807f77e 100644 --- a/include/media/MediaProfiles.h +++ b/include/media/MediaProfiles.h @@ -32,7 +32,8 @@ enum camcorder_quality { CAMCORDER_QUALITY_480P = 4, CAMCORDER_QUALITY_720P = 5, CAMCORDER_QUALITY_1080P = 6, - CAMCORDER_QUALITY_LIST_END = 6, + CAMCORDER_QUALITY_QVGA = 7, + CAMCORDER_QUALITY_LIST_END = 7, CAMCORDER_QUALITY_TIME_LAPSE_LIST_START = 1000, CAMCORDER_QUALITY_TIME_LAPSE_LOW = 1000, @@ -42,7 +43,8 @@ enum camcorder_quality { CAMCORDER_QUALITY_TIME_LAPSE_480P = 1004, CAMCORDER_QUALITY_TIME_LAPSE_720P = 1005, CAMCORDER_QUALITY_TIME_LAPSE_1080P = 1006, - CAMCORDER_QUALITY_TIME_LAPSE_LIST_END = 1006, + CAMCORDER_QUALITY_TIME_LAPSE_QVGA = 1007, + CAMCORDER_QUALITY_TIME_LAPSE_LIST_END = 1007, }; /** diff --git a/media/java/android/media/CamcorderProfile.java b/media/java/android/media/CamcorderProfile.java index b2234e2c3e7bc..51a45cdeca2ce 100644 --- a/media/java/android/media/CamcorderProfile.java +++ b/media/java/android/media/CamcorderProfile.java @@ -80,6 +80,16 @@ public class CamcorderProfile */ public static final int QUALITY_1080P = 6; + /** + * Quality level corresponding to the QVGA (320x240) resolution. + * {@hide} + */ + public static final int QUALITY_QVGA = 7; + + // Start and end of quality list + private static final int QUALITY_LIST_START = QUALITY_LOW; + private static final int QUALITY_LIST_END = QUALITY_QVGA; + /** * Time lapse quality level corresponding to the lowest available resolution. */ @@ -115,6 +125,16 @@ public class CamcorderProfile */ public static final int QUALITY_TIME_LAPSE_1080P = 1006; + /** + * Time lapse quality level corresponding to the QVGA (320 x 240) resolution. + * {@hide} + */ + public static final int QUALITY_TIME_LAPSE_QVGA = 1007; + + // Start and end of timelapse quality list + private static final int QUALITY_TIME_LAPSE_LIST_START = QUALITY_TIME_LAPSE_LOW; + private static final int QUALITY_TIME_LAPSE_LIST_END = QUALITY_TIME_LAPSE_QVGA; + /** * Default recording duration in seconds before the session is terminated. * This is useful for applications like MMS has limited file size requirement. @@ -238,8 +258,10 @@ public class CamcorderProfile * @see #QUALITY_TIME_LAPSE_1080P */ public static CamcorderProfile get(int cameraId, int quality) { - if (!((quality >= QUALITY_LOW && quality <= QUALITY_1080P) || - (quality >= QUALITY_TIME_LAPSE_LOW && quality <= QUALITY_TIME_LAPSE_1080P))) { + if (!((quality >= QUALITY_LIST_START && + quality <= QUALITY_LIST_END) || + (quality >= QUALITY_TIME_LAPSE_LIST_START && + quality <= QUALITY_TIME_LAPSE_LIST_END))) { String errMessage = "Unsupported quality level: " + quality; throw new IllegalArgumentException(errMessage); } diff --git a/media/jni/android_media_MediaProfiles.cpp b/media/jni/android_media_MediaProfiles.cpp index e5e688c3268f9..7ed005004aa44 100644 --- a/media/jni/android_media_MediaProfiles.cpp +++ b/media/jni/android_media_MediaProfiles.cpp @@ -161,13 +161,19 @@ android_media_MediaProfiles_native_get_audio_encoder_cap(JNIEnv *env, jobject th return cap; } +static bool isCamcorderQualityKnown(int quality) +{ + return ((quality >= CAMCORDER_QUALITY_LIST_START && + quality <= CAMCORDER_QUALITY_LIST_END) || + (quality >= CAMCORDER_QUALITY_TIME_LAPSE_LIST_START && + quality <= CAMCORDER_QUALITY_TIME_LAPSE_LIST_END)); +} + static jobject android_media_MediaProfiles_native_get_camcorder_profile(JNIEnv *env, jobject thiz, jint id, jint quality) { LOGV("native_get_camcorder_profile: %d %d", id, quality); - if (!((quality >= CAMCORDER_QUALITY_LOW && quality <= CAMCORDER_QUALITY_1080P) || - (quality >= CAMCORDER_QUALITY_TIME_LAPSE_LOW && - quality <= CAMCORDER_QUALITY_TIME_LAPSE_1080P))) { + if (!isCamcorderQualityKnown(quality)) { jniThrowException(env, "java/lang/RuntimeException", "Unknown camcorder profile quality"); return NULL; } @@ -216,9 +222,7 @@ static jboolean android_media_MediaProfiles_native_has_camcorder_profile(JNIEnv *env, jobject thiz, jint id, jint quality) { LOGV("native_has_camcorder_profile: %d %d", id, quality); - if (!((quality >= CAMCORDER_QUALITY_LOW && quality <= CAMCORDER_QUALITY_1080P) || - (quality >= CAMCORDER_QUALITY_TIME_LAPSE_LOW && - quality <= CAMCORDER_QUALITY_TIME_LAPSE_1080P))) { + if (!isCamcorderQualityKnown(quality)) { return false; } diff --git a/media/libmedia/MediaProfiles.cpp b/media/libmedia/MediaProfiles.cpp index 5a8bc60364632..ad55ff86441b4 100644 --- a/media/libmedia/MediaProfiles.cpp +++ b/media/libmedia/MediaProfiles.cpp @@ -67,6 +67,7 @@ const MediaProfiles::NameToTagMap MediaProfiles::sCamcorderQualityNameMap[] = { {"480p", CAMCORDER_QUALITY_480P}, {"720p", CAMCORDER_QUALITY_720P}, {"1080p", CAMCORDER_QUALITY_1080P}, + {"qvga", CAMCORDER_QUALITY_QVGA}, {"timelapselow", CAMCORDER_QUALITY_TIME_LAPSE_LOW}, {"timelapsehigh", CAMCORDER_QUALITY_TIME_LAPSE_HIGH}, @@ -74,7 +75,8 @@ const MediaProfiles::NameToTagMap MediaProfiles::sCamcorderQualityNameMap[] = { {"timelapsecif", CAMCORDER_QUALITY_TIME_LAPSE_CIF}, {"timelapse480p", CAMCORDER_QUALITY_TIME_LAPSE_480P}, {"timelapse720p", CAMCORDER_QUALITY_TIME_LAPSE_720P}, - {"timelapse1080p", CAMCORDER_QUALITY_TIME_LAPSE_1080P} + {"timelapse1080p", CAMCORDER_QUALITY_TIME_LAPSE_1080P}, + {"timelapseqvga", CAMCORDER_QUALITY_TIME_LAPSE_QVGA}, }; /*static*/ void @@ -1139,7 +1141,7 @@ int MediaProfiles::getStartTimeOffsetMs(int cameraId) const { if (index >= 0) { offsetTimeMs = mStartTimeOffsets.valueFor(cameraId); } - LOGV("%s: offsetTime=%d ms and cameraId=%d", offsetTimeMs, cameraId); + LOGV("offsetTime=%d ms and cameraId=%d", offsetTimeMs, cameraId); return offsetTimeMs; } From 044163e8479ab52b0319336b02e94fd6f999958a Mon Sep 17 00:00:00 2001 From: Daniel Sandler Date: Thu, 15 Sep 2011 16:02:56 -0400 Subject: [PATCH 5/9] Fix MENU icon weirdness. (DO NOT MERGE) (Broken by change I7cbb7bbf.) Bug: 5308636 Change-Id: I30ca20f62bd140a823eb926a9a0521c4d6014680 --- .../statusbar/phone/NavigationBarView.java | 22 +++++++++++++++++-- .../statusbar/phone/PhoneStatusBar.java | 3 +-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 610edfa4b21f2..0b02a7ec2f0e2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -59,7 +59,7 @@ public class NavigationBarView extends LinearLayout { int mBarSize; boolean mVertical; - boolean mHidden, mLowProfile; + boolean mHidden, mLowProfile, mShowMenu; int mDisabledFlags = 0; public View getRecentsButton() { @@ -91,6 +91,7 @@ public class NavigationBarView extends LinearLayout { final Resources res = mContext.getResources(); mBarSize = res.getDimensionPixelSize(R.dimen.navigation_bar_size); mVertical = false; + mShowMenu = false; } View.OnTouchListener mLightsOutListener = new View.OnTouchListener() { @@ -126,7 +127,23 @@ public class NavigationBarView extends LinearLayout { getBackButton() .setVisibility(disableBack ? View.INVISIBLE : View.VISIBLE); getHomeButton() .setVisibility(disableNavigation ? View.INVISIBLE : View.VISIBLE); getRecentsButton().setVisibility(disableNavigation ? View.INVISIBLE : View.VISIBLE); - getMenuButton() .setVisibility(disableNavigation ? View.INVISIBLE : View.VISIBLE); + + getMenuButton() .setVisibility((disableNavigation || !mShowMenu) + ? View.INVISIBLE : View.VISIBLE); + } + + public void setMenuVisibility(final boolean show) { + setMenuVisibility(show, false); + } + + public void setMenuVisibility(final boolean show, final boolean force) { + if (!force && mShowMenu == show) return; + + mShowMenu = show; + + getMenuButton().setVisibility( + (0 != (mDisabledFlags & View.STATUS_BAR_DISABLE_NAVIGATION) || !mShowMenu) + ? View.INVISIBLE : View.VISIBLE); } public void setLowProfile(final boolean lightsOut) { @@ -257,6 +274,7 @@ public class NavigationBarView extends LinearLayout { // force the low profile & disabled states into compliance setLowProfile(mLowProfile, false, true /* force */); setDisabledFlags(mDisabledFlags, true /* force */); + setMenuVisibility(mShowMenu, true /* force */); if (DEBUG_DEADZONE) { mCurrentView.findViewById(R.id.deadzone).setBackgroundColor(0x808080FF); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index febf3ab73c0c1..8fc844882334e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -1572,8 +1572,7 @@ public class PhoneStatusBar extends StatusBar { Slog.d(TAG, (showMenu?"showing":"hiding") + " the MENU button"); } if (mNavigationBarView != null) { - mNavigationBarView.getMenuButton().setVisibility(showMenu - ? View.VISIBLE : View.INVISIBLE); + mNavigationBarView.setMenuVisibility(showMenu); } // See above re: lights-out policy for legacy apps. From c34692d5e5a4ed48e5ac839d0f03fe55a35706c7 Mon Sep 17 00:00:00 2001 From: Daniel Sandler Date: Tue, 20 Sep 2011 15:36:50 -0400 Subject: [PATCH 6/9] Retain signal level even when data is offline. Also disable extremely verbose RSSI logging. Bug: 5340142 Change-Id: I051a4cec5651a0734db2666526b16037d7053a1e --- .../systemui/statusbar/policy/NetworkController.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java index 3b097af452be3..820dc1076a922 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java @@ -315,16 +315,12 @@ public class NetworkController extends BroadcastReceiver { @Override public void onDataConnectionStateChanged(int state, int networkType) { - if (DEBUG || CHATTY) { + if (DEBUG) { Slog.d(TAG, "onDataConnectionStateChanged: state=" + state + " type=" + networkType); } mDataState = state; mDataNetType = networkType; - if (state < 0) { - // device without a data connection - mSignalStrength = null; - } updateDataNetType(); updateDataIcon(); refreshViews(); From d82bcca3c826134d7542e488fc6f4eb454b33972 Mon Sep 17 00:00:00 2001 From: Daniel Sandler Date: Mon, 19 Sep 2011 14:16:25 -0400 Subject: [PATCH 7/9] Stop clobbering the systemUiVisibility on navbar touch. (DO NOT MERGE) Bug: 5328284 Change-Id: Ib49af35a7919dbf1cdb99f357798101d2534e853 --- .../systemui/statusbar/phone/NavigationBarView.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 0b02a7ec2f0e2..59578cfd261db 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -253,15 +253,6 @@ public class NavigationBarView extends LinearLayout { mCurrentView = mRotatedViews[Surface.ROTATION_0]; } - @Override - public boolean onTouchEvent(MotionEvent ev) { - try { - mBarService.setSystemUiVisibility(0); - } catch (android.os.RemoteException ex) { - } - return false; // pass it on - } - public void reorient() { final int rot = mDisplay.getRotation(); for (int i=0; i<4; i++) { From f421392c586859c1b0d27fdcbd6d4f2f6fb0568a Mon Sep 17 00:00:00 2001 From: Daniel Sandler Date: Tue, 20 Sep 2011 10:44:59 -0400 Subject: [PATCH 8/9] Fix disappearing nav icons. (DO NOT MERGE) Bug: 5328284 Change-Id: Iaa20454cff9f5a340da7b0c71190796445e8a205 --- .../statusbar/phone/NavigationBarView.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 59578cfd261db..d260e6db495a8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -160,9 +160,15 @@ public class NavigationBarView extends LinearLayout { final View navButtons = mCurrentView.findViewById(R.id.nav_buttons); final View lowLights = mCurrentView.findViewById(R.id.lights_out); + // ok, everyone, stop it right there + navButtons.animate().cancel(); + lowLights.animate().cancel(); + if (!animate) { - lowLights.setVisibility(View.GONE); - navButtons.setAlpha(1f); + navButtons.setAlpha(lightsOut ? 0f : 1f); + + lowLights.setAlpha(lightsOut ? 1f : 0f); + lowLights.setVisibility(lightsOut ? View.VISIBLE : View.GONE); } else { navButtons.animate() .alpha(lightsOut ? 0f : 1f) @@ -170,8 +176,10 @@ public class NavigationBarView extends LinearLayout { .start(); lowLights.setOnTouchListener(mLightsOutListener); - lowLights.setAlpha(0f); - lowLights.setVisibility(View.VISIBLE); + if (lowLights.getVisibility() == View.GONE) { + lowLights.setAlpha(0f); + lowLights.setVisibility(View.VISIBLE); + } lowLights.animate() .alpha(lightsOut ? 1f : 0f) .setStartDelay(lightsOut ? 500 : 0) From cfbca6ae851078a77abde7773dbb43afe814cb0e Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Fri, 23 Sep 2011 13:12:49 -0700 Subject: [PATCH 9/9] Don't crash during full backup when CheckJNI is enabled It's not okay to pass null to JNI methods and trust that it will just back off and return a null result cleanly. Fixes bug 5361822 . Change-Id: Id8a17b958fd183d55cb6475f394e158c13aae2ea --- core/jni/android_app_backup_FullBackup.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/jni/android_app_backup_FullBackup.cpp b/core/jni/android_app_backup_FullBackup.cpp index b36fa3e2f6b27..6ef62a9824f18 100644 --- a/core/jni/android_app_backup_FullBackup.cpp +++ b/core/jni/android_app_backup_FullBackup.cpp @@ -76,10 +76,10 @@ static int backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj, int ret; // Extract the various strings, allowing for null object pointers - const char* packagenamechars = env->GetStringUTFChars(packageNameObj, NULL); - const char* rootchars = env->GetStringUTFChars(rootpathObj, NULL); - const char* pathchars = env->GetStringUTFChars(pathObj, NULL); - const char* domainchars = env->GetStringUTFChars(domainObj, NULL); + const char* packagenamechars = (packageNameObj) ? env->GetStringUTFChars(packageNameObj, NULL) : NULL; + const char* rootchars = (rootpathObj) ? env->GetStringUTFChars(rootpathObj, NULL) : NULL; + const char* pathchars = (pathObj) ? env->GetStringUTFChars(pathObj, NULL) : NULL; + const char* domainchars = (domainObj) ? env->GetStringUTFChars(domainObj, NULL) : NULL; String8 packageName(packagenamechars ? packagenamechars : ""); String8 rootpath(rootchars ? rootchars : "");