vo_opengl: remove icc profile options from runtime-settable options

Because of the icc-profile-auto option (which was added at a later
point), supporting this would probably be slightly messy: the ICC
profile can spontaneously update, and then it would overwrite the
previously set options.

Don't make icc-profile-auto fatal if unsupported. The "auto" indicates
that it will use whatever it finds, even if it's nothing.

Also add a warning; before this commit, it just refused to initialize
without explanation.

As a mostly unrelated cosmetic change, remove redundant parameters which
had no point anymore.

Probably fixes #1359 (or rather works it around by disallowing it).
This commit is contained in:
wm4 2014-12-16 19:12:08 +01:00
parent 0e8fbdbdb1
commit 2a71763c88
1 changed files with 14 additions and 16 deletions

View File

@ -240,8 +240,9 @@ static void call_request_hwdec_api(struct mp_hwdec_info *info,
vo_control(vo, VOCTRL_LOAD_HWDEC_API, (void *)api_name);
}
static bool update_icc_profile(struct gl_priv *p, struct mp_icc_opts *opts)
static bool update_icc_profile(struct gl_priv *p)
{
struct mp_icc_opts *opts = p->icc_opts;
struct lut3d *lut3d = NULL;
if (opts->profile) {
lut3d = mp_load_icc(opts, p->vo->log, p->vo->global);
@ -253,21 +254,20 @@ static bool update_icc_profile(struct gl_priv *p, struct mp_icc_opts *opts)
return true;
}
static bool get_and_update_icc_profile(struct vo *vo,
struct mp_icc_opts *opts)
static bool get_and_update_icc_profile(struct gl_priv *p)
{
struct gl_priv *p = vo->priv;
if (!opts->profile_auto)
return update_icc_profile(p, opts);
if (!p->icc_opts->profile_auto)
return update_icc_profile(p);
char *icc = NULL;
int r = p->glctx->vo_control(vo, NULL, VOCTRL_GET_ICC_PROFILE_PATH, &icc);
if (r != VO_TRUE)
return false;
int r = p->glctx->vo_control(p->vo, NULL, VOCTRL_GET_ICC_PROFILE_PATH, &icc);
if (r != VO_TRUE) {
MP_WARN(p->vo, "Could not retrieve an ICC profile.\n");
return true; // no error if the system doesn't have any
}
if (mp_icc_set_profile(opts, icc))
return update_icc_profile(p, opts);
if (mp_icc_set_profile(p->icc_opts, icc))
return update_icc_profile(p);
return true;
}
@ -282,7 +282,6 @@ static bool reparse_cmdline(struct gl_priv *p, char *args)
#define OPT_BASE_STRUCT struct gl_priv
static const struct m_option change_otps[] = {
OPT_SUBSTRUCT("", renderer_opts, gl_video_conf, 0),
OPT_SUBSTRUCT("", icc_opts, mp_icc_conf, 0),
{0}
};
#undef OPT_BASE_STRUCT
@ -299,7 +298,6 @@ static bool reparse_cmdline(struct gl_priv *p, char *args)
if (r >= 0) {
mpgl_lock(p->glctx);
gl_video_set_options(p->renderer, opts->renderer_opts);
update_icc_profile(p, opts->icc_opts);
resize(p);
mpgl_unlock(p->glctx);
}
@ -379,7 +377,7 @@ static int control(struct vo *vo, uint32_t request, void *data)
if (events & VO_EVENT_EXPOSE)
vo->want_redraw = true;
if (events & VO_EVENT_ICC_PROFILE_PATH_CHANGED) {
get_and_update_icc_profile(vo, p->icc_opts);
get_and_update_icc_profile(p);
vo->want_redraw = true;
}
vo_event(vo, events);
@ -428,7 +426,7 @@ static int preinit(struct vo *vo)
gl_video_set_output_depth(p->renderer, p->glctx->depth_r, p->glctx->depth_g,
p->glctx->depth_b);
gl_video_set_options(p->renderer, p->renderer_opts);
if (!get_and_update_icc_profile(vo, p->icc_opts))
if (!get_and_update_icc_profile(p))
goto err_out;
mpgl_unset_context(p->glctx);