OSDN Git Service

Music completion listener uses postRunnable on mobile
authormoly <tsweston@gmail.com>
Thu, 11 Jul 2013 16:04:32 +0000 (17:04 +0100)
committermoly <tsweston@gmail.com>
Thu, 11 Jul 2013 16:04:32 +0000 (17:04 +0100)
backends/gdx-backend-android/src/com/badlogic/gdx/backends/android/AndroidMusic.java
backends/gdx-backend-iosmonotouch/src/com/badlogic/gdx/backends/ios/IOSMusic.java

index b52747f..f735fce 100644 (file)
@@ -29,7 +29,7 @@ public class AndroidMusic implements Music, MediaPlayer.OnCompletionListener {
        private boolean isPrepared = true;
        protected boolean wasPlaying = false;
        private float volume = 1f;
-       private OnCompletionListener onCompletionListener;
+       protected OnCompletionListener onCompletionListener;
 
        AndroidMusic (AndroidAudio audio, MediaPlayer player) {
                this.audio = audio;
@@ -139,7 +139,13 @@ public class AndroidMusic implements Music, MediaPlayer.OnCompletionListener {
 
        @Override
        public void onCompletion (MediaPlayer mp) {
-               if (onCompletionListener != null)
-                               onCompletionListener.onCompletion(this);
+               if (onCompletionListener != null) {
+                       Gdx.app.postRunnable(new Runnable() {
+                               @Override
+                               public void run () {
+                                       onCompletionListener.onCompletion(AndroidMusic.this);
+                               }
+                       });
+               }
        };
 }
\ No newline at end of file
index bf831fb..286c3e4 100644 (file)
@@ -19,6 +19,7 @@ package com.badlogic.gdx.backends.ios;
 import cli.MonoTouch.AVFoundation.AVAudioPlayer;
 import cli.MonoTouch.AVFoundation.AVAudioPlayerDelegate;
 
+import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.audio.Music;
 
 /** A music player, suitable for background music. Supports MP3 and WAV files which are played via hardware on iOS.
@@ -118,8 +119,14 @@ public class IOSMusic implements Music {
                
                @Override
                public void FinishedPlaying(AVAudioPlayer player, boolean successful) {
-                       if (onCompletionListener != null)
-                               onCompletionListener.onCompletion(IOSMusic.this);
+                       if (onCompletionListener != null) {
+                               Gdx.app.postRunnable(new Runnable() {
+                                       @Override
+                                       public void run () {
+                                               onCompletionListener.onCompletion(IOSMusic.this);
+                                       }
+                               });
+                       }
                }
        }
 }
\ No newline at end of file