static bool reparse_cmdline(struct vo_priv *p, char *args) { struct m_config *cfg = NULL; struct vo_priv *opts = NULL; int r = 0; pthread_mutex_lock(&p->ctx->lock); const struct vo_priv *vodef = p->vo->driver->priv_defaults; cfg = m_config_new(NULL, p->vo->log, sizeof(*opts), vodef, change_opts); opts = cfg->optstruct; r = m_config_parse_suboptions(cfg, "opengl-cb", args); if (r >= 0) { talloc_free(p->ctx->new_opts_cfg); p->ctx->new_opts = opts; p->ctx->new_opts_cfg = cfg; p->ctx->update_new_opts = true; cfg = NULL; update(p); } talloc_free(cfg); pthread_mutex_unlock(&p->ctx->lock); return r >= 0; }
static bool reparse_cmdline(struct vo_priv *p, char *args) { struct m_config *cfg = NULL; struct vo_priv *opts = NULL; int r = 0; pthread_mutex_lock(&p->ctx->lock); // list of options which can be changed at runtime #define OPT_BASE_STRUCT struct vo_priv static const struct m_option change_otps[] = { OPT_SUBSTRUCT("", renderer_opts, gl_video_conf, 0), {0} }; #undef OPT_BASE_STRUCT const struct vo_priv *vodef = p->vo->driver->priv_defaults; cfg = m_config_new(NULL, p->vo->log, sizeof(*opts), vodef, change_otps); opts = cfg->optstruct; r = m_config_parse_suboptions(cfg, "opengl-cb", args); if (r >= 0) { talloc_free(p->ctx->new_opts_cfg); p->ctx->new_opts = opts; p->ctx->new_opts_cfg = cfg; p->ctx->update_new_opts = true; cfg = NULL; update(p); } talloc_free(cfg); pthread_mutex_unlock(&p->ctx->lock); return r >= 0; }
static bool reparse_cmdline(struct gl_priv *p, char *args) { struct m_config *cfg = NULL; struct gl_priv *opts = NULL; int r = 0; // list of options which can be changed at runtime #define OPT_BASE_STRUCT struct gl_priv static const struct m_option change_otps[] = { OPT_SUBSTRUCT("", renderer_opts, gl_video_conf, 0), {0} }; #undef OPT_BASE_STRUCT if (strcmp(args, "-") == 0) { opts = p; } else { const struct gl_priv *vodef = p->vo->driver->priv_defaults; cfg = m_config_new(NULL, p->vo->log, sizeof(*opts), vodef, change_otps); opts = cfg->optstruct; r = m_config_parse_suboptions(cfg, "opengl", args); } if (r >= 0) { gl_video_set_options(p->renderer, opts->renderer_opts); gl_video_configure_queue(p->renderer, p->vo); p->vo->want_redraw = true; } talloc_free(cfg); return r >= 0; }
int cfg_read(void) { char *cfg = get_path("gui.conf"); /* read configuration */ mp_msg(MSGT_GPLAYER, MSGL_V, "[GUI] [cfg] reading config file: %s\n", cfg); gui_conf = m_config_new(); m_config_register_options(gui_conf, gui_opts); if (m_config_parse_config_file(gui_conf, cfg) < 0) mp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_ConfigFileError); free(cfg); return 0; }