summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@mplayer2.org>2011-12-12 16:35:35 +0100
committerUoti Urpala <uau@mplayer2.org>2011-12-12 21:39:20 +0200
commit52f9abefa330345d02a1b84b3ad3777365341ef7 (patch)
treec45740b0a52bca48a18b90460265d42059786041
parent2e1cdcb9e6263a7ca16151713338176ef7b1ee06 (diff)
downloadmpv-52f9abefa330345d02a1b84b3ad3777365341ef7.tar.bz2
mpv-52f9abefa330345d02a1b84b3ad3777365341ef7.tar.xz
vo: reset EOSD change detection when VO is re-configured
This fixes a crash with vo_gl when the switch_ratio slave command is used while a displaying an animated subtitle. switch_ratio will cause a config() call to vo_gl, which will reset all state, including the EOSD state. Next time the EOSD is rendered, its change detection will indicate that only subtitle positions have changed. The render code will attempt to access the EOSD data structures which have been deleted with config(). Fix this by forcing the change detection to indicate a full change if config() has been called. This only happens when doing switch_ratio with vo_gl, and the current subtitle is only changing positions, i.e. mp_eosd_images_t.changed == 1.
-rw-r--r--libmpcodecs/vf_vo.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libmpcodecs/vf_vo.c b/libmpcodecs/vf_vo.c
index d673c7bcd4..b855ea86df 100644
--- a/libmpcodecs/vf_vo.c
+++ b/libmpcodecs/vf_vo.c
@@ -91,6 +91,9 @@ static int config(struct vf_instance *vf,
mp_ass_configure(vf->priv->renderer_vsfilter, vf->opts, width, height,
vf->default_caps & VFCAP_EOSD_UNSCALED);
}
+
+ // force EOSD change detection reset
+ vf->priv->prev_visibility = false;
#endif
return 1;