vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Mon Mar 4 19:50:11 2019 +0200| [fc13953d90d99ada09c8557b3e32b0abe3b3f558] | committer: Rémi Denis-Courmont
modules: pass force flag as parameter to activation callback > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fc13953d90d99ada09c8557b3e32b0abe3b3f558 --- include/vlc_modules.h | 2 +- modules/audio_output/mmdevice.c | 3 ++- modules/audio_output/winstore.c | 1 + modules/codec/avcodec/va.c | 3 ++- src/input/decoder_helpers.c | 3 ++- src/input/demux.c | 3 ++- src/misc/messages.c | 3 ++- src/modules/modules.c | 19 ++++++++++--------- src/network/tls.c | 6 ++++-- src/video_output/display.c | 3 ++- src/video_output/opengl.c | 3 ++- src/video_output/window.c | 3 ++- 12 files changed, 32 insertions(+), 20 deletions(-) diff --git a/include/vlc_modules.h b/include/vlc_modules.h index e63a0d48aa..b4d1b3200f 100644 --- a/include/vlc_modules.h +++ b/include/vlc_modules.h @@ -28,7 +28,7 @@ * This file defines functions for modules in vlc */ -typedef int (*vlc_activate_t)(void *func, va_list args); +typedef int (*vlc_activate_t)(void *func, bool forced, va_list args); typedef void (*vlc_deactivate_t)(void *func, va_list args); /***************************************************************************** diff --git a/modules/audio_output/mmdevice.c b/modules/audio_output/mmdevice.c index 3aded2b9d3..656a4a243d 100644 --- a/modules/audio_output/mmdevice.c +++ b/modules/audio_output/mmdevice.c @@ -1095,7 +1095,7 @@ static HRESULT ActivateDevice(void *opaque, REFIID iid, PROPVARIANT *actparms, return IMMDevice_Activate(dev, iid, CLSCTX_ALL, actparms, pv); } -static int aout_stream_Start(void *func, va_list ap) +static int aout_stream_Start(void *func, bool forced, va_list ap) { aout_stream_start_t start = func; aout_stream_t *s = va_arg(ap, aout_stream_t *); @@ -1103,6 +1103,7 @@ static int aout_stream_Start(void *func, va_list ap) HRESULT *hr = va_arg(ap, HRESULT *); LPCGUID sid = var_InheritBool(s, "volume-save") ? &GUID_VLC_AUD_OUT : NULL; + (void) forced; *hr = start(s, fmt, sid); if (*hr == AUDCLNT_E_DEVICE_INVALIDATED) return VLC_ETIMEOUT; diff --git a/modules/audio_output/winstore.c b/modules/audio_output/winstore.c index d2afa78844..ea1688e90e 100644 --- a/modules/audio_output/winstore.c +++ b/modules/audio_output/winstore.c @@ -214,6 +214,7 @@ static int aout_stream_Start(void *func, va_list ap) audio_sample_format_t *fmt = va_arg(ap, audio_sample_format_t *); HRESULT *hr = va_arg(ap, HRESULT *); + (void) forced; *hr = start(s, fmt, &GUID_VLC_AUD_OUT); return SUCCEEDED(*hr) ? VLC_SUCCESS : VLC_EGENERIC; } diff --git a/modules/codec/avcodec/va.c b/modules/codec/avcodec/va.c index 040ba2293d..daad7c2dd6 100644 --- a/modules/codec/avcodec/va.c +++ b/modules/codec/avcodec/va.c @@ -88,7 +88,7 @@ vlc_fourcc_t vlc_va_GetChroma(enum PixelFormat hwfmt, enum PixelFormat swfmt) } } -static int vlc_va_Start(void *func, va_list ap) +static int vlc_va_Start(void *func, bool forced, va_list ap) { vlc_va_t *va = va_arg(ap, vlc_va_t *); AVCodecContext *ctx = va_arg(ap, AVCodecContext *); @@ -98,6 +98,7 @@ static int vlc_va_Start(void *func, va_list ap) int (*open)(vlc_va_t *, AVCodecContext *, enum PixelFormat, const es_format_t *, void *) = func; + (void) forced; return open(va, ctx, pix_fmt, fmt, p_sys); } diff --git a/src/input/decoder_helpers.c b/src/input/decoder_helpers.c index 2dcdc1c82a..0153d33585 100644 --- a/src/input/decoder_helpers.c +++ b/src/input/decoder_helpers.c @@ -97,7 +97,7 @@ struct vlc_decoder_device_priv module_t *module; }; -static int decoder_device_Open(void *func, va_list ap) +static int decoder_device_Open(void *func, bool forced, va_list ap) { vlc_decoder_device_Open open = func; vlc_decoder_device *device = va_arg(ap, vlc_decoder_device *); @@ -113,6 +113,7 @@ static int decoder_device_Open(void *func, va_list ap) { assert(device->type != VLC_DECODER_DEVICE_NONE); } + (void) forced; return ret; } diff --git a/src/input/demux.c b/src/input/demux.c index 0d0777ba16..a5fd8e0890 100644 --- a/src/input/demux.c +++ b/src/input/demux.c @@ -162,7 +162,7 @@ static void demux_DestroyDemux(demux_t *demux) vlc_stream_Delete(demux->s); } -static int demux_Probe(void *func, va_list ap) +static int demux_Probe(void *func, bool forced, va_list ap) { int (*probe)(vlc_object_t *) = func; demux_t *demux = va_arg(ap, demux_t *); @@ -175,6 +175,7 @@ static int demux_Probe(void *func, va_list ap) return VLC_EGENERIC; } + (void) forced; return probe(VLC_OBJECT(demux)); } diff --git a/src/misc/messages.c b/src/misc/messages.c index acdb94af84..3de4002be2 100644 --- a/src/misc/messages.c +++ b/src/misc/messages.c @@ -392,12 +392,13 @@ struct vlc_logger_module { void *opaque; }; -static int vlc_logger_load(void *func, va_list ap) +static int vlc_logger_load(void *func, bool forced, va_list ap) { const struct vlc_logger_operations *(*activate)(vlc_object_t *, void **) = func; struct vlc_logger_module *module = va_arg(ap, struct vlc_logger_module *); + (void) forced; module->ops = activate(VLC_OBJECT(module), &module->opaque); return (module->ops != NULL) ? VLC_SUCCESS : VLC_EGENERIC; } diff --git a/src/modules/modules.c b/src/modules/modules.c index 6d493e5e31..bb9922d0dd 100644 --- a/src/modules/modules.c +++ b/src/modules/modules.c @@ -152,7 +152,7 @@ static bool module_match_name(const module_t *m, const char *name, size_t len) } static int module_load (vlc_object_t *obj, module_t *m, - vlc_activate_t init, va_list args) + vlc_activate_t init, bool forced, va_list args) { int ret = VLC_SUCCESS; @@ -164,7 +164,7 @@ static int module_load (vlc_object_t *obj, module_t *m, va_list ap; va_copy (ap, args); - ret = init (m->pf_activate, ap); + ret = init(m->pf_activate, forced, ap); va_end (ap); } @@ -216,7 +216,6 @@ module_t *vlc_module_load(vlc_object_t *obj, const char *capability, } module_t *module = NULL; - const bool b_force_backup = obj->obj.force; /* FIXME: remove this */ va_list args; va_start(args, probe); @@ -231,7 +230,7 @@ module_t *vlc_module_load(vlc_object_t *obj, const char *capability, if (!strcasecmp ("none", shortcut)) goto done; - obj->obj.force = strict && strcasecmp ("any", shortcut); + bool force = strict && strcasecmp ("any", shortcut); for (ssize_t i = 0; i < total; i++) { module_t *cand = mods[i]; @@ -241,7 +240,7 @@ module_t *vlc_module_load(vlc_object_t *obj, const char *capability, continue; mods[i] = NULL; // only try each module once at most... - int ret = module_load (obj, cand, probe, args); + int ret = module_load(obj, cand, probe, force, args); switch (ret) { case VLC_SUCCESS: @@ -256,14 +255,13 @@ module_t *vlc_module_load(vlc_object_t *obj, const char *capability, /* None of the shortcuts matched, fall back to any module */ if (!strict) { - obj->obj.force = false; for (ssize_t i = 0; i < total; i++) { module_t *cand = mods[i]; if (cand == NULL || module_get_score (cand) <= 0) continue; - int ret = module_load (obj, cand, probe, args); + int ret = module_load(obj, cand, probe, false, args); switch (ret) { case VLC_SUCCESS: @@ -276,7 +274,6 @@ module_t *vlc_module_load(vlc_object_t *obj, const char *capability, } done: va_end (args); - obj->obj.force = b_force_backup; module_list_free (mods); if (module != NULL) @@ -312,11 +309,12 @@ void vlc_module_unload(vlc_object_t *obj, module_t *module, } -static int generic_start(void *func, va_list ap) +static int generic_start(void *func, bool forced, va_list ap) { vlc_object_t *obj = va_arg(ap, vlc_object_t *); int (*activate)(vlc_object_t *) = func; + obj->obj.force = forced; return activate(obj); } @@ -332,12 +330,15 @@ static void generic_stop(void *func, va_list ap) module_t *module_need(vlc_object_t *obj, const char *cap, const char *name, bool strict) { + const bool b_force_backup = obj->obj.force; /* FIXME: remove this */ module_t *module = vlc_module_load(obj, cap, name, strict, generic_start, obj); if (module != NULL) { var_Create(obj, "module-name", VLC_VAR_STRING); var_SetString(obj, "module-name", module_get_object(module)); } + + obj->obj.force = b_force_backup; return module; } diff --git a/src/network/tls.c b/src/network/tls.c index 18ca6d8762..55b40f1423 100644 --- a/src/network/tls.c +++ b/src/network/tls.c @@ -46,21 +46,23 @@ /*** TLS credentials ***/ -static int tls_server_load(void *func, va_list ap) +static int tls_server_load(void *func, bool forced, va_list ap) { int (*activate)(vlc_tls_server_t *, const char *, const char *) = func; vlc_tls_server_t *crd = va_arg(ap, vlc_tls_server_t *); const char *cert = va_arg (ap, const char *); const char *key = va_arg (ap, const char *); + (void) forced; return activate (crd, cert, key); } -static int tls_client_load(void *func, va_list ap) +static int tls_client_load(void *func, bool forced, va_list ap) { int (*activate)(vlc_tls_client_t *) = func; vlc_tls_client_t *crd = va_arg(ap, vlc_tls_client_t *); + (void) forced; return activate (crd); } diff --git a/src/video_output/display.c b/src/video_output/display.c index 429d7285eb..ac5a81092d 100644 --- a/src/video_output/display.c +++ b/src/video_output/display.c @@ -65,7 +65,7 @@ static picture_t *VideoBufferNew(filter_t *filter) * *****************************************************************************/ -static int vout_display_start(void *func, va_list ap) +static int vout_display_start(void *func, bool forced, va_list ap) { vout_display_open_cb activate = func; vout_display_t *vd = va_arg(ap, vout_display_t *); @@ -77,6 +77,7 @@ static int vout_display_start(void *func, va_list ap) video_format_Copy(fmtp, &vd->source); fmtp->i_sar_num = 0; fmtp->i_sar_den = 0; + vd->obj.force = forced; /* TODO: pass to activate() instead? */ int ret = activate(vd, cfg, fmtp, context); if (ret != VLC_SUCCESS) diff --git a/src/video_output/opengl.c b/src/video_output/opengl.c index fc521cb438..e4bf375b8f 100644 --- a/src/video_output/opengl.c +++ b/src/video_output/opengl.c @@ -38,13 +38,14 @@ struct vlc_gl_priv_t vlc_atomic_rc_t rc; }; -static int vlc_gl_start(void *func, va_list ap) +static int vlc_gl_start(void *func, bool forced, va_list ap) { int (*activate)(vlc_gl_t *, unsigned, unsigned) = func; vlc_gl_t *gl = va_arg(ap, vlc_gl_t *); unsigned width = va_arg(ap, unsigned); unsigned height = va_arg(ap, unsigned); + (void) forced; return activate(gl, width, height); } diff --git a/src/video_output/window.c b/src/video_output/window.c index a111d7f4e7..20ddece927 100644 --- a/src/video_output/window.c +++ b/src/video_output/window.c @@ -43,11 +43,12 @@ typedef struct vlc_inhibit_t *inhibit; } window_t; -static int vout_window_start(void *func, va_list ap) +static int vout_window_start(void *func, bool forced, va_list ap) { int (*activate)(vout_window_t *) = func; vout_window_t *wnd = va_arg(ap, vout_window_t *); + (void) forced; return activate(wnd); } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
