Remove unnecessary locking from MediaScanner JNI code

There is nothing in this file that requires a global lock.
Furthermore, the lock can cause timeouts in native_finalize if one instance
is being garbage collected while another is busy in processDirectory

Bug: 5002520

Change-Id: I8717f8edeb932200d9f76b3d98915cfbe18b6ec6
Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java
index c55338a..799bd00 100644
--- a/media/java/android/media/MediaScanner.java
+++ b/media/java/android/media/MediaScanner.java
@@ -101,6 +101,8 @@
  * Java MyMediaScanner handleStringTag.
  * Once MediaScanner processFile returns, an entry is inserted in to the database.
  *
+ * The MediaScanner class is not thread-safe, so it should only be used in a single threaded manner.
+ *
  * {@hide}
  */
 public class MediaScanner
diff --git a/media/jni/android_media_MediaScanner.cpp b/media/jni/android_media_MediaScanner.cpp
index 9151799..d0d2d1e 100644
--- a/media/jni/android_media_MediaScanner.cpp
+++ b/media/jni/android_media_MediaScanner.cpp
@@ -45,7 +45,6 @@
     jfieldID    context;
 };
 static fields_t fields;
-static Mutex sLock;
 
 class MyMediaScannerClient : public MediaScannerClient
 {
@@ -159,13 +158,11 @@
     return ((JNIEnv *)env)->ExceptionCheck();
 }
 
-// Call this method with sLock hold
 static MediaScanner *getNativeScanner_l(JNIEnv* env, jobject thiz)
 {
     return (MediaScanner *) env->GetIntField(thiz, fields.context);
 }
 
-// Call this method with sLock hold
 static void setNativeScanner_l(JNIEnv* env, jobject thiz, MediaScanner *s)
 {
     env->SetIntField(thiz, fields.context, (int)s);
@@ -176,7 +173,6 @@
         JNIEnv *env, jobject thiz, jstring path, jobject client)
 {
     LOGV("processDirectory");
-    Mutex::Autolock l(sLock);
     MediaScanner *mp = getNativeScanner_l(env, thiz);
     if (mp == NULL) {
         jniThrowException(env, kRunTimeException, "No scanner available");
@@ -243,7 +239,6 @@
         JNIEnv *env, jobject thiz, jstring locale)
 {
     LOGV("setLocale");
-    Mutex::Autolock l(sLock);
     MediaScanner *mp = getNativeScanner_l(env, thiz);
     if (mp == NULL) {
         jniThrowException(env, kRunTimeException, "No scanner available");
@@ -268,7 +263,6 @@
         JNIEnv *env, jobject thiz, jobject fileDescriptor)
 {
     LOGV("extractAlbumArt");
-    Mutex::Autolock l(sLock);
     MediaScanner *mp = getNativeScanner_l(env, thiz);
     if (mp == NULL) {
         jniThrowException(env, kRunTimeException, "No scanner available");
@@ -339,7 +333,6 @@
 android_media_MediaScanner_native_finalize(JNIEnv *env, jobject thiz)
 {
     LOGV("native_finalize");
-    Mutex::Autolock l(sLock);
     MediaScanner *mp = getNativeScanner_l(env, thiz);
     if (mp == 0) {
         return;