summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Dheeraj Sharma <dheerajs@google.com> 2011-02-03 17:18:13 -0800
committer Android Git Automerger <android-git-automerger@android.com> 2011-02-03 17:18:13 -0800
commit7ee76cfeead74b4d3b46abb244b63e638c25d1c5 (patch)
tree0075c8e848d1cf3cc2d63b38ee0e444a075e687c
parent39530f8fc7e6660b56493b9a1950bd3d697167fe (diff)
parentd13f987f73df03b06c70c631452f6cafbdc254e1 (diff)
am d13f987f: am 36b685ff: Merge "Fix for issue : 3419353 Crash during transition generation" into honeycomb
* commit 'd13f987f73df03b06c70c631452f6cafbdc254e1': Fix for issue : 3419353 Crash during transition generation
-rwxr-xr-xmedia/java/android/media/videoeditor/VideoEditorImpl.java61
1 files changed, 33 insertions, 28 deletions
diff --git a/media/java/android/media/videoeditor/VideoEditorImpl.java b/media/java/android/media/videoeditor/VideoEditorImpl.java
index 2a9a5395415e..33a86544b8dd 100755
--- a/media/java/android/media/videoeditor/VideoEditorImpl.java
+++ b/media/java/android/media/videoeditor/VideoEditorImpl.java
@@ -1566,29 +1566,29 @@ public class VideoEditorImpl implements VideoEditor {
}
boolean semAcquireDone = false;
- try{
- semAcquireDone = mMANativeHelper.lock(ENGINE_ACCESS_MAX_TIMEOUT_MS);
- if (semAcquireDone == false) {
- throw new IllegalStateException("Timeout waiting for semaphore");
- }
+ if (!mPreviewInProgress) {
+ try{
+ semAcquireDone = mMANativeHelper.lock(ENGINE_ACCESS_MAX_TIMEOUT_MS);
+ if (semAcquireDone == false) {
+ throw new IllegalStateException("Timeout waiting for semaphore");
+ }
- if (mMediaItems.size() > 0) {
- mMANativeHelper.previewStoryBoard(mMediaItems, mTransitions,
- mAudioTracks, null);
- mMANativeHelper.doPreview(surface, fromMs, toMs, loop,
- callbackAfterFrameCount, listener);
- mPreviewInProgress = true;
- }
- /**
- * release on complete by calling stopPreview
- */
- } catch (InterruptedException ex) {
- Log.w(TAG, "The thread was interrupted", new Throwable());
- throw new IllegalStateException("The thread was interrupted");
- } finally {
- if (semAcquireDone) {
- mMANativeHelper.unlock();
+ if (mMediaItems.size() > 0) {
+ mPreviewInProgress = true;
+ mMANativeHelper.previewStoryBoard(mMediaItems, mTransitions,
+ mAudioTracks, null);
+ mMANativeHelper.doPreview(surface, fromMs, toMs, loop,
+ callbackAfterFrameCount, listener);
+ }
+ /**
+ * release on complete by calling stopPreview
+ */
+ } catch (InterruptedException ex) {
+ Log.w(TAG, "The thread was interrupted", new Throwable());
+ throw new IllegalStateException("The thread was interrupted");
}
+ } else {
+ throw new IllegalStateException("Preview already in progress");
}
}
@@ -1596,15 +1596,20 @@ public class VideoEditorImpl implements VideoEditor {
* {@inheritDoc}
*/
public long stopPreview() {
+ long result = 0;
if (mPreviewInProgress) {
- long result = mMANativeHelper.stopPreview();
- mPreviewInProgress = false;
- /**
- * release the sem acquired in startPreview
- */
- mMANativeHelper.unlock();
+ try {
+ result = mMANativeHelper.stopPreview();
+ /**
+ * release on complete by calling stopPreview
+ */
+ } finally {
+ mPreviewInProgress = false;
+ mMANativeHelper.unlock();
+ }
return result;
- } else {
+ }
+ else {
return 0;
}
}