Fix bug (#1947162)

The bug (1947162) is caused by the fact that sometimes, surfaceChanged() is called after onCompletion().
In surfaceChanged(), start() is called automatically. The fix is to use a flag is avoid calling start()
when onCompletion() has been called already.
diff --git a/core/java/android/widget/VideoView.java b/core/java/android/widget/VideoView.java
index 6d3a2d3..20dd8a6 100644
--- a/core/java/android/widget/VideoView.java
+++ b/core/java/android/widget/VideoView.java
@@ -55,6 +55,7 @@
     private SurfaceHolder mSurfaceHolder = null;
     private MediaPlayer mMediaPlayer = null;
     private boolean     mIsPrepared;
+    private boolean     mIsPlaybackCompleted;
     private int         mVideoWidth;
     private int         mVideoHeight;
     private int         mSurfaceWidth;
@@ -260,7 +261,7 @@
                         mSeekWhenPrepared = 0;
                     }
                     if (mStartWhenPrepared) {
-                        mMediaPlayer.start();
+                        start();
                         mStartWhenPrepared = false;
                         if (mMediaController != null) {
                             mMediaController.show();
@@ -281,7 +282,7 @@
                     mSeekWhenPrepared = 0;
                 }
                 if (mStartWhenPrepared) {
-                    mMediaPlayer.start();
+                    start();
                     mStartWhenPrepared = false;
                 }
             }
@@ -291,6 +292,7 @@
     private MediaPlayer.OnCompletionListener mCompletionListener =
         new MediaPlayer.OnCompletionListener() {
         public void onCompletion(MediaPlayer mp) {
+            mIsPlaybackCompleted = true;
             if (mMediaController != null) {
                 mMediaController.hide();
             }
@@ -405,7 +407,9 @@
                     mMediaPlayer.seekTo(mSeekWhenPrepared);
                     mSeekWhenPrepared = 0;
                 }
-                mMediaPlayer.start();
+                if (!mIsPlaybackCompleted) {
+                    start();
+                } 
                 if (mMediaController != null) {
                     mMediaController.show();
                 }
@@ -490,6 +494,7 @@
     }
     
     public void start() {
+        mIsPlaybackCompleted = false;
         if (mMediaPlayer != null && mIsPrepared) {
                 mMediaPlayer.start();
                 mStartWhenPrepared = false;