summaryrefslogtreecommitdiffstats
path: root/core/mplayer.c
diff options
context:
space:
mode:
Diffstat (limited to 'core/mplayer.c')
-rw-r--r--core/mplayer.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/core/mplayer.c b/core/mplayer.c
index 684991127b..52aa34058c 100644
--- a/core/mplayer.c
+++ b/core/mplayer.c
@@ -443,8 +443,12 @@ static void preselect_demux_streams(struct MPContext *mpctx)
{
// Disable all streams, just to be sure no unwanted streams are selected.
for (int n = 0; n < mpctx->num_sources; n++) {
- for (int type = 0; type < STREAM_TYPE_COUNT; type++)
- demuxer_switch_track(mpctx->sources[n], type, NULL);
+ for (int type = 0; type < STREAM_TYPE_COUNT; type++) {
+ struct track *track = mpctx->current_track[type];
+ if (!(track && track->demuxer == mpctx->sources[n] &&
+ demuxer_stream_is_selected(track->demuxer, track->stream)))
+ demuxer_switch_track(mpctx->sources[n], type, NULL);
+ }
}
for (int type = 0; type < STREAM_TYPE_COUNT; type++) {