From 53867aa9d834fd6a6314803655bd4c444d0e1df4 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 22 Feb 2015 19:06:21 +0100 Subject: player: fix demuxer lifetime management Commit f54220d9 attempted to improve this, but it got worse. Now there was a crash when ytdl_hook.lua added external tracks. This happened because close_unused_demuxers() assumed that sources[0] was the main demuxer (so that it didn't close it). This assumption failed, because the ytdl script can add external tracks before the main file is loaded. The easy fix would have been to check for master_demuxer, and not i==0. But instead give up on the old idea, make some stricter assumptions how demuxers and external tracks map, and simplify the code. --- player/core.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'player/core.h') diff --git a/player/core.h b/player/core.h index ad700cbc22..1f2b72bfb4 100644 --- a/player/core.h +++ b/player/core.h @@ -180,7 +180,7 @@ typedef struct MPContext { int64_t shown_vframes, shown_aframes; struct stream *stream; // stream that was initially opened - struct demuxer **sources; + struct demuxer **sources; // all open demuxers int num_sources; struct timeline *tl; @@ -191,7 +191,7 @@ typedef struct MPContext { int num_chapters; double video_offset; - struct demuxer *demuxer; + struct demuxer *demuxer; // can change with timeline struct mp_tags *filtered_tags; struct track **tracks; -- cgit v1.2.3