mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-30 14:52:59 +00:00 
			
		
		
		
	Do not remove items generating errors form queue
This commit is contained in:
		| @@ -64,7 +64,6 @@ import org.schabi.newpipe.player.helper.LoadController; | ||||
| import org.schabi.newpipe.player.helper.MediaSessionManager; | ||||
| import org.schabi.newpipe.player.helper.PlayerDataSource; | ||||
| import org.schabi.newpipe.player.helper.PlayerHelper; | ||||
| import org.schabi.newpipe.player.mediasource.FailedMediaSource; | ||||
| import org.schabi.newpipe.player.playback.BasePlayerMediaSession; | ||||
| import org.schabi.newpipe.player.playback.CustomTrackSelector; | ||||
| import org.schabi.newpipe.player.playback.MediaSourceManager; | ||||
| @@ -77,7 +76,6 @@ import org.schabi.newpipe.util.ImageDisplayConstants; | ||||
| import org.schabi.newpipe.util.SerializedCache; | ||||
|  | ||||
| import java.io.IOException; | ||||
| import java.net.UnknownHostException; | ||||
|  | ||||
| import io.reactivex.Observable; | ||||
| import io.reactivex.disposables.CompositeDisposable; | ||||
| @@ -835,16 +833,8 @@ public abstract class BasePlayer implements | ||||
|         final Throwable cause = error.getCause(); | ||||
|         if (error instanceof BehindLiveWindowException) { | ||||
|             reload(); | ||||
|         } else if (cause instanceof UnknownHostException) { | ||||
|             playQueue.error(/*isNetworkProblem=*/true); | ||||
|         } else if (isCurrentWindowValid()) { | ||||
|             playQueue.error(/*isTransitioningToBadStream=*/true); | ||||
|         } else if (cause instanceof FailedMediaSource.MediaSourceResolutionException) { | ||||
|             playQueue.error(/*recoverableWithNoAvailableStream=*/false); | ||||
|         } else if (cause instanceof FailedMediaSource.StreamInfoLoadException) { | ||||
|             playQueue.error(/*recoverableIfLoadFailsWhenNetworkIsFine=*/false); | ||||
|         } else { | ||||
|             playQueue.error(/*noIdeaWhatHappenedAndLetUserChooseWhatToDo=*/true); | ||||
|             playQueue.error(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -305,25 +305,16 @@ public abstract class PlayQueue implements Serializable { | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Report an exception for the item at the current index in order and the course of action: | ||||
|      * if the error can be skipped or the current item should be removed. | ||||
|      * Report an exception for the item at the current index in order and skip to the next one | ||||
|      * <p> | ||||
|      * This is done as a separate event as the underlying manager may have | ||||
|      * different implementation regarding exceptions. | ||||
|      * </p> | ||||
|      * | ||||
|      * @param skippable whether the error could be skipped | ||||
|      */ | ||||
|     public synchronized void error(final boolean skippable) { | ||||
|         final int index = getIndex(); | ||||
|  | ||||
|         if (skippable) { | ||||
|             queueIndex.incrementAndGet(); | ||||
|         } else { | ||||
|             removeInternal(index); | ||||
|         } | ||||
|  | ||||
|         broadcast(new ErrorEvent(index, getIndex(), skippable)); | ||||
|     public synchronized void error() { | ||||
|         final int oldIndex = getIndex(); | ||||
|         queueIndex.incrementAndGet(); | ||||
|         broadcast(new ErrorEvent(oldIndex, getIndex())); | ||||
|     } | ||||
|  | ||||
|     private synchronized void removeInternal(final int removeIndex) { | ||||
|   | ||||
| @@ -115,9 +115,6 @@ public class PlayQueueAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold | ||||
|                 break; | ||||
|             case ERROR: | ||||
|                 final ErrorEvent errorEvent = (ErrorEvent) message; | ||||
|                 if (!errorEvent.isSkippable()) { | ||||
|                     notifyItemRemoved(errorEvent.getErrorIndex()); | ||||
|                 } | ||||
|                 notifyItemChanged(errorEvent.getErrorIndex()); | ||||
|                 notifyItemChanged(errorEvent.getQueueIndex()); | ||||
|                 break; | ||||
|   | ||||
| @@ -3,12 +3,10 @@ package org.schabi.newpipe.player.playqueue.events; | ||||
| public class ErrorEvent implements PlayQueueEvent { | ||||
|     private final int errorIndex; | ||||
|     private final int queueIndex; | ||||
|     private final boolean skippable; | ||||
|  | ||||
|     public ErrorEvent(final int errorIndex, final int queueIndex, final boolean skippable) { | ||||
|     public ErrorEvent(final int errorIndex, final int queueIndex) { | ||||
|         this.errorIndex = errorIndex; | ||||
|         this.queueIndex = queueIndex; | ||||
|         this.skippable = skippable; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
| @@ -23,8 +21,4 @@ public class ErrorEvent implements PlayQueueEvent { | ||||
|     public int getQueueIndex() { | ||||
|         return queueIndex; | ||||
|     } | ||||
|  | ||||
|     public boolean isSkippable() { | ||||
|         return skippable; | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Stypox
					Stypox