[vlc-devel] [PATCH] gl: move destroy callback to vlc_gl_t
Thomas Guillem
thomas at gllm.fr
Thu Jul 18 08:14:03 CEST 2019
On Thu, Jul 18, 2019, at 08:13, Rémi Denis-Courmont wrote:
> Hi,
>
> It is never NULL at the moment. But whether it can reasonably be NULL... I'd say it can if all resources were tracked by objres. So IMO, it's *not* a case for an assertion.
OK
>
> Le 18 juillet 2019 08:51:08 GMT+03:00, Thomas Guillem <thomas at gllm.fr> a écrit :
>>
>>
>> On Wed, Jul 17, 2019, at 22:26, Rémi Denis-Courmont wrote:
>>> include/vlc_opengl.h | 1 +
>>> modules/video_output/glx.c | 3 ++-
>>> modules/video_output/opengl/egl.c | 5 +++--
>>> modules/video_output/vgl.c | 5 +++--
>>> modules/video_output/win32/wgl.c | 3 ++-
>>> src/video_output/opengl.c | 11 ++---------
>>> 6 files changed, 13 insertions(+), 15 deletions(-)
>>>
>>> diff --git a/include/vlc_opengl.h b/include/vlc_opengl.h
>>> index 8c4909fc5d..4e436c939b 100644
>>> --- a/include/vlc_opengl.h
>>> +++ b/include/vlc_opengl.h
>>> @@ -51,6 +51,7 @@ struct vlc_gl_t
>>> void (*resize)(vlc_gl_t *, unsigned, unsigned);
>>> void (*swap)(vlc_gl_t *);
>>> void*(*getProcAddress)(vlc_gl_t *, const char *);
>>> + void (*destroy)(vlc_gl_t *);
>>>
>>> enum {
>>> VLC_GL_EXT_DEFAULT,
>>> diff --git a/modules/video_output/glx.c b/modules/video_output/glx.c
>>> index d5d47c017a..9856c063a3 100644
>>> --- a/modules/video_output/glx.c
>>> +++ b/modules/video_output/glx.c
>>> @@ -219,6 +219,7 @@ static int Open(vlc_gl_t *gl, unsigned width,
>>> unsigned height)
>>> gl->resize = NULL;
>>> gl->swap = SwapBuffers;
>>> gl->getProcAddress = GetSymbol;
>>> + gl->destroy = Close;
>>>
>>> bool is_swap_interval_set = false;
>>>
>>> @@ -271,5 +272,5 @@ vlc_module_begin ()
>>> set_category (CAT_VIDEO)
>>> set_subcategory (SUBCAT_VIDEO_VOUT)
>>> set_capability ("opengl", 20)
>>> - set_callbacks (Open, Close)
>>> + set_callbacks(Open, NULL)
>>> vlc_module_end ()
>>> diff --git a/modules/video_output/opengl/egl.c
>>> b/modules/video_output/opengl/egl.c
>>> index bd1b6941e4..b34ac06114 100644
>>> --- a/modules/video_output/opengl/egl.c
>>> +++ b/modules/video_output/opengl/egl.c
>>> @@ -381,6 +381,7 @@ static int Open(vlc_gl_t *gl, const struct gl_api
>>> *api,
>>> gl->resize = Resize;
>>> gl->swap = SwapBuffers;
>>> gl->getProcAddress = GetSymbol;
>>> + gl->destroy = Close;
>>> gl->egl.queryString = QueryString;
>>>
>>> sys->eglCreateImageKHR = (void *)eglGetProcAddress("eglCreateImageKHR");
>>> @@ -422,12 +423,12 @@ vlc_module_begin ()
>>> set_category (CAT_VIDEO)
>>> set_subcategory (SUBCAT_VIDEO_VOUT)
>>> set_capability ("opengl", 50)
>>> - set_callbacks (OpenGL, Close)
>>> + set_callbacks(OpenGL, NULL)
>>> add_shortcut ("egl")
>>>
>>> add_submodule ()
>>> set_capability ("opengl es2", 50)
>>> - set_callbacks (OpenGLES2, Close)
>>> + set_callbacks(OpenGLES2, NULL)
>>> add_shortcut ("egl")
>>>
>>> vlc_module_end ()
>>> diff --git a/modules/video_output/vgl.c b/modules/video_output/vgl.c
>>> index c2c9be3696..e6825e19ac 100644
>>> --- a/modules/video_output/vgl.c
>>> +++ b/modules/video_output/vgl.c
>>> @@ -129,6 +129,7 @@ static int Open(vlc_gl_t *gl, unsigned width,
>>> unsigned height)
>>> gl->resize = Resize;
>>> gl->swap = VglSwapBuffers;
>>> gl->getProcAddress = OurGetProcAddress;
>>> + gl->destroy = Close;
>>>
>>> if( sys->setupCb )
>>> if( !sys->setupCb(sys->opaque) )
>>> @@ -154,11 +155,11 @@ vlc_module_begin()
>>> set_subcategory(SUBCAT_VIDEO_VOUT)
>>>
>>> set_capability("opengl", 0)
>>> - set_callbacks(Open, Close)
>>> + set_callbacks(Open, NULL)
>>> add_shortcut("vglmem")
>>>
>>> add_submodule()
>>> set_capability("opengl es2", 0)
>>> - set_callbacks(Open, Close)
>>> + set_callbacks(Open, NULL)
>>> add_shortcut("vglmem")
>>> vlc_module_end()
>>> diff --git a/modules/video_output/win32/wgl.c
>>> b/modules/video_output/win32/wgl.c
>>> index 8f18424a8b..149149963f 100644
>>> --- a/modules/video_output/win32/wgl.c
>>> +++ b/modules/video_output/win32/wgl.c
>>> @@ -49,7 +49,7 @@ vlc_module_begin()
>>> add_integer("gpu-affinity", -1, HW_GPU_AFFINITY_TEXT,
>>> HW_GPU_AFFINITY_TEXT, true)
>>>
>>> set_capability("opengl", 50)
>>> - set_callbacks(Open, Close)
>>> + set_callbacks(Open, NULL)
>>> add_shortcut("wgl")
>>> vlc_module_end()
>>>
>>> @@ -235,6 +235,7 @@ static int Open(vlc_gl_t *gl, unsigned width,
>>> unsigned height)
>>> gl->resize = NULL;
>>> gl->swap = Swap;
>>> gl->getProcAddress = OurGetProcAddress;
>>> + gl->destroy = Close;
>>>
>>> if (sys->exts.GetExtensionsStringEXT || sys->exts.GetExtensionsStringARB)
>>> gl->wgl.getExtensionsString = GetExtensionsString;
>>> diff --git a/src/video_output/opengl.c b/src/video_output/opengl.c
>>> index f17c8ff05c..9d207ac709 100644
>>> --- a/src/video_output/opengl.c
>>> +++ b/src/video_output/opengl.c
>>> @@ -52,14 +52,6 @@ static int vlc_gl_start(void *func, bool forced, va_list ap)
>>> return ret;
>>> }
>>>
>>> -static void vlc_gl_stop(void *func, va_list ap)
>>> -{
>>> - void (*deactivate)(vlc_gl_t *) = func;
>>> - vlc_gl_t *gl = va_arg(ap, vlc_gl_t *);
>>> -
>>> - deactivate(gl);
>>> -}
>>> -
>>> vlc_gl_t *vlc_gl_Create(const struct vout_display_cfg *restrict cfg,
>>> unsigned flags, const char *name)
>>> {
>>> @@ -111,7 +103,8 @@ void vlc_gl_Release(vlc_gl_t *gl)
>>> if (!vlc_atomic_rc_dec(&glpriv->rc))
>>> return;
>>>
>>> - vlc_module_unload(gl->module, vlc_gl_stop, gl);
>>> + if (gl->destroy != NULL)
>>> + gl->destroy(gl);
>>
>> Can gl->destroy be NULL ? If not, I would have put an assert(gl->destroy)
>>
>>> vlc_objres_clear(VLC_OBJECT(gl));
>>> vlc_object_delete(gl);
>>> }
>>> --
>>> 2.22.0vlc-devel mailing list
>>> To unsubscribe or modify your subscription options:
>>> https://mailman.videolan.org/listinfo/vlc-devel
>> vlc-devel mailing list
>> To unsubscribe or modify your subscription options:
>> https://mailman.videolan.org/listinfo/vlc-devel
>
> --
> Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20190718/f320465c/attachment.html>
More information about the vlc-devel
mailing list