Make sure to always release the wake lock
b/6700936
b/6809256
b/6778795
Change-Id: Id6fe3bea44884433f6255199d85fa8a1431e44ea
diff --git a/src/com/android/providers/media/MediaScannerService.java b/src/com/android/providers/media/MediaScannerService.java
index 99bd734..46e5b2e 100644
--- a/src/com/android/providers/media/MediaScannerService.java
+++ b/src/com/android/providers/media/MediaScannerService.java
@@ -85,31 +85,34 @@
}
private void scan(String[] directories, String volumeName) {
+ Uri uri = Uri.parse("file://" + directories[0]);
// don't sleep while scanning
mWakeLock.acquire();
- ContentValues values = new ContentValues();
- values.put(MediaStore.MEDIA_SCANNER_VOLUME, volumeName);
- Uri scanUri = getContentResolver().insert(MediaStore.getMediaScannerUri(), values);
-
- Uri uri = Uri.parse("file://" + directories[0]);
- sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_STARTED, uri));
-
try {
- if (volumeName.equals(MediaProvider.EXTERNAL_VOLUME)) {
- openDatabase(volumeName);
+ ContentValues values = new ContentValues();
+ values.put(MediaStore.MEDIA_SCANNER_VOLUME, volumeName);
+ Uri scanUri = getContentResolver().insert(MediaStore.getMediaScannerUri(), values);
+
+ sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_STARTED, uri));
+
+ try {
+ if (volumeName.equals(MediaProvider.EXTERNAL_VOLUME)) {
+ openDatabase(volumeName);
+ }
+
+ MediaScanner scanner = createMediaScanner();
+ scanner.scanDirectories(directories, volumeName);
+ } catch (Exception e) {
+ Log.e(TAG, "exception in MediaScanner.scan()", e);
}
- MediaScanner scanner = createMediaScanner();
- scanner.scanDirectories(directories, volumeName);
- } catch (Exception e) {
- Log.e(TAG, "exception in MediaScanner.scan()", e);
+ getContentResolver().delete(scanUri, null, null);
+
+ } finally {
+ sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_FINISHED, uri));
+ mWakeLock.release();
}
-
- getContentResolver().delete(scanUri, null, null);
-
- sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_FINISHED, uri));
- mWakeLock.release();
}
@Override