<!DOCTYPE html><html><head><title></title><style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}
p.MsoNormal,p.MsoNoSpacing{margin:0}</style></head><body><div><br></div><div><br></div><div>On Mon, Jan 27, 2020, at 15:00, Rémi Denis-Courmont wrote:<br></div><blockquote id="qt" type="cite"><div>Hi,<br></div><div><br></div><div>I don't think that we require an object to be deleted after a single module probe though (unlike the kernel), or do we?<br></div></blockquote><div><br></div><div>No we don't require it, and nothing prevent to load/unload different kind of module using one vlc_object.<br></div><div><br></div><div>The newest way to load/unload modules is to load them with vlc_module_load() and close them with their own close callbacks.<br></div><div>The problem is that we don't call module_unneed anymore, this function was clearing the resources.<br></div><div><br></div><div>We could also expose vlc_objres_clear() to VLC CORE in order to let modules use vlc_module_load() + vlc_objres_clear() for submodules.<br></div><div><br></div><blockquote id="qt" type="cite"><div><br></div><div class="qt-gmail_quote"><div>Le 27 janvier 2020 15:18:53 GMT+02:00, Thomas Guillem <thomas@gllm.fr> a écrit :<br></div><blockquote class="qt-gmail_quote" style="margin-top:0pt;margin-right:0pt;margin-bottom:0pt;margin-left:0.8ex;border-left-color:rgb(204, 204, 204);border-left-style:solid;border-left-width:1px;padding-left:1ex;"><pre class="qt-k9mail"><div>Instead of clearing them from all kind of modules API.<br></div><div><br></div><div>This will allow to use vlc_obj_*alloc() from all modules without wondering if<br></div><div>resources will be cleaned. Indeed, some modules have their own close callbacks<br></div><div>that don't need module_unneed() (that was calling vlc_objres_clear()) to be<br></div><div>called to release them.<br></div><div><br></div><div>Furthermore, vlc_objres_clear() is an internal API, so submodules using an API<br></div><div>defined in modules and a close callback could not benefit from it.<hr> src/input/decoder_helpers.c | 1 -<br></div><div> src/misc/objects.c          | 1 +<br></div><div> src/modules/modules.c       | 2 --<br></div><div> src/network/tls.c           | 2 --<br></div><div> src/video_output/display.c  | 2 --<br></div><div> src/video_output/opengl.c   | 1 -<br></div><div> src/video_output/window.c   | 1 -<br></div><div> 7 files changed, 1 insertion(+), 9 deletions(-)<br></div><div><br></div><div>diff --git a/src/input/decoder_helpers.c b/src/input/decoder_helpers.c<br></div><div>index e59cdcb3a10..ae022796336 100644<br></div><div>--- a/src/input/decoder_helpers.c<br></div><div>+++ b/src/input/decoder_helpers.c<br></div><div>@@ -222,7 +222,6 @@ vlc_decoder_device_Release(vlc_decoder_device *device)<br></div><div>     {<br></div><div>         if (device->ops->close != NULL)<br></div><div>             device->ops->close(device);<br></div><div>-        vlc_objres_clear(VLC_OBJECT(device));<br></div><div>         vlc_object_delete(device);<br></div><div>     }<br></div><div> }<br></div><div>diff --git a/src/misc/objects.c b/src/misc/objects.c<br></div><div>index f87edd9827f..370f7a92e98 100644<br></div><div>--- a/src/misc/objects.c<br></div><div>+++ b/src/misc/objects.c<br></div><div>@@ -135,6 +135,7 @@ void vlc_object_deinit(vlc_object_t *obj)<br></div><div> <br></div><div> void (vlc_object_delete)(vlc_object_t *obj)<br></div><div> {<br></div><div>+    vlc_objres_clear(obj);<br></div><div>     vlc_object_deinit(obj);<br></div><div>     free(obj);<br></div><div> }<br></div><div>diff --git a/src/modules/modules.c b/src/modules/modules.c<br></div><div>index 2df5702f840..93ca5c8fa75 100644<br></div><div>--- a/src/modules/modules.c<br></div><div>+++ b/src/modules/modules.c<br></div><div>@@ -272,8 +272,6 @@ void module_unneed(vlc_object_t *obj, module_t *module)<br></div><div> <br></div><div>     if (module->deactivate != NULL)<br></div><div>         module->deactivate(obj);<br></div><div>-<br></div><div>-    vlc_objres_clear(obj);<br></div><div> }<br></div><div> <br></div><div> module_t *module_find (const char *name)<br></div><div>diff --git a/src/network/tls.c b/src/network/tls.c<br></div><div>index 2fde82d61a4..3cf7546691f 100644<br></div><div>--- a/src/network/tls.c<br></div><div>+++ b/src/network/tls.c<br></div><div>@@ -101,7 +101,6 @@ void vlc_tls_ServerDelete(vlc_tls_server_t *crd)<br></div><div>         return;<br></div><div> <br></div><div>     crd->ops->destroy(crd);<br></div><div>-    vlc_objres_clear(VLC_OBJECT(crd));<br></div><div>     vlc_object_delete(crd);<br></div><div> }<br></div><div> <br></div><div>@@ -129,7 +128,6 @@ void vlc_tls_ClientDelete(vlc_tls_client_t *crd)<br></div><div>         return;<br></div><div> <br></div><div>     crd->ops->destroy(crd);<br></div><div>-    vlc_objres_clear(VLC_OBJECT(crd));<br></div><div>     vlc_object_delete(crd);<br></div><div> }<br></div><div> <br></div><div>diff --git a/src/video_output/display.c b/src/video_output/display.c<br></div><div>index 76d49ee240d..db83ee74a43 100644<br></div><div>--- a/src/video_output/display.c<br></div><div>+++ b/src/video_output/display.c<br></div><div>@@ -785,7 +785,6 @@ vout_display_t *vout_display_New(vlc_object_t *parent,<br></div><div>     if (VoutDisplayCreateRender(vd)) {<br></div><div>         if (vd->close != NULL)<br></div><div>             vd->close(vd);<br></div><div>-        vlc_objres_clear(VLC_OBJECT(vd));<br></div><div>         video_format_Clean(&vd->fmt);<br></div><div>         goto error;<br></div><div>     }<br></div><div>@@ -814,7 +813,6 @@ void vout_display_Delete(vout_display_t *vd)<br></div><div> <br></div><div>     if (vd->close != NULL)<br></div><div>         vd->close(vd);<br></div><div>-    vlc_objres_clear(VLC_OBJECT(vd));<br></div><div> <br></div><div>     video_format_Clean(&vd->source);<br></div><div>     video_format_Clean(&vd->fmt);<br></div><div>diff --git a/src/video_output/opengl.c b/src/video_output/opengl.c<br></div><div>index 9d207ac7095..9f615f9c0cd 100644<br></div><div>--- a/src/video_output/opengl.c<br></div><div>+++ b/src/video_output/opengl.c<br></div><div>@@ -105,7 +105,6 @@ void vlc_gl_Release(vlc_gl_t *gl)<br></div><div> <br></div><div>     if (gl->destroy != NULL)<br></div><div>         gl->destroy(gl);<br></div><div>-    vlc_objres_clear(VLC_OBJECT(gl));<br></div><div>     vlc_object_delete(gl);<br></div><div> }<br></div><div> <br></div><div>diff --git a/src/video_output/window.c b/src/video_output/window.c<br></div><div>index 16ebf9ef5a2..aeab072ce6c 100644<br></div><div>--- a/src/video_output/window.c<br></div><div>+++ b/src/video_output/window.c<br></div><div>@@ -140,7 +140,6 @@ void vout_window_Delete(vout_window_t *window)<br></div><div>     if (window->ops->destroy != NULL)<br></div><div>         window->ops->destroy(window);<br></div><div> <br></div><div>-    vlc_objres_clear(VLC_OBJECT(window));<br></div><div>     vlc_mutex_destroy(&w->lock);<br></div><div>     vlc_object_delete(window);<br></div><div> }<br></div></pre></blockquote></div><div><br></div><div>-- <br></div><div>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté. <br></div><div>_______________________________________________<br></div><div>vlc-devel mailing list<br></div><div>To unsubscribe or modify your subscription options:<br></div><div>https://mailman.videolan.org/listinfo/vlc-devel<br></div></blockquote><div><br></div></body></html>