mirror of https://github.com/mpv-player/mpv
options, command: simplify some option updates
Remove wrapper properties for OSD and video position updates, use the new mechanism for them. We can mark the options directly. Update behavior will work for more options (since I've casually marked more affected options than the old less direct mechanism covered).
This commit is contained in:
parent
df85c76b7f
commit
bf5c97a6c3
|
@ -383,7 +383,9 @@ struct m_option {
|
||||||
#define UPDATE_OPT_FIRST (1 << 14)
|
#define UPDATE_OPT_FIRST (1 << 14)
|
||||||
#define UPDATE_TERM (1 << 14) // terminal options
|
#define UPDATE_TERM (1 << 14) // terminal options
|
||||||
#define UPDATE_RENDERER (1 << 15) // mainly vo_opengl options
|
#define UPDATE_RENDERER (1 << 15) // mainly vo_opengl options
|
||||||
#define UPDATE_OPT_LAST (1 << 15)
|
#define UPDATE_VIDEOPOS (1 << 16) // video position (panscan etc.)
|
||||||
|
#define UPDATE_OSD (1 << 17) // related to OSD rendering
|
||||||
|
#define UPDATE_OPT_LAST (1 << 17)
|
||||||
|
|
||||||
// All bits between _FIRST and _LAST (inclusive)
|
// All bits between _FIRST and _LAST (inclusive)
|
||||||
#define UPDATE_OPTS_MASK \
|
#define UPDATE_OPTS_MASK \
|
||||||
|
|
|
@ -164,13 +164,13 @@ static const m_option_t mp_vo_opt_list[] = {
|
||||||
OPT_FLAG("fullscreen", fullscreen, 0),
|
OPT_FLAG("fullscreen", fullscreen, 0),
|
||||||
OPT_ALIAS("fs", "fullscreen"),
|
OPT_ALIAS("fs", "fullscreen"),
|
||||||
OPT_FLAG("native-keyrepeat", native_keyrepeat, 0),
|
OPT_FLAG("native-keyrepeat", native_keyrepeat, 0),
|
||||||
OPT_FLOATRANGE("panscan", panscan, 0, 0.0, 1.0),
|
OPT_FLOATRANGE("panscan", panscan, UPDATE_VIDEOPOS, 0.0, 1.0),
|
||||||
OPT_FLOATRANGE("video-zoom", zoom, 0, -20.0, 20.0),
|
OPT_FLOATRANGE("video-zoom", zoom, UPDATE_VIDEOPOS, -20.0, 20.0),
|
||||||
OPT_FLOATRANGE("video-pan-x", pan_x, 0, -3.0, 3.0),
|
OPT_FLOATRANGE("video-pan-x", pan_x, UPDATE_VIDEOPOS, -3.0, 3.0),
|
||||||
OPT_FLOATRANGE("video-pan-y", pan_y, 0, -3.0, 3.0),
|
OPT_FLOATRANGE("video-pan-y", pan_y, UPDATE_VIDEOPOS, -3.0, 3.0),
|
||||||
OPT_FLOATRANGE("video-align-x", align_x, 0, -1.0, 1.0),
|
OPT_FLOATRANGE("video-align-x", align_x, UPDATE_VIDEOPOS, -1.0, 1.0),
|
||||||
OPT_FLOATRANGE("video-align-y", align_y, 0, -1.0, 1.0),
|
OPT_FLOATRANGE("video-align-y", align_y, UPDATE_VIDEOPOS, -1.0, 1.0),
|
||||||
OPT_CHOICE("video-unscaled", unscaled, 0,
|
OPT_CHOICE("video-unscaled", unscaled, UPDATE_VIDEOPOS,
|
||||||
({"no", 0}, {"yes", 1}, {"downscale-big", 2})),
|
({"no", 0}, {"yes", 1}, {"downscale-big", 2})),
|
||||||
OPT_INT64("wid", WinID, 0),
|
OPT_INT64("wid", WinID, 0),
|
||||||
OPT_CHOICE_OR_INT("screen", screen_id, 0, 0, 32,
|
OPT_CHOICE_OR_INT("screen", screen_id, 0, 0, 32,
|
||||||
|
@ -178,7 +178,7 @@ static const m_option_t mp_vo_opt_list[] = {
|
||||||
OPT_CHOICE_OR_INT("fs-screen", fsscreen_id, 0, 0, 32,
|
OPT_CHOICE_OR_INT("fs-screen", fsscreen_id, 0, 0, 32,
|
||||||
({"all", -2}, {"current", -1})),
|
({"all", -2}, {"current", -1})),
|
||||||
OPT_FLAG("fs-black-out-screens", fs_black_out_screens, 0),
|
OPT_FLAG("fs-black-out-screens", fs_black_out_screens, 0),
|
||||||
OPT_FLAG("keepaspect", keepaspect, 0),
|
OPT_FLAG("keepaspect", keepaspect, UPDATE_VIDEOPOS),
|
||||||
OPT_FLAG("keepaspect-window", keepaspect_window, 0),
|
OPT_FLAG("keepaspect-window", keepaspect_window, 0),
|
||||||
#if HAVE_X11
|
#if HAVE_X11
|
||||||
OPT_CHOICE("x11-netwm", x11_netwm, 0,
|
OPT_CHOICE("x11-netwm", x11_netwm, 0,
|
||||||
|
@ -446,47 +446,47 @@ const m_option_t mp_opts[] = {
|
||||||
OPT_PATHLIST("audio-file-paths", audiofile_paths, 0),
|
OPT_PATHLIST("audio-file-paths", audiofile_paths, 0),
|
||||||
OPT_STRING_APPEND_LIST("external-file", external_files, M_OPT_FILE),
|
OPT_STRING_APPEND_LIST("external-file", external_files, M_OPT_FILE),
|
||||||
OPT_FLAG("autoload-files", autoload_files, 0),
|
OPT_FLAG("autoload-files", autoload_files, 0),
|
||||||
OPT_FLOAT("sub-delay", sub_delay, 0),
|
OPT_FLOAT("sub-delay", sub_delay, UPDATE_OSD),
|
||||||
OPT_FLOAT("sub-fps", sub_fps, 0),
|
OPT_FLOAT("sub-fps", sub_fps, UPDATE_OSD),
|
||||||
OPT_FLOAT("sub-speed", sub_speed, 0),
|
OPT_FLOAT("sub-speed", sub_speed, UPDATE_OSD),
|
||||||
OPT_FLAG("sub-visibility", sub_visibility, 0),
|
OPT_FLAG("sub-visibility", sub_visibility, UPDATE_OSD),
|
||||||
OPT_FLAG("sub-forced-only", forced_subs_only, 0),
|
OPT_FLAG("sub-forced-only", forced_subs_only, UPDATE_OSD),
|
||||||
OPT_FLAG("stretch-dvd-subs", stretch_dvd_subs, 0),
|
OPT_FLAG("stretch-dvd-subs", stretch_dvd_subs, UPDATE_OSD),
|
||||||
OPT_FLAG("stretch-image-subs-to-screen", stretch_image_subs, 0),
|
OPT_FLAG("stretch-image-subs-to-screen", stretch_image_subs, UPDATE_OSD),
|
||||||
OPT_FLAG("sub-fix-timing", sub_fix_timing, 0),
|
OPT_FLAG("sub-fix-timing", sub_fix_timing, 0),
|
||||||
OPT_CHOICE("sub-auto", sub_auto, 0,
|
OPT_CHOICE("sub-auto", sub_auto, 0,
|
||||||
({"no", -1}, {"exact", 0}, {"fuzzy", 1}, {"all", 2})),
|
({"no", -1}, {"exact", 0}, {"fuzzy", 1}, {"all", 2})),
|
||||||
OPT_CHOICE("audio-file-auto", audiofile_auto, 0,
|
OPT_CHOICE("audio-file-auto", audiofile_auto, 0,
|
||||||
({"no", -1}, {"exact", 0}, {"fuzzy", 1}, {"all", 2})),
|
({"no", -1}, {"exact", 0}, {"fuzzy", 1}, {"all", 2})),
|
||||||
OPT_INTRANGE("sub-pos", sub_pos, 0, 0, 100),
|
OPT_INTRANGE("sub-pos", sub_pos, UPDATE_OSD, 0, 100),
|
||||||
OPT_FLOATRANGE("sub-gauss", sub_gauss, 0, 0.0, 3.0),
|
OPT_FLOATRANGE("sub-gauss", sub_gauss, UPDATE_OSD, 0.0, 3.0),
|
||||||
OPT_FLAG("sub-gray", sub_gray, 0),
|
OPT_FLAG("sub-gray", sub_gray, UPDATE_OSD),
|
||||||
OPT_FLAG("sub-ass", ass_enabled, 0),
|
OPT_FLAG("sub-ass", ass_enabled, 0),
|
||||||
OPT_FLOATRANGE("sub-scale", sub_scale, 0, 0, 100),
|
OPT_FLOATRANGE("sub-scale", sub_scale, UPDATE_OSD, 0, 100),
|
||||||
OPT_FLOATRANGE("ass-line-spacing", ass_line_spacing, 0, -1000, 1000),
|
OPT_FLOATRANGE("ass-line-spacing", ass_line_spacing, UPDATE_OSD, -1000, 1000),
|
||||||
OPT_FLAG("sub-use-margins", sub_use_margins, 0),
|
OPT_FLAG("sub-use-margins", sub_use_margins, UPDATE_OSD),
|
||||||
OPT_FLAG("ass-force-margins", ass_use_margins, 0),
|
OPT_FLAG("ass-force-margins", ass_use_margins, UPDATE_OSD),
|
||||||
OPT_FLAG("ass-vsfilter-aspect-compat", ass_vsfilter_aspect_compat, 0),
|
OPT_FLAG("ass-vsfilter-aspect-compat", ass_vsfilter_aspect_compat, UPDATE_OSD),
|
||||||
OPT_CHOICE("ass-vsfilter-color-compat", ass_vsfilter_color_compat, 0,
|
OPT_CHOICE("ass-vsfilter-color-compat", ass_vsfilter_color_compat, UPDATE_OSD,
|
||||||
({"no", 0}, {"basic", 1}, {"full", 2}, {"force-601", 3})),
|
({"no", 0}, {"basic", 1}, {"full", 2}, {"force-601", 3})),
|
||||||
OPT_FLAG("ass-vsfilter-blur-compat", ass_vsfilter_blur_compat, 0),
|
OPT_FLAG("ass-vsfilter-blur-compat", ass_vsfilter_blur_compat, UPDATE_OSD),
|
||||||
OPT_FLAG("embeddedfonts", use_embedded_fonts, 0),
|
OPT_FLAG("embeddedfonts", use_embedded_fonts, 0),
|
||||||
OPT_STRINGLIST("ass-force-style", ass_force_style_list, 0),
|
OPT_STRINGLIST("ass-force-style", ass_force_style_list, UPDATE_OSD),
|
||||||
OPT_STRING("ass-styles", ass_styles_file, M_OPT_FILE),
|
OPT_STRING("ass-styles", ass_styles_file, M_OPT_FILE),
|
||||||
OPT_CHOICE("ass-hinting", ass_hinting, 0,
|
OPT_CHOICE("ass-hinting", ass_hinting, UPDATE_OSD,
|
||||||
({"none", 0}, {"light", 1}, {"normal", 2}, {"native", 3})),
|
({"none", 0}, {"light", 1}, {"normal", 2}, {"native", 3})),
|
||||||
OPT_CHOICE("ass-shaper", ass_shaper, 0,
|
OPT_CHOICE("ass-shaper", ass_shaper, UPDATE_OSD,
|
||||||
({"simple", 0}, {"complex", 1})),
|
({"simple", 0}, {"complex", 1})),
|
||||||
OPT_CHOICE("ass-style-override", ass_style_override, 0,
|
OPT_CHOICE("ass-style-override", ass_style_override, UPDATE_OSD,
|
||||||
({"no", 0}, {"yes", 1}, {"force", 3}, {"signfs", 4}, {"strip", 5})),
|
({"no", 0}, {"yes", 1}, {"force", 3}, {"signfs", 4}, {"strip", 5})),
|
||||||
OPT_FLAG("sub-scale-by-window", sub_scale_by_window, 0),
|
OPT_FLAG("sub-scale-by-window", sub_scale_by_window, UPDATE_OSD),
|
||||||
OPT_FLAG("sub-scale-with-window", sub_scale_with_window, 0),
|
OPT_FLAG("sub-scale-with-window", sub_scale_with_window, UPDATE_OSD),
|
||||||
OPT_FLAG("ass-scale-with-window", ass_scale_with_window, 0),
|
OPT_FLAG("ass-scale-with-window", ass_scale_with_window, UPDATE_OSD),
|
||||||
OPT_FLAG("osd-bar", osd_bar_visible, 0),
|
OPT_FLAG("osd-bar", osd_bar_visible, UPDATE_OSD),
|
||||||
OPT_FLOATRANGE("osd-bar-align-x", osd_bar_align_x, 0, -1.0, +1.0),
|
OPT_FLOATRANGE("osd-bar-align-x", osd_bar_align_x, UPDATE_OSD, -1.0, +1.0),
|
||||||
OPT_FLOATRANGE("osd-bar-align-y", osd_bar_align_y, 0, -1.0, +1.0),
|
OPT_FLOATRANGE("osd-bar-align-y", osd_bar_align_y, UPDATE_OSD, -1.0, +1.0),
|
||||||
OPT_FLOATRANGE("osd-bar-w", osd_bar_w, 0, 1, 100),
|
OPT_FLOATRANGE("osd-bar-w", osd_bar_w, UPDATE_OSD, 1, 100),
|
||||||
OPT_FLOATRANGE("osd-bar-h", osd_bar_h, 0, 0.1, 50),
|
OPT_FLOATRANGE("osd-bar-h", osd_bar_h, UPDATE_OSD, 0.1, 50),
|
||||||
OPT_SUBSTRUCT("osd", osd_style, osd_style_conf, 0),
|
OPT_SUBSTRUCT("osd", osd_style, osd_style_conf, 0),
|
||||||
OPT_SUBSTRUCT("sub-text", sub_text_style, sub_style_conf, 0),
|
OPT_SUBSTRUCT("sub-text", sub_text_style, sub_style_conf, 0),
|
||||||
OPT_FLAG("sub-clear-on-seek", sub_clear_on_seek, 0),
|
OPT_FLAG("sub-clear-on-seek", sub_clear_on_seek, 0),
|
||||||
|
@ -557,7 +557,7 @@ const m_option_t mp_opts[] = {
|
||||||
({"0", 0}, {"1", 1}, {"2", 2}, {"3", 3})),
|
({"0", 0}, {"1", 1}, {"2", 2}, {"3", 3})),
|
||||||
OPT_INTRANGE("osd-duration", osd_duration, 0, 0, 3600000),
|
OPT_INTRANGE("osd-duration", osd_duration, 0, 0, 3600000),
|
||||||
OPT_FLAG("osd-fractions", osd_fractions, 0),
|
OPT_FLAG("osd-fractions", osd_fractions, 0),
|
||||||
OPT_FLOATRANGE("osd-scale", osd_scale, 0, 0, 100),
|
OPT_FLOATRANGE("osd-scale", osd_scale, UPDATE_OSD, 0, 100),
|
||||||
OPT_FLAG("osd-scale-by-window", osd_scale_by_window, 0),
|
OPT_FLAG("osd-scale-by-window", osd_scale_by_window, 0),
|
||||||
|
|
||||||
OPT_DOUBLE("sstep", step_sec, CONF_MIN, 0),
|
OPT_DOUBLE("sstep", step_sec, CONF_MIN, 0),
|
||||||
|
|
|
@ -2407,18 +2407,6 @@ static int video_simple_refresh_property(void *ctx, struct m_property *prop,
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update options which are managed through VOCTRL_GET/SET_PANSCAN.
|
|
||||||
static int panscan_property_helper(void *ctx, struct m_property *prop,
|
|
||||||
int action, void *arg)
|
|
||||||
{
|
|
||||||
MPContext *mpctx = ctx;
|
|
||||||
|
|
||||||
int r = mp_property_generic_option(mpctx, prop, action, arg);
|
|
||||||
if (mpctx->video_out && action == M_PROPERTY_SET)
|
|
||||||
vo_control(mpctx->video_out, VOCTRL_SET_PANSCAN, NULL);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Helper to set vo flags.
|
/// Helper to set vo flags.
|
||||||
/** \ingroup PropertyImplHelper
|
/** \ingroup PropertyImplHelper
|
||||||
*/
|
*/
|
||||||
|
@ -2985,20 +2973,6 @@ static int mp_property_aspect(void *ctx, struct m_property *prop,
|
||||||
return M_PROPERTY_NOT_IMPLEMENTED;
|
return M_PROPERTY_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
// For OSD and subtitle related properties using the generic option bridge.
|
|
||||||
// - Fail as unavailable if no video is active
|
|
||||||
// - Trigger OSD state update when property is set
|
|
||||||
static int property_osd_helper(void *ctx, struct m_property *prop,
|
|
||||||
int action, void *arg)
|
|
||||||
{
|
|
||||||
MPContext *mpctx = ctx;
|
|
||||||
if (action == M_PROPERTY_SET) {
|
|
||||||
osd_changed(mpctx->osd);
|
|
||||||
mp_wakeup_core(mpctx);
|
|
||||||
}
|
|
||||||
return mp_property_generic_option(mpctx, prop, action, arg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Selected subtitles (RW)
|
/// Selected subtitles (RW)
|
||||||
static int mp_property_sub(void *ctx, struct m_property *prop,
|
static int mp_property_sub(void *ctx, struct m_property *prop,
|
||||||
int action, void *arg)
|
int action, void *arg)
|
||||||
|
@ -3023,7 +2997,7 @@ static int mp_property_sub_delay(void *ctx, struct m_property *prop,
|
||||||
*(char **)arg = format_delay(opts->sub_delay);
|
*(char **)arg = format_delay(opts->sub_delay);
|
||||||
return M_PROPERTY_OK;
|
return M_PROPERTY_OK;
|
||||||
}
|
}
|
||||||
return property_osd_helper(mpctx, prop, action, arg);
|
return mp_property_generic_option(mpctx, prop, action, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Subtitle speed (RW)
|
/// Subtitle speed (RW)
|
||||||
|
@ -3046,7 +3020,7 @@ static int mp_property_sub_speed(void *ctx, struct m_property *prop,
|
||||||
*(char **)arg = talloc_asprintf(NULL, "%4.1f%%", 100 * opts->sub_speed);
|
*(char **)arg = talloc_asprintf(NULL, "%4.1f%%", 100 * opts->sub_speed);
|
||||||
return M_PROPERTY_OK;
|
return M_PROPERTY_OK;
|
||||||
}
|
}
|
||||||
return property_osd_helper(mpctx, prop, action, arg);
|
return mp_property_generic_option(mpctx, prop, action, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mp_property_sub_pos(void *ctx, struct m_property *prop,
|
static int mp_property_sub_pos(void *ctx, struct m_property *prop,
|
||||||
|
@ -3058,7 +3032,7 @@ static int mp_property_sub_pos(void *ctx, struct m_property *prop,
|
||||||
*(char **)arg = talloc_asprintf(NULL, "%d/100", opts->sub_pos);
|
*(char **)arg = talloc_asprintf(NULL, "%d/100", opts->sub_pos);
|
||||||
return M_PROPERTY_OK;
|
return M_PROPERTY_OK;
|
||||||
}
|
}
|
||||||
return property_osd_helper(mpctx, prop, action, arg);
|
return mp_property_generic_option(mpctx, prop, action, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mp_property_sub_text(void *ctx, struct m_property *prop,
|
static int mp_property_sub_text(void *ctx, struct m_property *prop,
|
||||||
|
@ -3787,7 +3761,6 @@ static int mp_profile_list(void *ctx, struct m_property *prop,
|
||||||
// Base list of properties. This does not include option-mapped properties.
|
// Base list of properties. This does not include option-mapped properties.
|
||||||
static const struct m_property mp_properties_base[] = {
|
static const struct m_property mp_properties_base[] = {
|
||||||
// General
|
// General
|
||||||
{"osd-scale", property_osd_helper},
|
|
||||||
{"speed", mp_property_playback_speed},
|
{"speed", mp_property_playback_speed},
|
||||||
{"audio-speed-correction", mp_property_av_speed_correction, .priv = "a"},
|
{"audio-speed-correction", mp_property_av_speed_correction, .priv = "a"},
|
||||||
{"video-speed-correction", mp_property_av_speed_correction, .priv = "v"},
|
{"video-speed-correction", mp_property_av_speed_correction, .priv = "v"},
|
||||||
|
@ -3901,14 +3874,6 @@ static const struct m_property mp_properties_base[] = {
|
||||||
{"hue", mp_property_video_color},
|
{"hue", mp_property_video_color},
|
||||||
{"video-output-levels", mp_property_video_color,
|
{"video-output-levels", mp_property_video_color,
|
||||||
.priv = (void *)"output-levels"},
|
.priv = (void *)"output-levels"},
|
||||||
{"panscan", panscan_property_helper},
|
|
||||||
{"keepaspect", panscan_property_helper},
|
|
||||||
{"video-zoom", panscan_property_helper},
|
|
||||||
{"video-align-x", panscan_property_helper},
|
|
||||||
{"video-align-y", panscan_property_helper},
|
|
||||||
{"video-pan-x", panscan_property_helper},
|
|
||||||
{"video-pan-y", panscan_property_helper},
|
|
||||||
{"video-unscaled", panscan_property_helper},
|
|
||||||
{"video-out-params", mp_property_vo_imgparams},
|
{"video-out-params", mp_property_vo_imgparams},
|
||||||
{"video-params", mp_property_vd_imgparams},
|
{"video-params", mp_property_vd_imgparams},
|
||||||
{"video-format", mp_property_video_format},
|
{"video-format", mp_property_video_format},
|
||||||
|
@ -3949,13 +3914,6 @@ static const struct m_property mp_properties_base[] = {
|
||||||
{"sub-speed", mp_property_sub_speed},
|
{"sub-speed", mp_property_sub_speed},
|
||||||
{"sub-pos", mp_property_sub_pos},
|
{"sub-pos", mp_property_sub_pos},
|
||||||
{"sub-text", mp_property_sub_text},
|
{"sub-text", mp_property_sub_text},
|
||||||
{"sub-visibility", property_osd_helper},
|
|
||||||
{"sub-forced-only", property_osd_helper},
|
|
||||||
{"sub-scale", property_osd_helper},
|
|
||||||
{"sub-use-margins", property_osd_helper},
|
|
||||||
{"ass-force-margins", property_osd_helper},
|
|
||||||
{"ass-vsfilter-aspect-compat", property_osd_helper},
|
|
||||||
{"ass-style-override", property_osd_helper},
|
|
||||||
|
|
||||||
{"vf", mp_property_vf},
|
{"vf", mp_property_vf},
|
||||||
{"af", mp_property_af},
|
{"af", mp_property_af},
|
||||||
|
@ -5633,10 +5591,18 @@ void mp_option_change_callback(void *ctx, struct m_config_option *co, int flags)
|
||||||
if (flags & UPDATE_TERM)
|
if (flags & UPDATE_TERM)
|
||||||
mp_update_logging(mpctx);
|
mp_update_logging(mpctx);
|
||||||
|
|
||||||
if (flags & UPDATE_RENDERER) {
|
if (mpctx->video_out) {
|
||||||
if (mpctx->video_out)
|
if (flags & UPDATE_VIDEOPOS)
|
||||||
|
vo_control(mpctx->video_out, VOCTRL_SET_PANSCAN, NULL);
|
||||||
|
|
||||||
|
if (flags & UPDATE_RENDERER)
|
||||||
vo_control(mpctx->video_out, VOCTRL_UPDATE_RENDER_OPTS, NULL);
|
vo_control(mpctx->video_out, VOCTRL_UPDATE_RENDER_OPTS, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (flags & UPDATE_OSD) {
|
||||||
|
osd_changed(mpctx->osd);
|
||||||
|
mp_wakeup_core(mpctx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mp_notify_property(struct MPContext *mpctx, const char *property)
|
void mp_notify_property(struct MPContext *mpctx, const char *property)
|
||||||
|
|
|
@ -81,6 +81,7 @@ const struct m_sub_options osd_style_conf = {
|
||||||
.align_x = -1,
|
.align_x = -1,
|
||||||
.align_y = -1,
|
.align_y = -1,
|
||||||
},
|
},
|
||||||
|
.change_flags = UPDATE_OSD,
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct m_sub_options sub_style_conf = {
|
const struct m_sub_options sub_style_conf = {
|
||||||
|
@ -99,6 +100,7 @@ const struct m_sub_options sub_style_conf = {
|
||||||
.align_x = 0,
|
.align_x = 0,
|
||||||
.align_y = 1,
|
.align_y = 1,
|
||||||
},
|
},
|
||||||
|
.change_flags = UPDATE_OSD,
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool osd_res_equals(struct mp_osd_res a, struct mp_osd_res b)
|
static bool osd_res_equals(struct mp_osd_res a, struct mp_osd_res b)
|
||||||
|
|
Loading…
Reference in New Issue