[vlc-devel] [PATCH 1/4] module: pass VLC object to vlc_module_unload()
RĂ©mi Denis-Courmont
remi at remlab.net
Sat Jun 17 21:39:43 CEST 2017
---
include/vlc_modules.h | 5 ++++-
modules/audio_output/mmdevice.c | 2 +-
modules/audio_output/winstore.c | 2 +-
modules/codec/avcodec/va.c | 2 +-
src/misc/messages.c | 4 ++--
src/modules/modules.c | 8 +++++---
src/network/tls.c | 2 +-
src/video_output/window.c | 2 +-
8 files changed, 16 insertions(+), 11 deletions(-)
diff --git a/include/vlc_modules.h b/include/vlc_modules.h
index 7f45217969..2be48f0b2a 100644
--- a/include/vlc_modules.h
+++ b/include/vlc_modules.h
@@ -36,7 +36,10 @@ typedef void (*vlc_deactivate_t)(void *func, va_list args);
VLC_API module_t * vlc_module_load( vlc_object_t *obj, const char *cap, const char *name, bool strict, vlc_activate_t probe, ... ) VLC_USED;
#define vlc_module_load(o,c,n,s,...) \
vlc_module_load(VLC_OBJECT(o),c,n,s,__VA_ARGS__)
-VLC_API void vlc_module_unload( module_t *, vlc_deactivate_t deinit, ... );
+VLC_API void vlc_module_unload( vlc_object_t *obj, module_t *,
+ vlc_deactivate_t deinit, ... );
+#define vlc_module_unload(o,m,d,...) \
+ vlc_module_unload(VLC_OBJECT(o),m,d,__VA_ARGS__)
VLC_API module_t * module_need( vlc_object_t *, const char *, const char *, bool ) VLC_USED;
#define module_need(a,b,c,d) module_need(VLC_OBJECT(a),b,c,d)
diff --git a/modules/audio_output/mmdevice.c b/modules/audio_output/mmdevice.c
index 42285f7184..2494eee994 100644
--- a/modules/audio_output/mmdevice.c
+++ b/modules/audio_output/mmdevice.c
@@ -1108,7 +1108,7 @@ static void Stop(audio_output_t *aout)
assert(sys->stream != NULL);
EnterMTA();
- vlc_module_unload(sys->module, aout_stream_Stop, sys->stream);
+ vlc_module_unload(sys->stream, sys->module, aout_stream_Stop, sys->stream);
LeaveMTA();
vlc_object_release(sys->stream);
diff --git a/modules/audio_output/winstore.c b/modules/audio_output/winstore.c
index b3ddedd8cd..d345673249 100644
--- a/modules/audio_output/winstore.c
+++ b/modules/audio_output/winstore.c
@@ -260,7 +260,7 @@ static void Stop(audio_output_t *aout)
assert (sys->stream != NULL);
EnterMTA();
- vlc_module_unload(sys->module, aout_stream_Stop, sys->stream);
+ vlc_module_unload(sys->stream, sys->module, aout_stream_Stop, sys->stream);
LeaveMTA();
vlc_object_release(sys->stream);
diff --git a/modules/codec/avcodec/va.c b/modules/codec/avcodec/va.c
index 4a7e7efd9b..8095081370 100644
--- a/modules/codec/avcodec/va.c
+++ b/modules/codec/avcodec/va.c
@@ -148,6 +148,6 @@ vlc_va_t *vlc_va_New(vlc_object_t *obj, AVCodecContext *avctx,
void vlc_va_Delete(vlc_va_t *va, AVCodecContext *avctx)
{
- vlc_module_unload(va->module, vlc_va_Stop, va, avctx);
+ vlc_module_unload(va, va->module, vlc_va_Stop, va, avctx);
vlc_object_release(va);
}
diff --git a/src/misc/messages.c b/src/misc/messages.c
index 454ad16728..9fa840478e 100644
--- a/src/misc/messages.c
+++ b/src/misc/messages.c
@@ -410,7 +410,7 @@ void vlc_LogSet(libvlc_int_t *vlc, vlc_log_cb cb, void *opaque)
vlc_rwlock_unlock(&logger->lock);
if (module != NULL)
- vlc_module_unload(module, vlc_logger_unload, sys);
+ vlc_module_unload(vlc, module, vlc_logger_unload, sys);
/* Announce who we are */
msg_Dbg (vlc, "VLC media player - %s", VERSION_MESSAGE);
@@ -427,7 +427,7 @@ void vlc_LogDeinit(libvlc_int_t *vlc)
return;
if (logger->module != NULL)
- vlc_module_unload(logger->module, vlc_logger_unload, logger->sys);
+ vlc_module_unload(vlc, logger->module, vlc_logger_unload, logger->sys);
else
/* Flush early log messages (corner case: no call to vlc_LogInit()) */
if (logger->log == vlc_vaLogEarly)
diff --git a/src/modules/modules.c b/src/modules/modules.c
index 19a3af0f71..5873eff38a 100644
--- a/src/modules/modules.c
+++ b/src/modules/modules.c
@@ -322,13 +322,14 @@ done:
return module;
}
-
+#undef vlc_module_unload
/**
* Deinstantiates a module.
* \param module the module pointer as returned by vlc_module_load()
* \param deinit deactivation callback
*/
-void vlc_module_unload(module_t *module, vlc_deactivate_t deinit, ...)
+void vlc_module_unload(vlc_object_t *obj, module_t *module,
+ vlc_deactivate_t deinit, ...)
{
if (module->pf_deactivate != NULL)
{
@@ -338,6 +339,7 @@ void vlc_module_unload(module_t *module, vlc_deactivate_t deinit, ...)
deinit(module->pf_deactivate, ap);
va_end(ap);
}
+ (void) obj;
}
@@ -368,7 +370,7 @@ module_t *module_need(vlc_object_t *obj, const char *cap, const char *name,
void module_unneed(vlc_object_t *obj, module_t *module)
{
msg_Dbg(obj, "removing module \"%s\"", module_get_object(module));
- vlc_module_unload(module, generic_stop, obj);
+ vlc_module_unload(obj, module, generic_stop, obj);
}
/**
diff --git a/src/network/tls.c b/src/network/tls.c
index 75758d42b2..4ebcfb319c 100644
--- a/src/network/tls.c
+++ b/src/network/tls.c
@@ -131,7 +131,7 @@ void vlc_tls_Delete (vlc_tls_creds_t *crd)
if (crd == NULL)
return;
- vlc_module_unload (crd->module, tls_unload, crd);
+ vlc_module_unload(crd, crd->module, tls_unload, crd);
vlc_object_release (crd);
}
diff --git a/src/video_output/window.c b/src/video_output/window.c
index 01d913539e..6d76f12199 100644
--- a/src/video_output/window.c
+++ b/src/video_output/window.c
@@ -108,7 +108,7 @@ void vout_window_Delete(vout_window_t *window)
vlc_inhibit_Destroy (w->inhibit);
}
- vlc_module_unload(w->module, vout_window_stop, window);
+ vlc_module_unload(window, w->module, vout_window_stop, window);
vlc_object_release(window);
}
--
2.11.0
More information about the vlc-devel
mailing list