diff options
author | Emilian Peev <epeevs@codeaurora.org> | 2016-01-07 20:05:40 +0100 |
---|---|---|
committer | Daniel Hillenbrand <codeworkx@cyanogenmod.org> | 2016-01-07 11:38:59 -0800 |
commit | 879b1f056189230e25f147dcaaca1c8bf926f0c5 (patch) | |
tree | d8d5d340546eb29ce305444f3dfcef61d70635ce /src | |
parent | c606f39e5978a002b138e784d574bb9be56a2a01 (diff) | |
download | android_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
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/camera/CameraActivity.java | 5 |
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); |