diff options
22 files changed, 280 insertions, 413 deletions
| diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 25a43a6a2969..8a63adf075ac 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -2289,7 +2289,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te                  lp = (LayoutParams) vlp;              }              lp.itemId = mAdapter.getItemId(position); -            child.setLayoutParams(lp); +            if (lp != vlp) { +              child.setLayoutParams(lp); +            }          }          if (AccessibilityManager.getInstance(mContext).isEnabled()) { diff --git a/core/java/com/android/internal/app/ExternalMediaFormatActivity.java b/core/java/com/android/internal/app/ExternalMediaFormatActivity.java index 5ab9217b6b12..8efe8adcbd61 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;  /** @@ -95,6 +96,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 5ce658b74e04..eacfee551c5f 100644 --- a/core/java/com/android/internal/os/ZygoteInit.java +++ b/core/java/com/android/internal/os/ZygoteInit.java @@ -87,12 +87,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"; @@ -286,11 +280,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); @@ -309,15 +298,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); @@ -347,8 +327,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); @@ -366,10 +344,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) { @@ -394,22 +369,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)); @@ -430,14 +395,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)); @@ -459,7 +416,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, @@ -468,9 +425,6 @@ public class ZygoteInit {          System.gc();          runtime.runFinalizationSync();          System.gc(); -        runtime.runFinalizationSync(); -        System.gc(); -        runtime.runFinalizationSync();      }      /** @@ -613,7 +567,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. @@ -682,27 +636,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 7dfb403d04f9..096d4cdc2518 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -798,7 +798,7 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv)                                     "-Xmx", "-Xcompiler-option");          if (skip_compilation) {              addOption("-Xcompiler-option"); -            addOption("--compiler-filter=interpret-only"); +            addOption("--compiler-filter=verify-none");          } else {              parseCompilerOption("dalvik.vm.dex2oat-filter", dex2oatCompilerFilterBuf,                                  "--compiler-filter=", "-Xcompiler-option"); diff --git a/core/jni/android_net_LocalSocketImpl.cpp b/core/jni/android_net_LocalSocketImpl.cpp index 98f4bed1fc90..a408a96cd2fa 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 a8ed89554261..15d62a2bd476 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 26405b59a386..cebcaae70037 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 7e12b1ea71b6..ca21fd716a5f 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 662af895e04f..fbe55e2f3aed 100644 --- a/core/jni/android_util_Binder.cpp +++ b/core/jni/android_util_Binder.cpp @@ -179,7 +179,10 @@ static void report_exception(JNIEnv* env, jthrowable excep, const char* msg)      env->ExceptionClear();      jstring tagstr = env->NewStringUTF(LOG_TAG); -    jstring msgstr = env->NewStringUTF(msg); +    jstring msgstr = NULL; +    if (tagstr != NULL) { +        msgstr = env->NewStringUTF(msg); +    }      if ((tagstr == NULL) || (msgstr == NULL)) {          env->ExceptionClear();      /* assume exception (OOM?) was thrown */ @@ -269,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.)"); @@ -293,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 @@ -400,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!");              } @@ -1033,16 +1036,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 31876ce52533..fbe7a17362de 100644 --- a/core/jni/android_util_Process.cpp +++ b/core/jni/android_util_Process.cpp @@ -268,7 +268,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) { @@ -303,7 +303,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!"); @@ -330,7 +330,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 2233ee3e012b..10c6e2ce3a83 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 a3b81327b738..a401deba8fd7 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -469,10 +469,10 @@      <integer name="config_longPressOnPowerBehavior">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> @@ -888,7 +888,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 @@ -900,7 +900,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. @@ -908,7 +908,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. @@ -1085,7 +1085,8 @@      <!-- 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.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>      <!-- Base "touch slop" value used by ViewConfiguration as a           movement threshold where scrolling should begin. --> @@ -1222,20 +1223,20 @@      <!-- 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>      <!-- 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 1ab18ad056dc..5f6e831a0200 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 2c36ab7c0c3b..e634e30b59d5 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 f2b1380d5ac4..bd272bcc2e7b 100644 --- a/rs/java/android/renderscript/RenderScript.java +++ b/rs/java/android/renderscript/RenderScript.java @@ -590,52 +590,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 c49ef948db97..eb1687a37a49 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 e69432d78b9e..93a824f0e72f 100644 --- a/rs/jni/Android.mk +++ b/rs/jni/Android.mk @@ -26,7 +26,7 @@ LOCAL_C_INCLUDES += \  	$(rs_generated_include_dir) \  	$(call include-path-for, corecg graphics) -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 7133a212c481..7e2ff84e8a5e 100644 --- a/rs/jni/android_renderscript_RenderScript.cpp +++ b/rs/jni/android_renderscript_RenderScript.cpp @@ -52,7 +52,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) {                                                                     \ @@ -115,7 +115,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() { @@ -135,14 +135,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);              }          } @@ -204,10 +204,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);  } @@ -287,8 +287,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(); @@ -349,7 +349,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, @@ -367,7 +367,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), @@ -393,11 +393,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); -        jint *ptr = _env->GetIntArrayElements(data, NULL); +        jint *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)); @@ -422,8 +422,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)); @@ -552,7 +552,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; @@ -688,7 +688,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. @@ -698,7 +698,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);  } @@ -712,7 +712,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 @@ -749,7 +749,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 @@ -839,13 +839,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;      } @@ -927,13 +927,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;      } @@ -1030,7 +1030,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);  } @@ -1040,7 +1040,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);  } @@ -1050,9 +1050,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); @@ -1088,165 +1088,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); +    }  }  // ----------------------------------- @@ -1261,7 +1184,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) { @@ -1328,35 +1251,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]; @@ -1450,7 +1373,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); @@ -1481,7 +1404,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); @@ -1587,21 +1510,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)rsMeshCreate((RsContext)con,                                 (RsAllocation *)vtxPtr, vtxLen, @@ -1760,12 +1683,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 }, @@ -1827,14 +1747,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/tests/CanvasCompare/src/com/android/test/hwuicompare/ErrorCalculator.java b/tests/CanvasCompare/src/com/android/test/hwuicompare/ErrorCalculator.java index a08b558fee1f..9e3ab4261397 100644 --- a/tests/CanvasCompare/src/com/android/test/hwuicompare/ErrorCalculator.java +++ b/tests/CanvasCompare/src/com/android/test/hwuicompare/ErrorCalculator.java @@ -57,7 +57,7 @@ public class ErrorCalculator {          for (int i = 0; i < rowIndices.length; i++)              rowIndices[i] = i * REGION_SIZE; -        mScript = new ScriptC_errorCalculator(mRS, resources, R.raw.errorcalculator); +        mScript = new ScriptC_errorCalculator(mRS);          mScript.set_HEIGHT(height);          mScript.set_WIDTH(width);          mScript.set_REGION_SIZE(REGION_SIZE); diff --git a/tests/RenderScriptTests/FountainFbo/Android.mk b/tests/RenderScriptTests/FountainFbo/Android.mk index 4535eb1c0469..c0f332328ded 100644 --- a/tests/RenderScriptTests/FountainFbo/Android.mk +++ b/tests/RenderScriptTests/FountainFbo/Android.mk @@ -25,5 +25,6 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-renderscript-fil  # LOCAL_SDK_VERSION := current  LOCAL_PACKAGE_NAME := RsFountainFbo +LOCAL_SDK_VERSION := 14  include $(BUILD_PACKAGE) diff --git a/tools/obbtool/Main.cpp b/tools/obbtool/Main.cpp index b2152e8f8468..64808c0a755f 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 d65d03ed1db2..92c7e36a7bb3 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;          } |