Commit 4e9e9f5c authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

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.
parent abd557df
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
#ifdef HAVE_UNISTD_H #ifdef HAVE_UNISTD_H
# include <unistd.h> # include <unistd.h>
#endif #endif
#include <assert.h>
#if !defined(HAVE_DYNAMIC_PLUGINS) #if !defined(HAVE_DYNAMIC_PLUGINS)
/* no support for plugins */ /* no support for plugins */
...@@ -83,7 +84,7 @@ static int CacheSaveConfig ( module_t *, FILE * ); ...@@ -83,7 +84,7 @@ static int CacheSaveConfig ( module_t *, FILE * );
/* Sub-version number /* Sub-version number
* (only used to avoid breakage in dev version when cache structure changes) */ * (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 */ /* Format string for the cache filename */
#define CACHENAME_FORMAT \ #define CACHENAME_FORMAT \
...@@ -327,6 +328,16 @@ void CacheLoad( vlc_object_t *p_this, module_bank_t *p_bank, bool b_delete ) ...@@ -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 ) static int CacheLoadConfig( module_t *p_module, FILE *file )
{ {
uint32_t i_lines; uint32_t i_lines;
...@@ -435,7 +446,10 @@ static int CacheLoadConfig( module_t *p_module, FILE *file ) ...@@ -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; return VLC_SUCCESS;
...@@ -670,7 +684,8 @@ static int CacheSaveConfig( module_t *p_module, FILE *file ) ...@@ -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++) 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_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; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment