#endif
#include <vlc_common.h>
-#include "../libvlc.h"
#include "vlc_keys.h"
#include "vlc_charset.h"
#include "vlc_configuration.h"
{
CONFIG_ITEM_STRING, CONFIG_ITEM_FILE, CONFIG_ITEM_MODULE,
CONFIG_ITEM_DIRECTORY, CONFIG_ITEM_MODULE_CAT, CONFIG_ITEM_PASSWORD,
- CONFIG_ITEM_MODULE_LIST, CONFIG_ITEM_MODULE_LIST_CAT
+ CONFIG_ITEM_MODULE_LIST, CONFIG_ITEM_MODULE_LIST_CAT, CONFIG_ITEM_FONT
};
/* NOTE: this needs to be changed if we ever get more than 255 types */
*****************************************************************************
* FIXME: This function really needs to be optimized.
* FIXME: And now even more.
+ * FIXME: remove p_this pointer parameter (or use it)
*****************************************************************************/
module_config_t *config_FindConfig( vlc_object_t *p_this, const char *psz_name )
{
- vlc_list_t *p_list;
- int i_index;
+ VLC_UNUSED(p_this);
+ module_t *p_parser;
if( !psz_name ) return NULL;
- p_list = vlc_list_find( p_this, VLC_OBJECT_MODULE, FIND_ANYWHERE );
+ module_t **list = module_list_get (NULL);
+ if (list == NULL)
+ return NULL;
- for( i_index = 0; i_index < p_list->i_count; i_index++ )
+ for (size_t i = 0; (p_parser = list[i]) != NULL; i++)
{
module_config_t *p_item, *p_end;
- module_t *p_parser = (module_t *)p_list->p_values[i_index].p_object;
if( !p_parser->i_config_items )
continue;
|| ( p_item->psz_oldname
&& !strcmp( psz_name, p_item->psz_oldname ) ) )
{
- vlc_list_release( p_list );
+ module_list_free (list);
return p_item;
}
}
}
- vlc_list_release( p_list );
-
+ module_list_free (list);
return NULL;
}
*****************************************************************************/
void __config_ResetAll( vlc_object_t *p_this )
{
- libvlc_priv_t *priv = libvlc_priv (p_this->p_libvlc);
- int i_index;
- vlc_list_t *p_list;
+ VLC_UNUSED(p_this);
module_t *p_module;
+ module_t **list = module_list_get (NULL);
- /* Acquire config file lock */
- vlc_mutex_lock( &priv->config_lock );
-
- p_list = vlc_list_find( p_this, VLC_OBJECT_MODULE, FIND_ANYWHERE );
-
- for( i_index = 0; i_index < p_list->i_count; i_index++ )
+ for (size_t j = 0; (p_module = list[j]) != NULL; j++)
{
- p_module = (module_t *)p_list->p_values[i_index].p_object ;
if( p_module->b_submodule ) continue;
for (size_t i = 0; i < p_module->confsize; i++ )
{
- if (IsConfigIntegerType (p_module->p_config[i].i_type))
- p_module->p_config[i].value.i = p_module->p_config[i].orig.i;
+ module_config_t *p_config = p_module->p_config + i;
+
+ vlc_mutex_lock (p_config->p_lock);
+ if (IsConfigIntegerType (p_config->i_type))
+ p_config->value.i = p_config->orig.i;
else
- if (IsConfigFloatType (p_module->p_config[i].i_type))
- p_module->p_config[i].value.f = p_module->p_config[i].orig.f;
+ if (IsConfigFloatType (p_config->i_type))
+ p_config->value.f = p_config->orig.f;
else
- if (IsConfigStringType (p_module->p_config[i].i_type))
+ if (IsConfigStringType (p_config->i_type))
{
- free ((char *)p_module->p_config[i].value.psz);
- p_module->p_config[i].value.psz =
- strdupnull (p_module->p_config[i].orig.psz);
+ free ((char *)p_config->value.psz);
+ p_config->value.psz =
+ strdupnull (p_config->orig.psz);
}
+ vlc_mutex_unlock (p_config->p_lock);
}
}
- vlc_list_release( p_list );
- vlc_mutex_unlock( &priv->config_lock );
+ module_list_free (list);
}