@@ -167,10 +167,12 @@ private void stopWithReason(AudioTrackEndReason reason, boolean includeScheduled
167167 }
168168
169169 InternalAudioTrack previousTrack = activeTrack ;
170+ boolean swapped = false ;
170171
171172 if (scheduledTrack != null ) {
172173 activeTrack = scheduledTrack ;
173174 scheduledTrack = null ;
175+ swapped = true ;
174176 } else {
175177 activeTrack = null ;
176178 }
@@ -180,7 +182,7 @@ private void stopWithReason(AudioTrackEndReason reason, boolean includeScheduled
180182 dispatchEvent (new TrackEndEvent (this , previousTrack , reason ));
181183 }
182184
183- if (activeTrack != null ) {
185+ if (swapped && activeTrack != null ) {
184186 dispatchEvent (new TrackStartEvent (this , activeTrack ));
185187 }
186188 }
@@ -305,6 +307,7 @@ private void handleTerminator(InternalAudioTrack track) {
305307 activeTrack = null ;
306308
307309 boolean failedBeforeLoad = track .getActiveExecutor ().failedBeforeLoad ();
310+ boolean swapped = false ;
308311
309312 AudioTrackEndReason endReason = scheduledTrack != null
310313 ? (failedBeforeLoad ? LOAD_FAILED_GAPLESS : FINISHED_GAPLESS )
@@ -313,11 +316,12 @@ private void handleTerminator(InternalAudioTrack track) {
313316 if (scheduledTrack != null ) {
314317 activeTrack = scheduledTrack ;
315318 scheduledTrack = null ;
319+ swapped = true ;
316320 }
317321
318322 dispatchEvent (new TrackEndEvent (this , track , endReason ));
319323
320- if (activeTrack != null ) {
324+ if (swapped && activeTrack != null ) {
321325 dispatchEvent (new TrackStartEvent (this , activeTrack ));
322326 }
323327 }
0 commit comments