Re: [PATCH spice-gtk] Add call of gst_deinit at program exit

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> On 19 Oct 2017, at 13:15, Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> wrote:
> 
> Hi
> 
> ----- Original Message -----
>>> 
>>> From: Christophe de Dinechin <dinechin@xxxxxxxxxx>
>>> 
>>> This is useful for some instrumentation, e.g. the leaks tracer,
>>> that perform some of their operations within gst_deinit.
>>> 
>>> Without this patch, if you run spicy with
>>> 	GST_DEBUG="GST_TRACER:7" GST_TRACERS="leaks" spicy ...
>>> the leak tracer does not run at exit, because it runs in gst_deinit.
>>> 
>>> Signed-off-by: Christophe de Dinechin <dinechin@xxxxxxxxxx>
>>> ---
>>> spice-common              | 2 +-
>>> src/channel-display-gst.c | 1 +
>>> 2 files changed, 2 insertions(+), 1 deletion(-)
>>> 
>>> diff --git a/spice-common b/spice-common
>>> index 429ad96..ba11de3 160000
>>> --- a/spice-common
>>> +++ b/spice-common
>>> @@ -1 +1 @@
>>> -Subproject commit 429ad965371ceaaf60b81ccbed7da660ef9e0a94
>>> +Subproject commit ba11de3f3fd58d1b1a99bb62dd9e409e9961a78e
>>> diff --git a/src/channel-display-gst.c b/src/channel-display-gst.c
>>> index f978602..c9ab9bf 100644
>>> --- a/src/channel-display-gst.c
>>> +++ b/src/channel-display-gst.c
>>> @@ -578,6 +578,7 @@ static gboolean gstvideo_init(void)
>>>         GError *err = NULL;
>>>         if (gst_init_check(NULL, NULL, &err)) {
>>>             success = 1;
>>> +            atexit(gst_deinit);
>>>         } else {
>>>             spice_warning("Disabling GStreamer video support: %s",
>>>             err->message);
>>>             g_clear_error(&err);
>> 
>> Calling atexit from a library is a bad idea.
> 
> And calling gst_deinit() from a library is also wrong.

Why? What would be a better way?

The scenario where we call gst_init is a bit complicated,
and there are multiple clients that may call it. I see
no case where, when we have called gst_init, we are not
responsible for also calling gst_deinit.

In any case, it’s even more wrong to not call gst_deinit at all,
and I don’t see a simple way to do that from main with the
existing code without elaborate tests that have somewhat
deep knowledge of the library internals.

How would you do it?

> 

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]