summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmilian Peev <epeevs@codeaurora.org>2016-01-07 20:05:40 +0100
committerDaniel Hillenbrand <codeworkx@cyanogenmod.org>2016-01-07 11:38:59 -0800
commit879b1f056189230e25f147dcaaca1c8bf926f0c5 (patch)
treed8d5d340546eb29ce305444f3dfcef61d70635ce
parentc606f39e5978a002b138e784d574bb9be56a2a01 (diff)
downloadandroid_packages_apps_Snap-879b1f056189230e25f147dcaaca1c8bf926f0c5.tar.gz
android_packages_apps_Snap-879b1f056189230e25f147dcaaca1c8bf926f0c5.tar.bz2
android_packages_apps_Snap-879b1f056189230e25f147dcaaca1c8bf926f0c5.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: I8ed5f9b54575278f337d720f997ee649cee3f2f6
-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 1ba6022f5..a9a6e219b 100644
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -218,6 +218,7 @@ public class CameraActivity extends Activity
private ViewGroup mUndoDeletionBar;
private boolean mIsUndoingDeletion = false;
private boolean mIsEditActivityInProgress = false;
+ private boolean mPaused = true;
private View mPreviewCover;
private FrameLayout mPreviewContentLayout;
@@ -1340,7 +1341,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();
}
}
@@ -1611,6 +1612,7 @@ public class CameraActivity extends Activity
super.onPause();
mCurrentModule.onPauseAfterSuper();
+ mPaused = true;
mLocalImagesObserver.setActivityPaused(true);
mLocalVideosObserver.setActivityPaused(true);
}
@@ -1637,6 +1639,7 @@ public class CameraActivity extends Activity
mOrientationListener.enable();
mCurrentModule.onResumeBeforeSuper();
super.onResume();
+ mPaused = false;
mCurrentModule.onResumeAfterSuper();
setSwipingEnabled(true);