Skip to content

Commit 3f94e7b

Browse files
authored
Merge pull request #10912 from Stypox/download-fixes
Download fixes
2 parents 2af95cc + 5d9adce commit 3f94e7b

3 files changed

Lines changed: 26 additions & 57 deletions

File tree

app/src/main/java/org/schabi/newpipe/download/DownloadDialog.java

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
import android.app.Activity;
88
import android.content.ComponentName;
99
import android.content.Context;
10-
import android.content.DialogInterface;
11-
import android.content.DialogInterface.OnDismissListener;
1210
import android.content.Intent;
1311
import android.content.ServiceConnection;
1412
import android.content.SharedPreferences;
@@ -113,14 +111,11 @@ public class DownloadDialog extends DialogFragment
113111
@State
114112
int selectedSubtitleIndex = 0; // default to the first item
115113

116-
@Nullable
117-
private OnDismissListener onDismissListener = null;
118-
119114
private StoredDirectoryHelper mainStorageAudio = null;
120115
private StoredDirectoryHelper mainStorageVideo = null;
121116
private DownloadManager downloadManager = null;
122117
private ActionMenuItemView okButton = null;
123-
private Context context;
118+
private Context context = null;
124119
private boolean askForSavePath;
125120

126121
private AudioTrackAdapter audioTrackAdapter;
@@ -195,13 +190,6 @@ public DownloadDialog(@NonNull final Context context, @NonNull final StreamInfo
195190
this.selectedVideoIndex = ListHelper.getDefaultResolutionIndex(context, videoStreams);
196191
}
197192

198-
/**
199-
* @param onDismissListener the listener to call in {@link #onDismiss(DialogInterface)}
200-
*/
201-
public void setOnDismissListener(@Nullable final OnDismissListener onDismissListener) {
202-
this.onDismissListener = onDismissListener;
203-
}
204-
205193

206194
/*//////////////////////////////////////////////////////////////////////////
207195
// Android lifecycle
@@ -221,6 +209,8 @@ public void onCreate(@Nullable final Bundle savedInstanceState) {
221209
return;
222210
}
223211

212+
// context will remain null if dismiss() was called above, allowing to check whether the
213+
// dialog is being dismissed in onViewCreated()
224214
context = getContext();
225215

226216
setStyle(STYLE_NO_TITLE, ThemeHelper.getDialogTheme(context));
@@ -305,6 +295,9 @@ public void onViewCreated(@NonNull final View view,
305295
@Nullable final Bundle savedInstanceState) {
306296
super.onViewCreated(view, savedInstanceState);
307297
dialogBinding = DownloadDialogBinding.bind(view);
298+
if (context == null) {
299+
return; // the dialog is being dismissed, see the call to dismiss() in onCreate()
300+
}
308301

309302
dialogBinding.fileName.setText(FilenameUtils.createFilename(getContext(),
310303
currentInfo.getName()));
@@ -364,14 +357,6 @@ private void initToolbar(final Toolbar toolbar) {
364357
});
365358
}
366359

367-
@Override
368-
public void onDismiss(@NonNull final DialogInterface dialog) {
369-
super.onDismiss(dialog);
370-
if (onDismissListener != null) {
371-
onDismissListener.onDismiss(dialog);
372-
}
373-
}
374-
375360
@Override
376361
public void onDestroy() {
377362
super.onDestroy();

app/src/main/java/org/schabi/newpipe/util/SecondaryStreamHelper.java

Lines changed: 19 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import org.schabi.newpipe.extractor.stream.VideoStream;
1212
import org.schabi.newpipe.util.StreamItemAdapter.StreamInfoWrapper;
1313

14-
import java.util.Comparator;
1514
import java.util.List;
1615

1716
public class SecondaryStreamHelper<T extends Stream> {
@@ -43,42 +42,27 @@ public static AudioStream getAudioStreamFor(@NonNull final Context context,
4342
@NonNull final List<AudioStream> audioStreams,
4443
@NonNull final VideoStream videoStream) {
4544
final MediaFormat mediaFormat = videoStream.getFormat();
46-
if (mediaFormat == null) {
47-
return null;
48-
}
49-
50-
switch (mediaFormat) {
51-
case WEBM:
52-
case MPEG_4: // Is MPEG-4 DASH?
53-
break;
54-
default:
55-
return null;
56-
}
57-
58-
final boolean m4v = mediaFormat == MediaFormat.MPEG_4;
59-
final boolean isLimitingDataUsage = ListHelper.isLimitingDataUsage(context);
6045

61-
Comparator<AudioStream> comparator = ListHelper.getAudioFormatComparator(
62-
m4v ? MediaFormat.M4A : MediaFormat.WEBMA, isLimitingDataUsage);
63-
int preferredAudioStreamIndex = ListHelper.getAudioIndexByHighestRank(
64-
audioStreams, comparator);
65-
66-
if (preferredAudioStreamIndex == -1) {
67-
if (m4v) {
68-
return null;
69-
}
70-
71-
comparator = ListHelper.getAudioFormatComparator(
72-
MediaFormat.WEBMA_OPUS, isLimitingDataUsage);
73-
preferredAudioStreamIndex = ListHelper.getAudioIndexByHighestRank(
74-
audioStreams, comparator);
75-
76-
if (preferredAudioStreamIndex == -1) {
77-
return null;
78-
}
46+
if (mediaFormat == MediaFormat.WEBM) {
47+
return audioStreams
48+
.stream()
49+
.filter(audioStream -> audioStream.getFormat() == MediaFormat.WEBMA
50+
|| audioStream.getFormat() == MediaFormat.WEBMA_OPUS)
51+
.max(ListHelper.getAudioFormatComparator(MediaFormat.WEBMA,
52+
ListHelper.isLimitingDataUsage(context)))
53+
.orElse(null);
54+
55+
} else if (mediaFormat == MediaFormat.MPEG_4) {
56+
return audioStreams
57+
.stream()
58+
.filter(audioStream -> audioStream.getFormat() == MediaFormat.M4A)
59+
.max(ListHelper.getAudioFormatComparator(MediaFormat.M4A,
60+
ListHelper.isLimitingDataUsage(context)))
61+
.orElse(null);
62+
63+
} else {
64+
return null;
7965
}
80-
81-
return audioStreams.get(preferredAudioStreamIndex);
8266
}
8367

8468
public T getStream() {

app/src/main/java/us/shandian/giga/service/DownloadManagerService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ private void startMission(Intent intent) {
411411
mission.threadCount = threads;
412412
mission.source = source;
413413
mission.nearLength = nearLength;
414-
mission.recoveryInfo = recovery.toArray(MissionRecoveryInfo[]::new);
414+
mission.recoveryInfo = recovery.toArray(new MissionRecoveryInfo[0]);
415415

416416
if (ps != null)
417417
ps.setTemporalDir(DownloadManager.pickAvailableTemporalDir(this));

0 commit comments

Comments
 (0)