From 4e9e9f5cac1a576cc3c27695d00a11535a8219d6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Wed, 20 Jan 2010 20:44:05 +0200 Subject: [PATCH] Save the fact that an item has a callback, not the callback itself Saving pointers in the cache makes no sense. In this case, we only want to know that the plugin must be preloaded so that the configuration item callback works from the preference dialog. --- src/modules/cache.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/modules/cache.c b/src/modules/cache.c index 089f4aa842..cbff44a1f9 100644 --- a/src/modules/cache.c +++ b/src/modules/cache.c @@ -41,6 +41,7 @@ #ifdef HAVE_UNISTD_H # include #endif +#include #if !defined(HAVE_DYNAMIC_PLUGINS) /* no support for plugins */ @@ -83,7 +84,7 @@ static int CacheSaveConfig ( module_t *, FILE * ); /* Sub-version number * (only used to avoid breakage in dev version when cache structure changes) */ -#define CACHE_SUBVERSION_NUM 7 +#define CACHE_SUBVERSION_NUM 8 /* Format string for the cache filename */ #define CACHENAME_FORMAT \ @@ -327,6 +328,16 @@ void CacheLoad( vlc_object_t *p_this, module_bank_t *p_bank, bool b_delete ) } +/* This function should never be called. + * It is only used as a non-NULL vlc_callback_t value for comparison. */ +static int dummy_callback (vlc_object_t *obj, const char *name, + vlc_value_t oldval, vlc_value_t newval, void *data) +{ + (void) obj; (void)name; (void)oldval; (void)newval; (void)data; + assert (0); +} + + static int CacheLoadConfig( module_t *p_module, FILE *file ) { uint32_t i_lines; @@ -435,7 +446,10 @@ static int CacheLoadConfig( module_t *p_module, FILE *file ) } } - LOAD_IMMEDIATE( p_module->p_config[i].pf_callback ); + bool has_callback; + LOAD_IMMEDIATE( has_callback ); + if (has_callback) + p_module->p_config[i].pf_callback = dummy_callback; } return VLC_SUCCESS; @@ -670,7 +684,8 @@ static int CacheSaveConfig( module_t *p_module, FILE *file ) for (int j = 0; j < p_module->p_config[i].i_action; j++) SAVE_STRING( p_module->p_config[i].ppsz_action_text[j] ); - SAVE_IMMEDIATE( p_module->p_config[i].pf_callback ); + bool has_callback = p_module->p_config[i].pf_callback != NULL; + SAVE_IMMEDIATE( has_callback ); } return 0; -- 2.39.5