diff options
| author | 2011-02-03 17:18:13 -0800 | |
|---|---|---|
| committer | 2011-02-03 17:18:13 -0800 | |
| commit | 7ee76cfeead74b4d3b46abb244b63e638c25d1c5 (patch) | |
| tree | 0075c8e848d1cf3cc2d63b38ee0e444a075e687c | |
| parent | 39530f8fc7e6660b56493b9a1950bd3d697167fe (diff) | |
| parent | d13f987f73df03b06c70c631452f6cafbdc254e1 (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-x | media/java/android/media/videoeditor/VideoEditorImpl.java | 61 |
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; } } |