summaryrefslogtreecommitdiffstats
path: root/sub/dec_sub.c
diff options
context:
space:
mode:
Diffstat (limited to 'sub/dec_sub.c')
-rw-r--r--sub/dec_sub.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/sub/dec_sub.c b/sub/dec_sub.c
index 27cab201d9..f98a478be4 100644
--- a/sub/dec_sub.c
+++ b/sub/dec_sub.c
@@ -413,6 +413,7 @@ int sub_control(struct dec_sub *sub, enum sd_ctrl cmd, void *arg)
{
int r = CONTROL_UNKNOWN;
pthread_mutex_lock(&sub->lock);
+ bool propagate = false;
switch (cmd) {
case SD_CTRL_SET_VIDEO_DEF_FPS:
sub->video_fps = *(double *)arg;
@@ -427,23 +428,21 @@ int sub_control(struct dec_sub *sub, enum sd_ctrl cmd, void *arg)
if (r == CONTROL_OK)
a[0] = pts_from_subtitle(sub, arg2[0]);
break;
+ case SD_CTRL_UPDATE_OPTS:
+ if (m_config_cache_update(sub->opts_cache))
+ update_subtitle_speed(sub);
+ propagate = true;
+ break;
}
default:
- if (sub->sd->driver->control)
- r = sub->sd->driver->control(sub->sd, cmd, arg);
+ propagate = true;
}
+ if (propagate && sub->sd->driver->control)
+ r = sub->sd->driver->control(sub->sd, cmd, arg);
pthread_mutex_unlock(&sub->lock);
return r;
}
-void sub_update_opts(struct dec_sub *sub)
-{
- pthread_mutex_lock(&sub->lock);
- if (m_config_cache_update(sub->opts_cache))
- update_subtitle_speed(sub);
- pthread_mutex_unlock(&sub->lock);
-}
-
void sub_set_recorder_sink(struct dec_sub *sub, struct mp_recorder_sink *sink)
{
pthread_mutex_lock(&sub->lock);