diff options
22 files changed, 285 insertions, 415 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index eef8554..026cfc1 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -2378,7 +2378,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te lp.itemId = mAdapter.getItemId(position); } lp.viewType = mAdapter.getItemViewType(position); - child.setLayoutParams(lp); + if (lp != vlp) { + child.setLayoutParams(lp); + } } class ListItemAccessibilityDelegate extends AccessibilityDelegate { diff --git a/core/java/com/android/internal/app/ExternalMediaFormatActivity.java b/core/java/com/android/internal/app/ExternalMediaFormatActivity.java index 6ed3bdc..fc213c5 100644 --- a/core/java/com/android/internal/app/ExternalMediaFormatActivity.java +++ b/core/java/com/android/internal/app/ExternalMediaFormatActivity.java @@ -25,6 +25,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; +import android.os.storage.StorageVolume; import android.util.Log; /** @@ -94,6 +95,10 @@ public class ExternalMediaFormatActivity extends AlertActivity implements Dialog if (which == POSITIVE_BUTTON) { Intent intent = new Intent(ExternalStorageFormatter.FORMAT_ONLY); intent.setComponent(ExternalStorageFormatter.COMPONENT_NAME); + // Transfer the storage volume to the new intent + final StorageVolume storageVolume = getIntent().getParcelableExtra( + StorageVolume.EXTRA_STORAGE_VOLUME); + intent.putExtra(StorageVolume.EXTRA_STORAGE_VOLUME, storageVolume); startService(intent); } diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java index 051de6e..87e8ebd 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -91,12 +91,6 @@ public class ZygoteInit { private static Resources mResources; /** - * The number of times that the main Zygote loop - * should run before calling gc() again. - */ - static final int GC_LOOP_COUNT = 10; - - /** * The name of a resource file that contains classes to preload. */ private static final String PRELOADED_CLASSES = "preloaded-classes"; @@ -293,11 +287,6 @@ public class ZygoteInit { float defaultUtilization = runtime.getTargetHeapUtilization(); runtime.setTargetHeapUtilization(0.8f); - // Start with a clean slate. - System.gc(); - runtime.runFinalizationSync(); - Debug.startAllocCounting(); - try { BufferedReader br = new BufferedReader(new InputStreamReader(is), 256); @@ -316,15 +305,6 @@ public class ZygoteInit { Log.v(TAG, "Preloading " + line + "..."); } Class.forName(line); - if (Debug.getGlobalAllocSize() > PRELOAD_GC_THRESHOLD) { - if (false) { - Log.v(TAG, - " GC at " + Debug.getGlobalAllocSize()); - } - System.gc(); - runtime.runFinalizationSync(); - Debug.resetGlobalAllocSize(); - } count++; } catch (ClassNotFoundException e) { Log.w(TAG, "Class not found for preloading: " + line); @@ -354,8 +334,6 @@ public class ZygoteInit { // Fill in dex caches with classes, fields, and methods brought in by preloading. runtime.preloadDexCaches(); - Debug.stopAllocCounting(); - // Bring back root. We'll need it later. setEffectiveUser(ROOT_UID); setEffectiveGroup(ROOT_GID); @@ -373,10 +351,7 @@ public class ZygoteInit { private static void preloadResources() { final VMRuntime runtime = VMRuntime.getRuntime(); - Debug.startAllocCounting(); try { - System.gc(); - runtime.runFinalizationSync(); mResources = Resources.getSystem(); mResources.startPreloading(); if (PRELOAD_RESOURCES) { @@ -401,22 +376,12 @@ public class ZygoteInit { mResources.finishPreloading(); } catch (RuntimeException e) { Log.w(TAG, "Failure preloading resources", e); - } finally { - Debug.stopAllocCounting(); } } private static int preloadColorStateLists(VMRuntime runtime, TypedArray ar) { int N = ar.length(); for (int i=0; i<N; i++) { - if (Debug.getGlobalAllocSize() > PRELOAD_GC_THRESHOLD) { - if (false) { - Log.v(TAG, " GC at " + Debug.getGlobalAllocSize()); - } - System.gc(); - runtime.runFinalizationSync(); - Debug.resetGlobalAllocSize(); - } int id = ar.getResourceId(i, 0); if (false) { Log.v(TAG, "Preloading resource #" + Integer.toHexString(id)); @@ -437,14 +402,6 @@ public class ZygoteInit { private static int preloadDrawables(VMRuntime runtime, TypedArray ar) { int N = ar.length(); for (int i=0; i<N; i++) { - if (Debug.getGlobalAllocSize() > PRELOAD_GC_THRESHOLD) { - if (false) { - Log.v(TAG, " GC at " + Debug.getGlobalAllocSize()); - } - System.gc(); - runtime.runFinalizationSync(); - Debug.resetGlobalAllocSize(); - } int id = ar.getResourceId(i, 0); if (false) { Log.v(TAG, "Preloading resource #" + Integer.toHexString(id)); @@ -466,7 +423,7 @@ public class ZygoteInit { * softly- and final-reachable objects, along with any other garbage. * This is only useful just before a fork(). */ - /*package*/ static void gc() { + /*package*/ static void gcAndFinalize() { final VMRuntime runtime = VMRuntime.getRuntime(); /* runFinalizationSync() lets finalizers be called in Zygote, @@ -475,9 +432,6 @@ public class ZygoteInit { System.gc(); runtime.runFinalizationSync(); System.gc(); - runtime.runFinalizationSync(); - System.gc(); - runtime.runFinalizationSync(); } /** @@ -668,7 +622,7 @@ public class ZygoteInit { SamplingProfilerIntegration.writeZygoteSnapshot(); // Do an initial gc to clean up after startup - gc(); + gcAndFinalize(); // Disable tracing so that forked processes do not inherit stale tracing tags from // Zygote. @@ -737,27 +691,9 @@ public class ZygoteInit { fds.add(sServerSocket.getFileDescriptor()); peers.add(null); - int loopCount = GC_LOOP_COUNT; while (true) { int index; - /* - * Call gc() before we block in select(). - * It's work that has to be done anyway, and it's better - * to avoid making every child do it. It will also - * madvise() any free memory as a side-effect. - * - * Don't call it every time, because walking the entire - * heap is a lot of overhead to free a few hundred bytes. - */ - if (loopCount <= 0) { - gc(); - loopCount = GC_LOOP_COUNT; - } else { - loopCount--; - } - - try { fdArray = fds.toArray(fdArray); index = selectReadable(fdArray); diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 62d8036..d61dd30 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -876,7 +876,7 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv) parseRuntimeOption("dalvik.vm.profiler.type", profileType, "-Xprofile-type:"); // Depth of bounded stack data - parseRuntimeOption("dalvik.vm.profile.max-stack-depth", + parseRuntimeOption("dalvik.vm.profile.stack-depth", profileMaxStackDepth, "-Xprofile-max-stack-depth:"); diff --git a/core/jni/android_net_LocalSocketImpl.cpp b/core/jni/android_net_LocalSocketImpl.cpp index 98f4bed..a408a96 100644 --- a/core/jni/android_net_LocalSocketImpl.cpp +++ b/core/jni/android_net_LocalSocketImpl.cpp @@ -57,7 +57,7 @@ socket_connect_local(JNIEnv *env, jobject object, fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return; } @@ -95,7 +95,7 @@ socket_bind_local (JNIEnv *env, jobject object, jobject fileDescriptor, fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return; } @@ -118,7 +118,7 @@ socket_listen (JNIEnv *env, jobject object, jobject fileDescriptor, jint backlog fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return; } @@ -154,7 +154,7 @@ socket_accept (JNIEnv *env, jobject object, jobject fileDescriptor, jobject s) fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return NULL; } @@ -184,7 +184,7 @@ socket_shutdown (JNIEnv *env, jobject object, jobject fileDescriptor, fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return; } @@ -246,7 +246,7 @@ socket_getOption(JNIEnv *env, jobject object, jobject fileDescriptor, jint optID fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return 0; } @@ -293,7 +293,7 @@ static void socket_setOption( fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return; } @@ -353,7 +353,7 @@ static jint socket_pending (JNIEnv *env, jobject object, fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return (jint)-1; } @@ -378,7 +378,7 @@ static jint socket_available (JNIEnv *env, jobject object, fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return (jint)-1; } @@ -459,20 +459,20 @@ static int socket_process_cmsg(JNIEnv *env, jobject thisJ, struct msghdr * pMsg) jobject fdObject = jniCreateFileDescriptor(env, pDescriptors[i]); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return -1; } env->SetObjectArrayElement(fdArray, i, fdObject); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return -1; } } env->SetObjectField(thisJ, field_inboundFileDescriptors, fdArray); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return -1; } } @@ -558,7 +558,7 @@ static int socket_write_all(JNIEnv *env, jobject object, int fd, = (jobjectArray)env->GetObjectField( object, field_outboundFileDescriptors); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return -1; } @@ -570,18 +570,18 @@ static int socket_write_all(JNIEnv *env, jobject object, int fd, // Add any pending outbound file descriptors to the message if (outboundFds != NULL) { - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return -1; } for (int i = 0; i < countFds; i++) { jobject fdObject = env->GetObjectArrayElement(outboundFds, i); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return -1; } fds[i] = jniGetFDFromFileDescriptor(env, fdObject); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return -1; } } @@ -638,7 +638,7 @@ static jint socket_read (JNIEnv *env, jobject object, jobject fileDescriptor) fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return (jint)0; } @@ -683,7 +683,7 @@ static jint socket_readba (JNIEnv *env, jobject object, fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return (jint)-1; } @@ -717,7 +717,7 @@ static void socket_write (JNIEnv *env, jobject object, fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return; } @@ -745,7 +745,7 @@ static void socket_writeba (JNIEnv *env, jobject object, fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return; } @@ -777,7 +777,7 @@ static jobject socket_get_peer_credentials(JNIEnv *env, fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return NULL; } @@ -816,7 +816,7 @@ static jobject socket_getSockName(JNIEnv *env, fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return NULL; } diff --git a/core/jni/android_os_MessageQueue.cpp b/core/jni/android_os_MessageQueue.cpp index a8ed895..15d62a2 100644 --- a/core/jni/android_os_MessageQueue.cpp +++ b/core/jni/android_os_MessageQueue.cpp @@ -54,8 +54,8 @@ MessageQueue::~MessageQueue() { } bool MessageQueue::raiseAndClearException(JNIEnv* env, const char* msg) { - jthrowable exceptionObj = env->ExceptionOccurred(); - if (exceptionObj) { + if (env->ExceptionCheck()) { + jthrowable exceptionObj = env->ExceptionOccurred(); env->ExceptionClear(); raiseException(env, msg, exceptionObj); env->DeleteLocalRef(exceptionObj); diff --git a/core/jni/android_os_SELinux.cpp b/core/jni/android_os_SELinux.cpp index ffa569e..c282549 100644 --- a/core/jni/android_os_SELinux.cpp +++ b/core/jni/android_os_SELinux.cpp @@ -97,7 +97,7 @@ static jstring getPeerCon(JNIEnv *env, jobject, jobject fileDescriptor) { } int fd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { ALOGE("getPeerCon => getFD for %p failed", fileDescriptor); return NULL; } diff --git a/core/jni/android_server_NetworkManagementSocketTagger.cpp b/core/jni/android_server_NetworkManagementSocketTagger.cpp index 7e12b1e..ca21fd7 100644 --- a/core/jni/android_server_NetworkManagementSocketTagger.cpp +++ b/core/jni/android_server_NetworkManagementSocketTagger.cpp @@ -35,7 +35,7 @@ static jint QTagUid_tagSocketFd(JNIEnv* env, jclass, jint tagNum, jint uid) { int userFd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { ALOGE("Can't get FileDescriptor num"); return (jint)-1; } @@ -51,7 +51,7 @@ static jint QTagUid_untagSocketFd(JNIEnv* env, jclass, jobject fileDescriptor) { int userFd = jniGetFDFromFileDescriptor(env, fileDescriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { ALOGE("Can't get FileDescriptor num"); return (jint)-1; } diff --git a/core/jni/android_util_Binder.cpp b/core/jni/android_util_Binder.cpp index 81e887d..7f7cfce 100644 --- a/core/jni/android_util_Binder.cpp +++ b/core/jni/android_util_Binder.cpp @@ -272,9 +272,9 @@ protected: //printf("\n"); jboolean res = env->CallBooleanMethod(mObject, gBinderOffsets.mExecTransact, code, reinterpret_cast<jlong>(&data), reinterpret_cast<jlong>(reply), flags); - jthrowable excep = env->ExceptionOccurred(); - if (excep) { + if (env->ExceptionCheck()) { + jthrowable excep = env->ExceptionOccurred(); report_exception(env, excep, "*** Uncaught remote exception! " "(Exceptions are not yet supported across processes.)"); @@ -296,12 +296,12 @@ protected: set_dalvik_blockguard_policy(env, strict_policy_before); } - jthrowable excep2 = env->ExceptionOccurred(); - if (excep2) { - report_exception(env, excep2, + if (env->ExceptionCheck()) { + jthrowable excep = env->ExceptionOccurred(); + report_exception(env, excep, "*** Uncaught exception in onBinderStrictModePolicyChange"); /* clean up JNI local ref -- we don't return to Java code */ - env->DeleteLocalRef(excep2); + env->DeleteLocalRef(excep); } // Need to always call through the native implementation of @@ -403,8 +403,8 @@ public: env->CallStaticVoidMethod(gBinderProxyOffsets.mClass, gBinderProxyOffsets.mSendDeathNotice, mObject); - jthrowable excep = env->ExceptionOccurred(); - if (excep) { + if (env->ExceptionCheck()) { + jthrowable excep = env->ExceptionOccurred(); report_exception(env, excep, "*** Uncaught exception returned from death notification!"); } @@ -1068,16 +1068,9 @@ static void conditionally_log_binder_call(int64_t start_millis, } // We only measure binder call durations to potentially log them if -// we're on the main thread. Unfortunately sim-eng doesn't seem to -// have gettid, so we just ignore this and don't log if we can't -// get the thread id. +// we're on the main thread. static bool should_time_binder_calls() { -#ifdef HAVE_GETTID - return (getpid() == androidGetTid()); -#else -#warning no gettid(), so not logging Binder calls... - return false; -#endif + return (getpid() == gettid()); } static jboolean android_os_BinderProxy_transact(JNIEnv* env, jobject obj, diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp index aaa680f..6506190 100644 --- a/core/jni/android_util_Process.cpp +++ b/core/jni/android_util_Process.cpp @@ -271,7 +271,7 @@ static void android_os_Process_setCanSelfBackground(JNIEnv* env, jobject clazz, // Establishes the calling thread as illegal to put into the background. // Typically used only for the system process's main looper. #if GUARD_THREAD_PRIORITY - ALOGV("Process.setCanSelfBackground(%d) : tid=%d", bgOk, androidGetTid()); + ALOGV("Process.setCanSelfBackground(%d) : tid=%d", bgOk, gettid()); { Mutex::Autolock _l(gKeyCreateMutex); if (gBgKey == -1) { @@ -306,7 +306,7 @@ void android_os_Process_setThreadPriority(JNIEnv* env, jobject clazz, // if we're putting the current thread into the background, check the TLS // to make sure this thread isn't guarded. If it is, raise an exception. if (pri >= ANDROID_PRIORITY_BACKGROUND) { - if (pid == androidGetTid()) { + if (pid == gettid()) { void* bgOk = pthread_getspecific(gBgKey); if (bgOk == ((void*)0xbaad)) { ALOGE("Thread marked fg-only put self in background!"); @@ -333,7 +333,7 @@ void android_os_Process_setThreadPriority(JNIEnv* env, jobject clazz, void android_os_Process_setCallingThreadPriority(JNIEnv* env, jobject clazz, jint pri) { - android_os_Process_setThreadPriority(env, clazz, androidGetTid(), pri); + android_os_Process_setThreadPriority(env, clazz, gettid(), pri); } jint android_os_Process_getThreadPriority(JNIEnv* env, jobject clazz, diff --git a/core/jni/com_android_internal_os_ZygoteInit.cpp b/core/jni/com_android_internal_os_ZygoteInit.cpp index 2233ee3..10c6e2ce 100644 --- a/core/jni/com_android_internal_os_ZygoteInit.cpp +++ b/core/jni/com_android_internal_os_ZygoteInit.cpp @@ -96,7 +96,7 @@ static void com_android_internal_os_ZygoteInit_reopenStdio(JNIEnv* env, fd = jniGetFDFromFileDescriptor(env, in); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return; } @@ -106,7 +106,7 @@ static void com_android_internal_os_ZygoteInit_reopenStdio(JNIEnv* env, fd = jniGetFDFromFileDescriptor(env, out); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return; } @@ -116,7 +116,7 @@ static void com_android_internal_os_ZygoteInit_reopenStdio(JNIEnv* env, fd = jniGetFDFromFileDescriptor(env, errfd); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return; } @@ -134,7 +134,7 @@ static void com_android_internal_os_ZygoteInit_setCloseOnExec (JNIEnv *env, fd = jniGetFDFromFileDescriptor(env, descriptor); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return; } @@ -170,7 +170,7 @@ static jint com_android_internal_os_ZygoteInit_selectReadable ( jsize length = env->GetArrayLength(fds); fd_set fdset; - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return -1; } @@ -179,14 +179,14 @@ static jint com_android_internal_os_ZygoteInit_selectReadable ( int nfds = 0; for (jsize i = 0; i < length; i++) { jobject fdObj = env->GetObjectArrayElement(fds, i); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return -1; } if (fdObj == NULL) { continue; } int fd = jniGetFDFromFileDescriptor(env, fdObj); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return -1; } @@ -209,14 +209,14 @@ static jint com_android_internal_os_ZygoteInit_selectReadable ( for (jsize i = 0; i < length; i++) { jobject fdObj = env->GetObjectArrayElement(fds, i); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return -1; } if (fdObj == NULL) { continue; } int fd = jniGetFDFromFileDescriptor(env, fdObj); - if (env->ExceptionOccurred() != NULL) { + if (env->ExceptionCheck()) { return -1; } if (FD_ISSET(fd, &fdset)) { diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 988198a..4f64363 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -503,10 +503,10 @@ <integer name="config_shortPressOnPowerBehavior">1</integer> <!-- Package name for default keyguard appwidget [DO NOT TRANSLATE] --> - <string name="widget_default_package_name"></string> + <string name="widget_default_package_name" translatable="false"></string> <!-- Class name for default keyguard appwidget [DO NOT TRANSLATE] --> - <string name="widget_default_class_name"></string> + <string name="widget_default_class_name" translatable="false"></string> <!-- Indicate whether the SD card is accessible without removing the battery. --> <bool name="config_batterySdCardAccessibility">false</bool> @@ -1004,7 +1004,7 @@ PERSIST may improve performance by reducing how often journal blocks are reallocated (compared to truncation) resulting in better data block locality and less churn of the storage media. --> - <string name="db_default_journal_mode">PERSIST</string> + <string name="db_default_journal_mode" translatable="false">PERSIST</string> <!-- Maximum size of the persistent journal file in bytes. If the journal file grows to be larger than this amount then SQLite will @@ -1016,7 +1016,7 @@ NORMAL also preserves durability in non-WAL modes and uses checksums to ensure integrity although there is a small chance that an error might go unnoticed. Choices are: FULL, NORMAL, OFF. --> - <string name="db_default_sync_mode">FULL</string> + <string name="db_default_sync_mode" translatable="false">FULL</string> <!-- The database synchronization mode when using Write-Ahead Logging. FULL is safest and preserves durability at the cost of extra fsyncs. @@ -1024,7 +1024,7 @@ and after checkpoint operations. If checkpoints are infrequent and power loss occurs, then committed transactions could be lost and applications might break. Choices are: FULL, NORMAL, OFF. --> - <string name="db_wal_sync_mode">FULL</string> + <string name="db_wal_sync_mode" translatable="false">FULL</string> <!-- The Write-Ahead Log auto-checkpoint interval in database pages (typically 1 to 4KB). The log is checkpointed automatically whenever it exceeds this many pages. @@ -1209,7 +1209,7 @@ <!-- If supported and enabled, are dreams activated when asleep and charging? (by default) --> <bool name="config_dreamsActivatedOnSleepByDefault">false</bool> <!-- ComponentName of the default dream (Settings.Secure.DEFAULT_SCREENSAVER_COMPONENT) --> - <string name="config_dreamsDefaultComponent">com.google.android.deskclock/com.android.deskclock.Screensaver</string> + <string name="config_dreamsDefaultComponent" translatable="false">com.google.android.deskclock/com.android.deskclock.Screensaver</string> <!-- Are we allowed to dream while not plugged in? --> <bool name="config_dreamsEnabledOnBattery">false</bool> @@ -1482,17 +1482,17 @@ <!-- Class name of the framework account picker activity. Can be customized for other product types --> - <string name="config_chooseAccountActivity" + <string name="config_chooseAccountActivity" translatable="false" >android/android.accounts.ChooseAccountActivity</string> <!-- Class name of the account type and account picker activity. Can be customized for other product types --> - <string name="config_chooseTypeAndAccountActivity" + <string name="config_chooseTypeAndAccountActivity" translatable="false" >android/android.accounts.ChooseTypeAndAccountActivity</string> <!-- Component name of a custom ResolverActivity (Intent resolver) to be used instead of the default framework version. If left empty, then the framework version will be used. Example: com.google.android.myapp/.resolver.MyResolverActivity --> - <string name="config_customResolverActivity"></string> + <string name="config_customResolverActivity" translatable="false"></string> <!-- Name of the activity or service that prompts the user to reject, accept, or whitelist an adb host's public key, when an unwhitelisted host connects to the local adbd. @@ -1505,7 +1505,7 @@ >com.android.vpndialogs/com.android.vpndialogs.ConfirmDialog</string> <!-- Apps that are authorized to access shared accounts, overridden by product overlays --> - <string name="config_appsAuthorizedForSharedAccounts">;com.android.settings;</string> + <string name="config_appsAuthorizedForSharedAccounts" translatable="false">;com.android.settings;</string> <!-- Flag indicating that the media framework should not allow changes or mute on any stream or master volumes. --> diff --git a/libs/androidfw/ZipFileRO.cpp b/libs/androidfw/ZipFileRO.cpp index 1ab18ad..5f6e831 100644 --- a/libs/androidfw/ZipFileRO.cpp +++ b/libs/androidfw/ZipFileRO.cpp @@ -50,7 +50,10 @@ public: ZipEntryName name; void *cookie; - _ZipEntryRO() : cookie(NULL) { + _ZipEntryRO() : cookie(NULL) {} + + ~_ZipEntryRO() { + EndIteration(cookie); } private: @@ -83,15 +86,15 @@ ZipFileRO::~ZipFileRO() { ZipEntryRO ZipFileRO::findEntryByName(const char* entryName) const { _ZipEntryRO* data = new _ZipEntryRO; - const int32_t error = FindEntry(mHandle, entryName, &(data->entry)); + + data->name = ZipEntryName(entryName); + + const int32_t error = FindEntry(mHandle, data->name, &(data->entry)); if (error) { delete data; return NULL; } - data->name.name = entryName; - data->name.name_length = strlen(entryName); - return (ZipEntryRO) data; } diff --git a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java index dce5c37..f804736 100644 --- a/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java +++ b/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java @@ -28,6 +28,7 @@ import android.os.HandlerThread; import android.os.UserHandle; import android.os.storage.StorageEventListener; import android.os.storage.StorageManager; +import android.os.storage.StorageVolume; import android.provider.Settings; import android.util.Log; @@ -198,6 +199,8 @@ public class StorageNotification extends SystemUI { */ Intent intent = new Intent(); intent.setClass(mContext, com.android.internal.app.ExternalMediaFormatActivity.class); + intent.putExtra(StorageVolume.EXTRA_STORAGE_VOLUME, + getVolumeByPath(mStorageManager.getVolumeList(), path)); PendingIntent pi = PendingIntent.getActivity(mContext, 0, intent, 0); setMediaStorageNotification( @@ -212,6 +215,8 @@ public class StorageNotification extends SystemUI { */ Intent intent = new Intent(); intent.setClass(mContext, com.android.internal.app.ExternalMediaFormatActivity.class); + intent.putExtra(StorageVolume.EXTRA_STORAGE_VOLUME, + getVolumeByPath(mStorageManager.getVolumeList(), path)); PendingIntent pi = PendingIntent.getActivity(mContext, 0, intent, 0); setMediaStorageNotification( @@ -247,6 +252,19 @@ public class StorageNotification extends SystemUI { } /** + * Get the corresponding StorageVolume object for a specific path. + */ + private final StorageVolume getVolumeByPath(StorageVolume[] volumes, String path) { + for (StorageVolume volume : volumes) { + if (volume.getPath().equals(path)) { + return volume; + } + } + Log.w(TAG, "No storage found"); + return null; + } + + /** * Update the state of the USB mass storage notification */ void updateUsbMassStorageNotification(boolean available) { diff --git a/rs/java/android/renderscript/RenderScript.java b/rs/java/android/renderscript/RenderScript.java index 6c5c508..2ee4ff2 100644 --- a/rs/java/android/renderscript/RenderScript.java +++ b/rs/java/android/renderscript/RenderScript.java @@ -605,52 +605,14 @@ public class RenderScript { validate(); rsnScriptInvoke(mContext, id, slot); } - native void rsnScriptForEach(long con, long id, int slot, long ain, long aout, byte[] params); - native void rsnScriptForEach(long con, long id, int slot, long ain, long aout); - native void rsnScriptForEachClipped(long con, long id, int slot, long ain, long aout, byte[] params, - int xstart, int xend, int ystart, int yend, int zstart, int zend); - native void rsnScriptForEachClipped(long con, long id, int slot, long ain, long aout, - int xstart, int xend, int ystart, int yend, int zstart, int zend); - synchronized void nScriptForEach(long id, int slot, long ain, long aout, byte[] params) { - validate(); - if (params == null) { - rsnScriptForEach(mContext, id, slot, ain, aout); - } else { - rsnScriptForEach(mContext, id, slot, ain, aout, params); - } - } - synchronized void nScriptForEachClipped(long id, int slot, long ain, long aout, byte[] params, - int xstart, int xend, int ystart, int yend, int zstart, int zend) { - validate(); - if (params == null) { - rsnScriptForEachClipped(mContext, id, slot, ain, aout, xstart, xend, ystart, yend, zstart, zend); - } else { - rsnScriptForEachClipped(mContext, id, slot, ain, aout, params, xstart, xend, ystart, yend, zstart, zend); - } - } + native void rsnScriptForEach(long con, long id, int slot, long[] ains, + long aout, byte[] params, int[] limits); - /** - * Multi-input code. - * - */ - - // @hide - native void rsnScriptForEachMultiClipped(long con, long id, int slot, long[] ains, long aout, byte[] params, - int xstart, int xend, int ystart, int yend, int zstart, int zend); - // @hide - native void rsnScriptForEachMultiClipped(long con, long id, int slot, long[] ains, long aout, - int xstart, int xend, int ystart, int yend, int zstart, int zend); - - // @hide - synchronized void nScriptForEachMultiClipped(long id, int slot, long[] ains, long aout, byte[] params, - int xstart, int xend, int ystart, int yend, int zstart, int zend) { - validate(); - if (params == null) { - rsnScriptForEachMultiClipped(mContext, id, slot, ains, aout, xstart, xend, ystart, yend, zstart, zend); - } else { - rsnScriptForEachMultiClipped(mContext, id, slot, ains, aout, params, xstart, xend, ystart, yend, zstart, zend); - } + synchronized void nScriptForEach(long id, int slot, long[] ains, long aout, + byte[] params, int[] limits) { + validate(); + rsnScriptForEach(mContext, id, slot, ains, aout, params, limits); } native void rsnScriptInvokeV(long con, long id, int slot, byte[] params); diff --git a/rs/java/android/renderscript/Script.java b/rs/java/android/renderscript/Script.java index c49ef94..eb1687a 100644 --- a/rs/java/android/renderscript/Script.java +++ b/rs/java/android/renderscript/Script.java @@ -48,7 +48,8 @@ public class Script extends BaseObj { /** * Only to be used by generated reflected classes. */ - protected KernelID createKernelID(int slot, int sig, Element ein, Element eout) { + protected KernelID createKernelID(int slot, int sig, Element ein, + Element eout) { KernelID k = mKIDs.get(slot); if (k != null) { return k; @@ -127,59 +128,56 @@ public class Script extends BaseObj { * Only intended for use by generated reflected code. * */ - protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) { - mRS.validate(); - mRS.validateObject(ain); - mRS.validateObject(aout); - if (ain == null && aout == null) { - throw new RSIllegalArgumentException( - "At least one of ain or aout is required to be non-null."); - } - long in_id = 0; - if (ain != null) { - in_id = ain.getID(mRS); - } - long out_id = 0; - if (aout != null) { - out_id = aout.getID(mRS); - } - byte[] params = null; - if (v != null) { - params = v.getData(); - } - mRS.nScriptForEach(getID(mRS), slot, in_id, out_id, params); + protected void forEach(int slot, Allocation ain, Allocation aout, + FieldPacker v) { + forEach(slot, ain, aout, v, null); } /** * Only intended for use by generated reflected code. * */ - protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v, LaunchOptions sc) { + protected void forEach(int slot, Allocation ain, Allocation aout, + FieldPacker v, LaunchOptions sc) { + // TODO: Is this necessary if nScriptForEach calls validate as well? mRS.validate(); mRS.validateObject(ain); mRS.validateObject(aout); + if (ain == null && aout == null) { throw new RSIllegalArgumentException( "At least one of ain or aout is required to be non-null."); } - if (sc == null) { - forEach(slot, ain, aout, v); - return; - } - long in_id = 0; + long[] in_ids = null; if (ain != null) { - in_id = ain.getID(mRS); + in_ids = mInIdsBuffer; + in_ids[0] = ain.getID(mRS); } + long out_id = 0; if (aout != null) { out_id = aout.getID(mRS); } + byte[] params = null; if (v != null) { params = v.getData(); } - mRS.nScriptForEachClipped(getID(mRS), slot, in_id, out_id, params, sc.xstart, sc.xend, sc.ystart, sc.yend, sc.zstart, sc.zend); + + int[] limits = null; + if (sc != null) { + limits = new int[6]; + + limits[0] = sc.xstart; + limits[1] = sc.xend; + limits[2] = sc.ystart; + limits[3] = sc.yend; + limits[4] = sc.zstart; + limits[5] = sc.zend; + } + + mRS.nScriptForEach(getID(mRS), slot, in_ids, out_id, params, limits); } /** @@ -187,8 +185,9 @@ public class Script extends BaseObj { * * @hide */ - protected void forEach(int slot, Allocation[] ains, Allocation aout, FieldPacker v) { - forEach(slot, ains, aout, v, new LaunchOptions()); + protected void forEach(int slot, Allocation[] ains, Allocation aout, + FieldPacker v) { + forEach(slot, ains, aout, v, null); } /** @@ -196,24 +195,20 @@ public class Script extends BaseObj { * * @hide */ - protected void forEach(int slot, Allocation[] ains, Allocation aout, FieldPacker v, LaunchOptions sc) { + protected void forEach(int slot, Allocation[] ains, Allocation aout, + FieldPacker v, LaunchOptions sc) { + // TODO: Is this necessary if nScriptForEach calls validate as well? mRS.validate(); - for (Allocation ain : ains) { mRS.validateObject(ain); } - mRS.validateObject(aout); + if (ains == null && aout == null) { throw new RSIllegalArgumentException( "At least one of ain or aout is required to be non-null."); } - if (sc == null) { - forEach(slot, ains, aout, v); - return; - } - long[] in_ids = new long[ains.length]; for (int index = 0; index < ains.length; ++index) { in_ids[index] = ains[index].getID(mRS); @@ -223,15 +218,33 @@ public class Script extends BaseObj { if (aout != null) { out_id = aout.getID(mRS); } + byte[] params = null; if (v != null) { params = v.getData(); } - mRS.nScriptForEachMultiClipped(getID(mRS), slot, in_ids, out_id, params, sc.xstart, sc.xend, sc.ystart, sc.yend, sc.zstart, sc.zend); + + int[] limits = null; + if (sc != null) { + limits = new int[6]; + + limits[0] = sc.xstart; + limits[1] = sc.xend; + limits[2] = sc.ystart; + limits[3] = sc.yend; + limits[4] = sc.zstart; + limits[5] = sc.zend; + } + + mRS.nScriptForEach(getID(mRS), slot, in_ids, out_id, params, limits); } + long[] mInIdsBuffer; + Script(long id, RenderScript rs) { super(id, rs); + + mInIdsBuffer = new long[1]; } @@ -243,11 +256,17 @@ public class Script extends BaseObj { mRS.validate(); mRS.validateObject(va); if (va != null) { - if (mRS.getApplicationContext().getApplicationInfo().targetSdkVersion >= 20) { + + android.content.Context context = mRS.getApplicationContext(); + + if (context.getApplicationInfo().targetSdkVersion >= 20) { final Type t = va.mType; - if (t.hasMipmaps() || t.hasFaces() || (t.getY() != 0) || (t.getZ() != 0)) { + if (t.hasMipmaps() || t.hasFaces() || (t.getY() != 0) || + (t.getZ() != 0)) { + throw new RSIllegalArgumentException( - "API 20+ only allows simple 1D allocations to be used with bind."); + "API 20+ only allows simple 1D allocations to be " + + "used with bind."); } } mRS.nScriptBindAllocation(getID(mRS), va.getID(mRS), slot); @@ -378,11 +397,14 @@ public class Script extends BaseObj { protected Allocation mAllocation; protected void init(RenderScript rs, int dimx) { - mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT); + mAllocation = Allocation.createSized(rs, mElement, dimx, + Allocation.USAGE_SCRIPT); } protected void init(RenderScript rs, int dimx, int usages) { - mAllocation = Allocation.createSized(rs, mElement, dimx, Allocation.USAGE_SCRIPT | usages); + mAllocation = + Allocation.createSized(rs, mElement, dimx, + Allocation.USAGE_SCRIPT | usages); } protected FieldBase() { diff --git a/rs/jni/Android.mk b/rs/jni/Android.mk index f1ddc07..f2c2e98 100644 --- a/rs/jni/Android.mk +++ b/rs/jni/Android.mk @@ -25,7 +25,7 @@ LOCAL_C_INCLUDES += \ frameworks/rs \ $(rs_generated_include_dir) -LOCAL_CFLAGS += -Wno-unused-parameter +LOCAL_CFLAGS += -Wno-unused-parameter -std=c++11 LOCAL_ADDITIONAL_DEPENDENCIES := $(addprefix $(rs_generated_include_dir)/,rsgApiFuncDecl.h) LOCAL_MODULE:= librs_jni diff --git a/rs/jni/android_renderscript_RenderScript.cpp b/rs/jni/android_renderscript_RenderScript.cpp index 13a649a..2d94131 100644 --- a/rs/jni/android_renderscript_RenderScript.cpp +++ b/rs/jni/android_renderscript_RenderScript.cpp @@ -49,7 +49,7 @@ using namespace android; #define PER_ARRAY_TYPE(flag, fnc, readonly, ...) { \ jint len = 0; \ - void *ptr = NULL; \ + void *ptr = nullptr; \ size_t typeBytes = 0; \ jint relFlag = 0; \ if (readonly) { \ @@ -112,7 +112,7 @@ using namespace android; class AutoJavaStringToUTF8 { public: AutoJavaStringToUTF8(JNIEnv* env, jstring str) : fEnv(env), fJStr(str) { - fCStr = env->GetStringUTFChars(str, NULL); + fCStr = env->GetStringUTFChars(str, nullptr); fLength = env->GetStringUTFLength(str); } ~AutoJavaStringToUTF8() { @@ -132,14 +132,14 @@ class AutoJavaStringArrayToUTF8 { public: AutoJavaStringArrayToUTF8(JNIEnv* env, jobjectArray strings, jsize stringsLength) : mEnv(env), mStrings(strings), mStringsLength(stringsLength) { - mCStrings = NULL; - mSizeArray = NULL; + mCStrings = nullptr; + mSizeArray = nullptr; if (stringsLength > 0) { mCStrings = (const char **)calloc(stringsLength, sizeof(char *)); mSizeArray = (size_t*)calloc(stringsLength, sizeof(size_t)); for (jsize ct = 0; ct < stringsLength; ct ++) { jstring s = (jstring)mEnv->GetObjectArrayElement(mStrings, ct); - mCStrings[ct] = mEnv->GetStringUTFChars(s, NULL); + mCStrings[ct] = mEnv->GetStringUTFChars(s, nullptr); mSizeArray[ct] = mEnv->GetStringUTFLength(s); } } @@ -201,10 +201,10 @@ static jstring nGetName(JNIEnv *_env, jobject _this, jlong con, jlong obj) { LOG_API("nGetName, con(%p), obj(%p)", (RsContext)con, (void *)obj); - const char *name = NULL; + const char *name = nullptr; rsaGetName((RsContext)con, (void *)obj, &name); - if(name == NULL || strlen(name) == 0) { - return NULL; + if(name == nullptr || strlen(name) == 0) { + return nullptr; } return _env->NewStringUTF(name); } @@ -284,8 +284,8 @@ nContextSetSurface(JNIEnv *_env, jobject _this, jlong con, jint width, jint heig { LOG_API("nContextSetSurface, con(%p), width(%i), height(%i), surface(%p)", (RsContext)con, width, height, (Surface *)wnd); - ANativeWindow * window = NULL; - if (wnd == NULL) { + ANativeWindow * window = nullptr; + if (wnd == nullptr) { } else { window = android_view_Surface_getNativeWindow(_env, wnd).get(); @@ -346,7 +346,7 @@ nContextGetUserMessage(JNIEnv *_env, jobject _this, jlong con, jintArray data) { jint len = _env->GetArrayLength(data); LOG_API("nContextGetMessage, con(%p), len(%i)", (RsContext)con, len); - jint *ptr = _env->GetIntArrayElements(data, NULL); + jint *ptr = _env->GetIntArrayElements(data, nullptr); size_t receiveLen; uint32_t subID; int id = rsContextGetMessage((RsContext)con, @@ -364,7 +364,7 @@ static jint nContextPeekMessage(JNIEnv *_env, jobject _this, jlong con, jintArray auxData) { LOG_API("nContextPeekMessage, con(%p)", (RsContext)con); - jint *auxDataPtr = _env->GetIntArrayElements(auxData, NULL); + jint *auxDataPtr = _env->GetIntArrayElements(auxData, nullptr); size_t receiveLen; uint32_t subID; int id = rsContextPeekMessage((RsContext)con, &receiveLen, sizeof(receiveLen), @@ -390,11 +390,11 @@ static void nContextDeinitToClient(JNIEnv *_env, jobject _this, jlong con) static void nContextSendMessage(JNIEnv *_env, jobject _this, jlong con, jint id, jintArray data) { - jint *ptr = NULL; + jint *ptr = nullptr; jint len = 0; if (data) { len = _env->GetArrayLength(data); - ptr = _env->GetIntArrayElements(data, NULL); + ptr = _env->GetIntArrayElements(data, nullptr); } LOG_API("nContextSendMessage, con(%p), id(%i), len(%i)", (RsContext)con, id, len); rsContextSendMessage((RsContext)con, id, (const uint8_t *)ptr, len * sizeof(int)); @@ -419,8 +419,8 @@ nElementCreate2(JNIEnv *_env, jobject _this, jlong con, int fieldCount = _env->GetArrayLength(_ids); LOG_API("nElementCreate2, con(%p)", (RsContext)con); - jlong *jIds = _env->GetLongArrayElements(_ids, NULL); - jint *jArraySizes = _env->GetIntArrayElements(_arraySizes, NULL); + jlong *jIds = _env->GetLongArrayElements(_ids, nullptr); + jint *jArraySizes = _env->GetIntArrayElements(_arraySizes, nullptr); RsElement *ids = (RsElement*)malloc(fieldCount * sizeof(RsElement)); uint32_t *arraySizes = (uint32_t *)malloc(fieldCount * sizeof(uint32_t)); @@ -549,7 +549,7 @@ nAllocationGetSurface(JNIEnv *_env, jobject _this, jlong con, jlong a) IGraphicBufferProducer *v = (IGraphicBufferProducer *)rsAllocationGetSurface((RsContext)con, (RsAllocation)a); sp<IGraphicBufferProducer> bp = v; - v->decStrong(NULL); + v->decStrong(nullptr); jobject o = android_view_Surface_createFromIGraphicBufferProducer(_env, bp); return o; @@ -685,7 +685,7 @@ nAllocationData1D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint off RsAllocation *alloc = (RsAllocation *)_alloc; LOG_API("nAllocation1DData, con(%p), adapter(%p), offset(%i), count(%i), sizeBytes(%i), dataType(%i)", (RsContext)con, (RsAllocation)alloc, offset, count, sizeBytes, dataType); - PER_ARRAY_TYPE(NULL, rsAllocation1DData, true, (RsContext)con, alloc, offset, lod, count, ptr, sizeBytes); + PER_ARRAY_TYPE(nullptr, rsAllocation1DData, true, (RsContext)con, alloc, offset, lod, count, ptr, sizeBytes); } // Copies from the Java array data into the Allocation pointed to by alloc. @@ -695,7 +695,7 @@ nAllocationElementData1D(JNIEnv *_env, jobject _this, jlong con, jlong alloc, ji { jint len = _env->GetArrayLength(data); LOG_API("nAllocationElementData1D, con(%p), alloc(%p), offset(%i), comp(%i), len(%i), sizeBytes(%i)", (RsContext)con, (RsAllocation)alloc, offset, compIdx, len, sizeBytes); - jbyte *ptr = _env->GetByteArrayElements(data, NULL); + jbyte *ptr = _env->GetByteArrayElements(data, nullptr); rsAllocation1DElementData((RsContext)con, (RsAllocation)alloc, offset, lod, ptr, sizeBytes, compIdx); _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); } @@ -709,7 +709,7 @@ nAllocationData2D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint xof RsAllocationCubemapFace face = (RsAllocationCubemapFace)_face; LOG_API("nAllocation2DData, con(%p), adapter(%p), xoff(%i), yoff(%i), w(%i), h(%i), len(%i) type(%i)", (RsContext)con, alloc, xoff, yoff, w, h, sizeBytes, dataType); - PER_ARRAY_TYPE(NULL, rsAllocation2DData, true, (RsContext)con, alloc, xoff, yoff, lod, face, w, h, ptr, sizeBytes, 0); + PER_ARRAY_TYPE(nullptr, rsAllocation2DData, true, (RsContext)con, alloc, xoff, yoff, lod, face, w, h, ptr, sizeBytes, 0); } // Copies from the Allocation pointed to by srcAlloc into the Allocation @@ -746,7 +746,7 @@ nAllocationData3D(JNIEnv *_env, jobject _this, jlong con, jlong _alloc, jint xof RsAllocation *alloc = (RsAllocation *)_alloc; LOG_API("nAllocation3DData, con(%p), alloc(%p), xoff(%i), yoff(%i), zoff(%i), lod(%i), w(%i), h(%i), d(%i), sizeBytes(%i)", (RsContext)con, (RsAllocation)alloc, xoff, yoff, zoff, lod, w, h, d, sizeBytes); - PER_ARRAY_TYPE(NULL, rsAllocation3DData, true, (RsContext)con, alloc, xoff, yoff, zoff, lod, w, h, d, ptr, sizeBytes, 0); + PER_ARRAY_TYPE(nullptr, rsAllocation3DData, true, (RsContext)con, alloc, xoff, yoff, zoff, lod, w, h, d, ptr, sizeBytes, 0); } // Copies from the Allocation pointed to by srcAlloc into the Allocation @@ -836,13 +836,13 @@ static jlong nFileA3DCreateFromAsset(JNIEnv *_env, jobject _this, jlong con, jobject _assetMgr, jstring _path) { AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr); - if (mgr == NULL) { + if (mgr == nullptr) { return 0; } AutoJavaStringToUTF8 str(_env, _path); Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER); - if (asset == NULL) { + if (asset == nullptr) { return 0; } @@ -924,13 +924,13 @@ nFontCreateFromAsset(JNIEnv *_env, jobject _this, jlong con, jobject _assetMgr, jfloat fontSize, jint dpi) { AssetManager* mgr = assetManagerForJavaObject(_env, _assetMgr); - if (mgr == NULL) { + if (mgr == nullptr) { return 0; } AutoJavaStringToUTF8 str(_env, _path); Asset* asset = mgr->open(str.c_str(), Asset::ACCESS_BUFFER); - if (asset == NULL) { + if (asset == nullptr) { return 0; } @@ -1027,7 +1027,7 @@ nScriptSetVarV(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, { LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); jint len = _env->GetArrayLength(data); - jbyte *ptr = _env->GetByteArrayElements(data, NULL); + jbyte *ptr = _env->GetByteArrayElements(data, nullptr); rsScriptSetVarV((RsContext)con, (RsScript)script, slot, ptr, len); _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); } @@ -1037,7 +1037,7 @@ nScriptGetVarV(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, { LOG_API("nScriptSetVarV, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); jint len = _env->GetArrayLength(data); - jbyte *ptr = _env->GetByteArrayElements(data, NULL); + jbyte *ptr = _env->GetByteArrayElements(data, nullptr); rsScriptGetVarV((RsContext)con, (RsScript)script, slot, ptr, len); _env->ReleaseByteArrayElements(data, ptr, 0); } @@ -1047,9 +1047,9 @@ nScriptSetVarVE(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, { LOG_API("nScriptSetVarVE, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); jint len = _env->GetArrayLength(data); - jbyte *ptr = _env->GetByteArrayElements(data, NULL); + jbyte *ptr = _env->GetByteArrayElements(data, nullptr); jint dimsLen = _env->GetArrayLength(dims) * sizeof(int); - jint *dimsPtr = _env->GetIntArrayElements(dims, NULL); + jint *dimsPtr = _env->GetIntArrayElements(dims, nullptr); rsScriptSetVarVE((RsContext)con, (RsScript)script, slot, ptr, len, (RsElement)elem, (const uint32_t*) dimsPtr, dimsLen); _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); @@ -1085,165 +1085,88 @@ nScriptInvokeV(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, { LOG_API("nScriptInvokeV, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); jint len = _env->GetArrayLength(data); - jbyte *ptr = _env->GetByteArrayElements(data, NULL); + jbyte *ptr = _env->GetByteArrayElements(data, nullptr); rsScriptInvokeV((RsContext)con, (RsScript)script, slot, ptr, len); _env->ReleaseByteArrayElements(data, ptr, JNI_ABORT); } static void -nScriptForEach(JNIEnv *_env, jobject _this, jlong con, - jlong script, jint slot, jlong ain, jlong aout) +nScriptForEach(JNIEnv *_env, jobject _this, jlong con, jlong script, jint slot, + jlongArray ains, jlong aout, jbyteArray params, + jintArray limits) { - LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); - rsScriptForEach((RsContext)con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0, NULL, 0); -} -static void -nScriptForEachV(JNIEnv *_env, jobject _this, jlong con, - jlong script, jint slot, jlong ain, jlong aout, jbyteArray params) -{ - LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); - jint len = _env->GetArrayLength(params); - jbyte *ptr = _env->GetByteArrayElements(params, NULL); - rsScriptForEach((RsContext)con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len, NULL, 0); - _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT); -} - -static void -nScriptForEachClipped(JNIEnv *_env, jobject _this, jlong con, - jlong script, jint slot, jlong ain, jlong aout, - jint xstart, jint xend, - jint ystart, jint yend, jint zstart, jint zend) -{ - LOG_API("nScriptForEachClipped, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); - RsScriptCall sc; - sc.xStart = xstart; - sc.xEnd = xend; - sc.yStart = ystart; - sc.yEnd = yend; - sc.zStart = zstart; - sc.zEnd = zend; - sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE; - sc.arrayStart = 0; - sc.arrayEnd = 0; - rsScriptForEach((RsContext)con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0, &sc, sizeof(sc)); -} - -static void -nScriptForEachClippedV(JNIEnv *_env, jobject _this, jlong con, - jlong script, jint slot, jlong ain, jlong aout, - jbyteArray params, jint xstart, jint xend, - jint ystart, jint yend, jint zstart, jint zend) -{ - LOG_API("nScriptForEachClipped, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); - jint len = _env->GetArrayLength(params); - jbyte *ptr = _env->GetByteArrayElements(params, NULL); - RsScriptCall sc; - sc.xStart = xstart; - sc.xEnd = xend; - sc.yStart = ystart; - sc.yEnd = yend; - sc.zStart = zstart; - sc.zEnd = zend; - sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE; - sc.arrayStart = 0; - sc.arrayEnd = 0; - rsScriptForEach((RsContext)con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len, &sc, sizeof(sc)); - _env->ReleaseByteArrayElements(params, ptr, JNI_ABORT); -} + LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", (RsContext)con, + (void *)script, slot); -static void -nScriptForEachMultiClipped(JNIEnv *_env, jobject _this, jlong con, - jlong script, jint slot, jlongArray ains, jlong aout, - jint xstart, jint xend, - jint ystart, jint yend, jint zstart, jint zend) -{ - LOG_API("nScriptForEachMultiClipped, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); + jint in_len = 0; + jlong *in_ptr = nullptr; - jint in_len = _env->GetArrayLength(ains); - jlong* in_ptr = _env->GetLongArrayElements(ains, NULL); + RsAllocation *in_allocs = nullptr; - RsAllocation *in_allocs = NULL; + if (ains != nullptr) { + in_len = _env->GetArrayLength(ains); + in_ptr = _env->GetLongArrayElements(ains, nullptr); - if (sizeof(RsAllocation) == sizeof(jlong)) { - in_allocs = (RsAllocation*)in_ptr; + if (sizeof(RsAllocation) == sizeof(jlong)) { + in_allocs = (RsAllocation*)in_ptr; - } else { - // Convert from 64-bit jlong types to the native pointer type. + } else { + // Convert from 64-bit jlong types to the native pointer type. - in_allocs = new RsAllocation[in_len]; + in_allocs = (RsAllocation*)alloca(in_len * sizeof(RsAllocation)); - for (int index = in_len; --index >= 0;) { - in_allocs[index] = (RsAllocation)in_ptr[index]; - } + for (int index = in_len; --index >= 0;) { + in_allocs[index] = (RsAllocation)in_ptr[index]; + } + } } - RsScriptCall sc; - sc.xStart = xstart; - sc.xEnd = xend; - sc.yStart = ystart; - sc.yEnd = yend; - sc.zStart = zstart; - sc.zEnd = zend; - sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE; - sc.arrayStart = 0; - sc.arrayEnd = 0; - - rsScriptForEachMulti((RsContext)con, (RsScript)script, slot, in_allocs, in_len, (RsAllocation)aout, NULL, 0, &sc, sizeof(sc)); - - if (sizeof(RsAllocation) != sizeof(jlong)) { - delete[] in_allocs; + jint param_len = 0; + jbyte *param_ptr = nullptr; + + if (params != nullptr) { + param_len = _env->GetArrayLength(params); + param_ptr = _env->GetByteArrayElements(params, nullptr); } - _env->ReleaseLongArrayElements(ains, in_ptr, JNI_ABORT); -} + RsScriptCall sc, *sca = nullptr; + uint32_t sc_size = 0; -static void -nScriptForEachMultiClippedV(JNIEnv *_env, jobject _this, jlong con, - jlong script, jint slot, jlongArray ains, jlong aout, - jbyteArray params, jint xstart, jint xend, - jint ystart, jint yend, jint zstart, jint zend) -{ - LOG_API("nScriptForEachMultiClippedV, con(%p), s(%p), slot(%i)", (RsContext)con, (void *)script, slot); + jint limit_len = 0; + jint *limit_ptr = nullptr; - jint in_len = _env->GetArrayLength(ains); - jlong* in_ptr = _env->GetLongArrayElements(ains, NULL); + if (limits != nullptr) { + limit_len = _env->GetArrayLength(limits); + limit_ptr = _env->GetIntArrayElements(limits, nullptr); - RsAllocation *in_allocs = NULL; + assert(limit_len == 6); - if (sizeof(RsAllocation) == sizeof(jlong)) { - in_allocs = (RsAllocation*)in_ptr; + sc.xStart = limit_ptr[0]; + sc.xEnd = limit_ptr[1]; + sc.yStart = limit_ptr[2]; + sc.yEnd = limit_ptr[3]; + sc.zStart = limit_ptr[4]; + sc.zEnd = limit_ptr[5]; + sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE; - } else { - // Convert from 64-bit jlong types to the native pointer type. + sca = ≻ + } - in_allocs = new RsAllocation[in_len]; + rsScriptForEachMulti((RsContext)con, (RsScript)script, slot, + in_allocs, in_len, (RsAllocation)aout, + param_ptr, param_len, sca, sc_size); - for (int index = in_len; --index >= 0;) { - in_allocs[index] = (RsAllocation)in_ptr[index]; - } + if (ains != nullptr) { + _env->ReleaseLongArrayElements(ains, in_ptr, JNI_ABORT); } - jint param_len = _env->GetArrayLength(params); - jbyte* param_ptr = _env->GetByteArrayElements(params, NULL); - - RsScriptCall sc; - sc.xStart = xstart; - sc.xEnd = xend; - sc.yStart = ystart; - sc.yEnd = yend; - sc.zStart = zstart; - sc.zEnd = zend; - sc.strategy = RS_FOR_EACH_STRATEGY_DONT_CARE; - sc.arrayStart = 0; - sc.arrayEnd = 0; - rsScriptForEachMulti((RsContext)con, (RsScript)script, slot, in_allocs, in_len, (RsAllocation)aout, param_ptr, param_len, &sc, sizeof(sc)); - - if (sizeof(RsAllocation) != sizeof(jlong)) { - delete[] in_allocs; + if (params != nullptr) { + _env->ReleaseByteArrayElements(params, param_ptr, JNI_ABORT); } - _env->ReleaseLongArrayElements(ains, in_ptr, JNI_ABORT); - _env->ReleaseByteArrayElements(params, param_ptr, JNI_ABORT); + if (limits != nullptr) { + _env->ReleaseIntArrayElements(limits, limit_ptr, JNI_ABORT); + } } // ----------------------------------- @@ -1258,7 +1181,7 @@ nScriptCCreate(JNIEnv *_env, jobject _this, jlong con, AutoJavaStringToUTF8 resNameUTF(_env, resName); AutoJavaStringToUTF8 cacheDirUTF(_env, cacheDir); jlong ret = 0; - jbyte* script_ptr = NULL; + jbyte* script_ptr = nullptr; jint _exception = 0; jint remaining; if (!scriptRef) { @@ -1325,35 +1248,35 @@ nScriptGroupCreate(JNIEnv *_env, jobject _this, jlong con, jlongArray _kernels, LOG_API("nScriptGroupCreate, con(%p)", (RsContext)con); jint kernelsLen = _env->GetArrayLength(_kernels); - jlong *jKernelsPtr = _env->GetLongArrayElements(_kernels, NULL); + jlong *jKernelsPtr = _env->GetLongArrayElements(_kernels, nullptr); RsScriptKernelID* kernelsPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * kernelsLen); for(int i = 0; i < kernelsLen; ++i) { kernelsPtr[i] = (RsScriptKernelID)jKernelsPtr[i]; } jint srcLen = _env->GetArrayLength(_src); - jlong *jSrcPtr = _env->GetLongArrayElements(_src, NULL); + jlong *jSrcPtr = _env->GetLongArrayElements(_src, nullptr); RsScriptKernelID* srcPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * srcLen); for(int i = 0; i < srcLen; ++i) { srcPtr[i] = (RsScriptKernelID)jSrcPtr[i]; } jint dstkLen = _env->GetArrayLength(_dstk); - jlong *jDstkPtr = _env->GetLongArrayElements(_dstk, NULL); + jlong *jDstkPtr = _env->GetLongArrayElements(_dstk, nullptr); RsScriptKernelID* dstkPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * dstkLen); for(int i = 0; i < dstkLen; ++i) { dstkPtr[i] = (RsScriptKernelID)jDstkPtr[i]; } jint dstfLen = _env->GetArrayLength(_dstf); - jlong *jDstfPtr = _env->GetLongArrayElements(_dstf, NULL); + jlong *jDstfPtr = _env->GetLongArrayElements(_dstf, nullptr); RsScriptKernelID* dstfPtr = (RsScriptKernelID*) malloc(sizeof(RsScriptKernelID) * dstfLen); for(int i = 0; i < dstfLen; ++i) { dstfPtr[i] = (RsScriptKernelID)jDstfPtr[i]; } jint typesLen = _env->GetArrayLength(_types); - jlong *jTypesPtr = _env->GetLongArrayElements(_types, NULL); + jlong *jTypesPtr = _env->GetLongArrayElements(_types, nullptr); RsType* typesPtr = (RsType*) malloc(sizeof(RsType) * typesLen); for(int i = 0; i < typesLen; ++i) { typesPtr[i] = (RsType)jTypesPtr[i]; @@ -1447,7 +1370,7 @@ nProgramFragmentCreate(JNIEnv *_env, jobject _this, jlong con, jstring shader, jobjectArray texNames, jlongArray params) { AutoJavaStringToUTF8 shaderUTF(_env, shader); - jlong *jParamPtr = _env->GetLongArrayElements(params, NULL); + jlong *jParamPtr = _env->GetLongArrayElements(params, nullptr); jint paramLen = _env->GetArrayLength(params); int texCount = _env->GetArrayLength(texNames); @@ -1478,7 +1401,7 @@ nProgramVertexCreate(JNIEnv *_env, jobject _this, jlong con, jstring shader, jobjectArray texNames, jlongArray params) { AutoJavaStringToUTF8 shaderUTF(_env, shader); - jlong *jParamPtr = _env->GetLongArrayElements(params, NULL); + jlong *jParamPtr = _env->GetLongArrayElements(params, nullptr); jint paramLen = _env->GetArrayLength(params); LOG_API("nProgramVertexCreate, con(%p), paramLen(%i)", (RsContext)con, paramLen); @@ -1584,21 +1507,21 @@ nMeshCreate(JNIEnv *_env, jobject _this, jlong con, jlongArray _vtx, jlongArray LOG_API("nMeshCreate, con(%p)", (RsContext)con); jint vtxLen = _env->GetArrayLength(_vtx); - jlong *jVtxPtr = _env->GetLongArrayElements(_vtx, NULL); + jlong *jVtxPtr = _env->GetLongArrayElements(_vtx, nullptr); RsAllocation* vtxPtr = (RsAllocation*) malloc(sizeof(RsAllocation) * vtxLen); for(int i = 0; i < vtxLen; ++i) { vtxPtr[i] = (RsAllocation)(uintptr_t)jVtxPtr[i]; } jint idxLen = _env->GetArrayLength(_idx); - jlong *jIdxPtr = _env->GetLongArrayElements(_idx, NULL); + jlong *jIdxPtr = _env->GetLongArrayElements(_idx, nullptr); RsAllocation* idxPtr = (RsAllocation*) malloc(sizeof(RsAllocation) * idxLen); for(int i = 0; i < idxLen; ++i) { idxPtr[i] = (RsAllocation)(uintptr_t)jIdxPtr[i]; } jint primLen = _env->GetArrayLength(_prim); - jint *primPtr = _env->GetIntArrayElements(_prim, NULL); + jint *primPtr = _env->GetIntArrayElements(_prim, nullptr); jlong id = (jlong)(uintptr_t)rsMeshCreate((RsContext)con, (RsAllocation *)vtxPtr, vtxLen, @@ -1757,12 +1680,9 @@ static JNINativeMethod methods[] = { {"rsnScriptSetTimeZone", "(JJ[B)V", (void*)nScriptSetTimeZone }, {"rsnScriptInvoke", "(JJI)V", (void*)nScriptInvoke }, {"rsnScriptInvokeV", "(JJI[B)V", (void*)nScriptInvokeV }, -{"rsnScriptForEach", "(JJIJJ)V", (void*)nScriptForEach }, -{"rsnScriptForEach", "(JJIJJ[B)V", (void*)nScriptForEachV }, -{"rsnScriptForEachClipped", "(JJIJJIIIIII)V", (void*)nScriptForEachClipped }, -{"rsnScriptForEachClipped", "(JJIJJ[BIIIIII)V", (void*)nScriptForEachClippedV }, -{"rsnScriptForEachMultiClipped", "(JJI[JJIIIIII)V", (void*)nScriptForEachMultiClipped }, -{"rsnScriptForEachMultiClipped", "(JJI[JJ[BIIIIII)V", (void*)nScriptForEachMultiClippedV }, + +{"rsnScriptForEach", "(JJI[JJ[B[I)V", (void*)nScriptForEach }, + {"rsnScriptSetVarI", "(JJII)V", (void*)nScriptSetVarI }, {"rsnScriptGetVarI", "(JJI)I", (void*)nScriptGetVarI }, {"rsnScriptSetVarJ", "(JJIJ)V", (void*)nScriptSetVarJ }, @@ -1824,14 +1744,14 @@ static int registerFuncs(JNIEnv *_env) jint JNI_OnLoad(JavaVM* vm, void* reserved) { - JNIEnv* env = NULL; + JNIEnv* env = nullptr; jint result = -1; if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { ALOGE("ERROR: GetEnv failed\n"); goto bail; } - assert(env != NULL); + assert(env != nullptr); if (registerFuncs(env) < 0) { ALOGE("ERROR: Renderscript native registration failed\n"); diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 3efd049..3efd049 100755..100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java diff --git a/services/core/java/com/android/server/pm/SELinuxMMAC.java b/services/core/java/com/android/server/pm/SELinuxMMAC.java index 81302b9..98f2997 100644 --- a/services/core/java/com/android/server/pm/SELinuxMMAC.java +++ b/services/core/java/com/android/server/pm/SELinuxMMAC.java @@ -137,6 +137,14 @@ public final class SELinuxMMAC { } public static boolean readInstallPolicy() { + return readInstallPolicy(MAC_PERMISSIONS); + } + + public static boolean readInstallPolicy(String macPermsPath) { + if (macPermsPath == null) { + throw new NullPointerException("mac_permissions.xml file path is null"); + } + // Temp structures to hold the rules while we parse the xml file. // We add all the rules together once we know there's no structural problems. HashMap<Signature, Policy> sigSeinfo = new HashMap<Signature, Policy>(); @@ -144,8 +152,8 @@ public final class SELinuxMMAC { FileReader policyFile = null; try { - policyFile = new FileReader(MAC_PERMISSIONS); - Slog.d(TAG, "Using policy file " + MAC_PERMISSIONS); + policyFile = new FileReader(macPermsPath); + Slog.d(TAG, "Using policy file " + macPermsPath); XmlPullParser parser = Xml.newPullParser(); parser.setInput(policyFile); @@ -190,10 +198,10 @@ public final class SELinuxMMAC { } } } catch (XmlPullParserException xpe) { - Slog.w(TAG, "Got exception parsing " + MAC_PERMISSIONS, xpe); + Slog.w(TAG, "Got exception parsing " + macPermsPath, xpe); return false; } catch (IOException ioe) { - Slog.w(TAG, "Got exception parsing " + MAC_PERMISSIONS, ioe); + Slog.w(TAG, "Got exception parsing " + macPermsPath, ioe); return false; } finally { IoUtils.closeQuietly(policyFile); diff --git a/tools/obbtool/Main.cpp b/tools/obbtool/Main.cpp index b2152e8..64808c0 100644 --- a/tools/obbtool/Main.cpp +++ b/tools/obbtool/Main.cpp @@ -89,7 +89,7 @@ void usage(void) " Prints the OBB signature information of a file.\n\n", gProgName); } -void doAdd(const char* filename, struct PackageInfo* info) { +void doAdd(const char* filename, PackageInfo* info) { ObbFile *obb = new ObbFile(); if (obb->readFrom(filename)) { fprintf(stderr, "ERROR: %s: OBB signature already present\n", filename); @@ -182,7 +182,7 @@ int main(int argc, char* const argv[]) { int opt; int option_index = 0; - struct PackageInfo package_info; + PackageInfo package_info; int result = 1; // pessimistically assume an error. diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java b/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java index d65d03e..92c7e36 100644 --- a/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java +++ b/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java @@ -77,6 +77,7 @@ public class WifiP2pWfdInfo implements Parcelable { public boolean setDeviceType(int deviceType) { if (deviceType >= WFD_SOURCE && deviceType <= SOURCE_OR_PRIMARY_SINK) { + mDeviceInfo &= ~DEVICE_TYPE; mDeviceInfo |= deviceType; return true; } |