diff options
author | wm4 <wm4@nowhere> | 2020-08-07 19:39:46 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2020-08-07 19:41:56 +0200 |
commit | 1f132c675a18f0b80fc3159a7b13b5b061f2d93c (patch) | |
tree | bb421d3c4dcae749c4161bd3e2abeb981c28ee44 /options/m_config_frontend.h | |
parent | d5a02dd9342f5c61f3e3a9caf2082dd46b5099e3 (diff) | |
download | mpv-1f132c675a18f0b80fc3159a7b13b5b061f2d93c.tar.bz2 mpv-1f132c675a18f0b80fc3159a7b13b5b061f2d93c.tar.xz |
options: add some way to more or less "unapply" profiles
Make it possible to restore from profiles by backing up the option
values before profile application. This is sort of like unapplying a
profile. Since there might be multiple ways to do this, a profile needs
to explicitly provide the "profile-restore" option, which specifies how
exactly this should be done.
This is a big mess. There is not natural way to do this. Profile
application is "destructive" and simply changes the values of the
options. Maybe one could argue that the option system should have
hierarchical "overlays" of profiles instead, where unset options will
use the value of the lower profiles. Options set interactively by the
user would be the top profile. Default values would be in the lowest
profile. You could unapply a profile by simply removing it from this
overlay stack.
But uh, let's not, so here's something stupid. It reuses some code used
for file local options to reduce code size. At least the overlay idea
would still be possible in theory, and could be added as another
profile-restore mode.
This is used by the following commit.
Diffstat (limited to 'options/m_config_frontend.h')
-rw-r--r-- | options/m_config_frontend.h | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/options/m_config_frontend.h b/options/m_config_frontend.h index 81bc78b6e1..ee6b9aec46 100644 --- a/options/m_config_frontend.h +++ b/options/m_config_frontend.h @@ -70,6 +70,9 @@ typedef struct m_config { struct m_profile *profiles; // Depth when recursively including profiles. int profile_depth; + // Temporary during profile application. + struct m_opt_backup **profile_backup_tmp; + int profile_backup_flags; struct m_opt_backup *backup_opts; @@ -224,17 +227,6 @@ void m_config_finish_default_profile(struct m_config *config, int flags); */ struct m_profile *m_config_add_profile(struct m_config *config, char *name); -/* Set the description of a profile. - * Used by the config file parser when defining a profile. - * - * \param p The profile object. - * \param arg The profile's name. - */ -void m_profile_set_desc(struct m_profile *p, bstr desc); - -// Set auto profile condition of a profile. -void m_profile_set_cond(struct m_profile *p, bstr cond); - /* Add an option to a profile. * Used by the config file parser when defining a profile. * @@ -256,6 +248,9 @@ int m_config_set_profile_option(struct m_config *config, struct m_profile *p, */ int m_config_set_profile(struct m_config *config, char *name, int flags); +// Attempt to "unset" a profile if possible. +int m_config_restore_profile(struct m_config *config, char *name); + struct mpv_node m_config_get_profiles(struct m_config *config); // Run async option updates here. This will call option_change_callback() on it. |