summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEmilian Peev <epeevs@codeaurora.org>2015-01-29 12:28:44 +0200
committerEmilian Peev <epeevs@codeaurora.org>2015-03-05 18:17:22 +0200
commit38779f3d24bd9ec3f3b44db587a97b7aecdea281 (patch)
tree1d4dc8699933b00fc5645e41e0d09fbe3f74b6c8 /src
parent51bbe05b25fcb9b3cd35bd79f100e420b01bd5f6 (diff)
downloadandroid_packages_apps_Snap-38779f3d24bd9ec3f3b44db587a97b7aecdea281.tar.gz
android_packages_apps_Snap-38779f3d24bd9ec3f3b44db587a97b7aecdea281.tar.bz2
android_packages_apps_Snap-38779f3d24bd9ec3f3b44db587a97b7aecdea281.zip
SnapdragonCamera: Don't display metadata in paused state
The media metadata retrieval is executed in separate 'async' thread. Once done an UI dialog is generated using the resulting data. A race condition is possible when the query thread is triggered and the activity itself is paused. If the task finishes after the application is no longer running, then the UI dialog box sequence can lead to a runtime exception. To resolve this an additional check is needed which will skip the metadata display step in case the applicaiton is already paused. Change-Id: I19e2a044441e4bfb9eca05445a821a2f7bc43548
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/CameraActivity.java5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index 8968377e9..49fa4e99d 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -212,6 +212,7 @@ public class CameraActivity extends Activity
private boolean mIsEditActivityInProgress = false;
private View mPreviewCover;
private FrameLayout mPreviewContentLayout;
+ private boolean mPaused = true;
private Uri[] mNfcPushUris = new Uri[1];
@@ -1307,7 +1308,7 @@ public class CameraActivity extends Activity
@Override
protected void onPostExecute(MediaDetails mediaDetails) {
- if (mediaDetails != null) {
+ if ((mediaDetails != null) && !mPaused) {
DetailsDialog.create(CameraActivity.this, mediaDetails).show();
}
}
@@ -1570,6 +1571,7 @@ public class CameraActivity extends Activity
super.onPause();
mCurrentModule.onPauseAfterSuper();
+ mPaused = true;
mLocalImagesObserver.setActivityPaused(true);
mLocalVideosObserver.setActivityPaused(true);
}
@@ -1595,6 +1597,7 @@ public class CameraActivity extends Activity
mOrientationListener.enable();
mCurrentModule.onResumeBeforeSuper();
super.onResume();
+ mPaused = false;
mCurrentModule.onResumeAfterSuper();
setSwipingEnabled(true);