diff options
author | Emilian Peev <epeevs@codeaurora.org> | 2015-01-29 12:28:44 +0200 |
---|---|---|
committer | Emilian Peev <epeevs@codeaurora.org> | 2015-03-05 18:17:22 +0200 |
commit | 38779f3d24bd9ec3f3b44db587a97b7aecdea281 (patch) | |
tree | 1d4dc8699933b00fc5645e41e0d09fbe3f74b6c8 /src | |
parent | 51bbe05b25fcb9b3cd35bd79f100e420b01bd5f6 (diff) | |
download | android_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.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 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); |