From ed246608e80f193bf20bbc4bb892c8a19415cfb6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Duraffort?= Date: Thu, 10 Jun 2010 20:19:05 +0200 Subject: [PATCH] plugins: allow to set more than one shortcut in on shot. This is faster as we can now alloc the right size for the shortcuts array. --- include/vlc_plugin.h | 4 ++-- src/modules/entry.c | 13 ++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/include/vlc_plugin.h b/include/vlc_plugin.h index eb957ca140..6ed798109e 100644 --- a/include/vlc_plugin.h +++ b/include/vlc_plugin.h @@ -195,9 +195,9 @@ enum vlc_module_properties if (vlc_plugin_set (p_module, NULL, VLC_SUBMODULE_CREATE, &p_submodule)) \ goto error; -#define add_shortcut( shortcut ) \ +#define add_shortcut( ... ) \ if (vlc_module_set (p_submodule, VLC_MODULE_SHORTCUT, \ - (const char *)(shortcut))) \ + sizeof((const char*[]){__VA_ARGS__})/sizeof(const char*), __VA_ARGS__)) \ goto error; #define set_shortname( shortname ) \ diff --git a/src/modules/entry.c b/src/modules/entry.c index e0b48d293f..2e8b3c2977 100644 --- a/src/modules/entry.c +++ b/src/modules/entry.c @@ -181,9 +181,16 @@ int vlc_plugin_set (module_t *module, module_config_t *item, int propid, ...) case VLC_MODULE_SHORTCUT: { - const char *psz_new = va_arg (ap, char*); - module->pp_shortcuts = realloc (module->pp_shortcuts, sizeof( char ** ) * (module->i_shortcuts + 1)); - module->pp_shortcuts[module->i_shortcuts++] = psz_new; + unsigned i_shortcuts = va_arg (ap, unsigned); + unsigned index = module->i_shortcuts; + module->i_shortcuts += i_shortcuts; + + module->pp_shortcuts = realloc (module->pp_shortcuts, sizeof( char ** ) * module->i_shortcuts); + for (; index < module->i_shortcuts; index++) + { + const char *psz_new = va_arg (ap, const char*); + module->pp_shortcuts[index] = psz_new; + } break; } -- 2.39.2