# HG changeset patch # User Darren Salt # Date 1199143374 0 # Node ID f26790c9c8ccb4577e23279c9cf12059cfb80ec8 # Parent 15d9dde6ee707018e18eab7d0b971c521899bd21 Prepare the xine engine for configuration file splitting. Configuration items are marked as external if they're created via the front end configuration item registration interface (xine_config_register_*). diff --git a/include/xine/configfile.h b/include/xine/configfile.h --- a/include/xine/configfile.h +++ b/include/xine/configfile.h @@ -78,6 +78,9 @@ struct cfg_entry_s { /** callback function and data for live changeable values */ xine_config_cb_t callback; void *callback_data; + + /** internal */ + uint8_t xine_engine; }; struct config_values_s { @@ -167,6 +170,11 @@ struct config_values_s { cfg_entry_t* (*lookup_entry) (config_values_t *self, const char *key); /** + * mark entry as external; used by xine_config_register_foo() + */ + void (*mark_external) (config_values_t *self, const char *key); + + /** * unregister callback function */ void (*unregister_callback) (config_values_t *self, const char *key); diff --git a/src/xine-engine/configfile.c b/src/xine-engine/configfile.c --- a/src/xine-engine/configfile.c +++ b/src/xine-engine/configfile.c @@ -330,6 +330,7 @@ static cfg_entry_t *config_add (config_v entry->unknown_value = NULL; entry->str_value = NULL; entry->exp_level = exp_level; + entry->xine_engine = 1; config_insert(this, entry); @@ -778,6 +779,13 @@ static int config_register_enum (config_ pthread_mutex_unlock(&this->config_lock); return entry->num_value; +} + +static void config_mark_external (config_values_t *this, const char *key) +{ + cfg_entry_t *entry = config_lookup_entry (this, key); + if (entry) + entry->xine_engine = 0; } static void config_shallow_copy(xine_cfg_entry_t *dest, cfg_entry_t *src) @@ -1230,6 +1238,7 @@ config_values_t *_x_config_init (void) { this->update_string = config_update_string; this->parse_enum = config_parse_enum; this->lookup_entry = config_lookup_entry; + this->mark_external = config_mark_external; this->unregister_callback = config_unregister_cb; this->dispose = config_dispose; diff --git a/src/xine-engine/xine_interface.c b/src/xine-engine/xine_interface.c --- a/src/xine-engine/xine_interface.c +++ b/src/xine-engine/xine_interface.c @@ -87,15 +87,11 @@ const char* xine_config_register_string xine_config_cb_t changed_cb, void *cb_data) { - return self->config->register_string (self->config, - key, - def_value, - description, - help, - exp_level, - changed_cb, - cb_data); - + const char *ret = self->config->register_string + (self->config, key, def_value, description, help, + exp_level, changed_cb, cb_data); + self->config->mark_external (self->config, key); + return ret; } const char* xine_config_register_filename (xine_t *self, @@ -108,10 +104,11 @@ const char* xine_config_register_filenam xine_config_cb_t changed_cb, void *cb_data) { - return self->config->register_filename (self->config, - key, def_value, req_type, - description, help, exp_level, - changed_cb, cb_data); + const char *ret = self->config->register_filename + (self->config, key, def_value, req_type, description, + help, exp_level, changed_cb, cb_data); + self->config->mark_external (self->config, key); + return ret; } int xine_config_register_range (xine_t *self, @@ -123,10 +120,11 @@ int xine_config_register_range (xine_t * int exp_level, xine_config_cb_t changed_cb, void *cb_data) { - return self->config->register_range (self->config, - key, def_value, min, max, - description, help, exp_level, - changed_cb, cb_data); + int ret = self->config->register_range + (self->config, key, def_value, min, max, description, help, + exp_level, changed_cb, cb_data); + self->config->mark_external (self->config, key); + return ret; } @@ -139,10 +137,11 @@ int xine_config_register_enum (xine_t *s int exp_level, xine_config_cb_t changed_cb, void *cb_data) { - return self->config->register_enum (self->config, - key, def_value, values, - description, help, exp_level, - changed_cb, cb_data); + int ret = self->config->register_enum + (self->config, key, def_value, values, description, help, + exp_level, changed_cb, cb_data); + self->config->mark_external (self->config, key); + return ret; } @@ -154,10 +153,11 @@ int xine_config_register_num (xine_t *se int exp_level, xine_config_cb_t changed_cb, void *cb_data) { - return self->config->register_num (self->config, - key, def_value, - description, help, exp_level, - changed_cb, cb_data); + int ret = self->config->register_num + (self->config, key, def_value, description, help, exp_level, + changed_cb, cb_data); + self->config->mark_external (self->config, key); + return ret; } @@ -169,10 +169,11 @@ int xine_config_register_bool (xine_t *s int exp_level, xine_config_cb_t changed_cb, void *cb_data) { - return self->config->register_bool (self->config, - key, def_value, - description, help, exp_level, - changed_cb, cb_data); + int ret = self->config->register_bool + (self->config, key, def_value, description, help, exp_level, + changed_cb, cb_data); + self->config->mark_external (self->config, key); + return ret; }