[meta-freescale] [meta-fsl-arm][PATCH v2 5/5] gst-plugins-gl: Fix build of X11 backend

Philip Craig phil at blackmoth.com.au
Fri Apr 5 05:03:48 PDT 2013


On Fri, Apr 5, 2013 at 9:20 PM, Otavio Salvador <otavio at ossystems.com.br> wrote:
> On Fri, Apr 5, 2013 at 12:21 AM, Philip Craig <phil at blackmoth.com.au> wrote:
>> On Fri, Apr 5, 2013 at 1:07 PM, Otavio Salvador <otavio at ossystems.com.br> wrote:
>>> On Thu, Apr 4, 2013 at 11:25 PM, Philip Craig <phil at blackmoth.com.au> wrote:
>>>> On Fri, Apr 5, 2013 at 11:42 AM, Otavio Salvador
>>>> <otavio at ossystems.com.br> wrote:
>>>>> The X11 backend were failing to build due deprecated calls of GLib
>>>>> methods; this fixes it.
>>>>>
>>>>> Change-Id: Iaf289bc174b45c69ef6d0c590e12daef78e65a49
>>>>> Signed-off-by: Otavio Salvador <otavio at ossystems.com.br>
>>>>> ---
>>>>>  .../0002-remove-deprecated-glib-semaphores.patch   | 49 ++++++++++++++++++----
>>>>>  .../gstreamer/gst-plugins-gl_0.10.3.bbappend       |  2 +-
>>>>>  2 files changed, 43 insertions(+), 8 deletions(-)
>>>>>
>>>>> diff --git a/recipes-multimedia/gstreamer/gst-plugins-gl/0002-remove-deprecated-glib-semaphores.patch b/recipes-multimedia/gstreamer/gst-plugins-gl/0002-remove-deprecated-glib-semaphores.patch
>>>>> index d50290d..36a946b 100644
>>>>> --- a/recipes-multimedia/gstreamer/gst-plugins-gl/0002-remove-deprecated-glib-semaphores.patch
>>>>> +++ b/recipes-multimedia/gstreamer/gst-plugins-gl/0002-remove-deprecated-glib-semaphores.patch
>>>>> @@ -1,7 +1,7 @@
>>>>> -From 5b7e83390bbf87e67079c1dc8fcf12b321d7b0a0 Mon Sep 17 00:00:00 2001
>>>>> +From f48afb8dc3b7a89de7c72b8076b3003c320cf0a9 Mon Sep 17 00:00:00 2001
>>>>>  From: Jeremy Stashluk <jstashluk at dekaresearch.com>
>>>>>  Date: Tue, 19 Feb 2013 09:46:29 -0500
>>>>> -Subject: remove deprecated glib semaphores
>>>>> +Subject: [PATCH] remove deprecated glib semaphores
>>>>>
>>>>>  glib deprecated g_{mutex|cond}_new calls since version 3.32. Replace
>>>>>  with the updated g_{mutex|cond}_init calls.
>>>>> @@ -12,10 +12,11 @@ Upstream-Status: Pending
>>>>>
>>>>>  Signed-off-by: Jeremy Stashluk <jstashluk at dekaresearch.com>
>>>>>  ---
>>>>> - gst-libs/gst/gl/gstgldisplay.c      |   20 +++++++++++---------
>>>>> - gst-libs/gst/gl/gstglmixer.c        |    5 +++--
>>>>> - gst-libs/gst/gl/gstglwindow_fbES2.c |   15 +++++++++------
>>>>> - 3 files changed, 23 insertions(+), 17 deletions(-)
>>>>> + gst-libs/gst/gl/gstgldisplay.c       | 20 +++++++++++---------
>>>>> + gst-libs/gst/gl/gstglmixer.c         |  5 +++--
>>>>> + gst-libs/gst/gl/gstglwindow_fbES2.c  | 15 +++++++++------
>>>>> + gst-libs/gst/gl/gstglwindow_x11ES2.c | 10 ++++++----
>>>>> + 4 files changed, 29 insertions(+), 21 deletions(-)
>>>>>
>>>>>  diff --git a/gst-libs/gst/gl/gstgldisplay.c b/gst-libs/gst/gl/gstgldisplay.c
>>>>>  index a2589cb..1beac40 100644
>>>>> @@ -141,6 +142,40 @@ index 57c02e1..d73cada 100644
>>>>>     priv->running = TRUE;
>>>>>     priv->allow_extra_expose_events = TRUE;
>>>>>
>>>>> +diff --git a/gst-libs/gst/gl/gstglwindow_x11ES2.c b/gst-libs/gst/gl/gstglwindow_x11ES2.c
>>>>> +index 65afb50..814ce68 100644
>>>>> +--- a/gst-libs/gst/gl/gstglwindow_x11ES2.c
>>>>> ++++ b/gst-libs/gst/gl/gstglwindow_x11ES2.c
>>>>> +@@ -159,14 +159,14 @@ gst_gl_window_finalize (GObject * object)
>>>>> +   g_debug ("display sender closed\n");
>>>>> +
>>>>> +   if (priv->cond_send_message) {
>>>>> +-    g_cond_free (priv->cond_send_message);
>>>>> ++    g_cond_clear (priv->cond_send_message);
>>>>> +     priv->cond_send_message = NULL;
>>>>> +   }
>>>>> +
>>>>> +   g_mutex_unlock (priv->x_lock);
>>>>> +
>>>>> +   if (priv->x_lock) {
>>>>> +-    g_mutex_free (priv->x_lock);
>>>>> ++    g_mutex_clear (priv->x_lock);
>>>>> +     priv->x_lock = NULL;
>>>>> +   }
>>>>> +
>>>>> +@@ -329,8 +329,10 @@ gst_gl_window_new (gulong external_gl_context)
>>>>> +
>>>>> +   setlocale (LC_NUMERIC, "C");
>>>>> +
>>>>> +-  priv->x_lock = g_mutex_new ();
>>>>> +-  priv->cond_send_message = g_cond_new ();
>>>>> ++  priv->x_lock = g_new (GMutex, 1);
>>>>> ++  priv->cond_send_message = g_new (GCond, 1);
>>>>
>>>> There is no matching g_free() for the g_new(), so won't this leak
>>>> memory now? It probably should embed the locks in the structure,
>>>> rather than allocating them with g_new().
>>>
>>> According to GLib doc it does free the resouces
>>> (https://developer.gnome.org/glib/2.31/glib-Threads.html#g-mutex-clear)
>>
>> My understanding is that g_mutex_clear() frees the resources allocated
>> by g_mutex_init(), but doesn't free the memory allocated by g_new().
>>
>> The GLib doc talking about the deprecation suggests to statically
>> allocate or embed, not to switch to using g_new()
>> https://developer.gnome.org/glib/2.31/glib-Deprecated-Thread-APIs.html#g-mutex-free
>
> It clear states an OR (statically allocated or initialized with
> g_mutex_init). Checking g_mutex_init it says to use clear when not
> need anymore: https://developer.gnome.org/glib/2.31/glib-Threads.html#g-mutex-init

The init/clear pair is fine. But the new is missing a matching free.

If you look at the source for g_mutex_clear, you can see if doesn't
free the mutex, only the p field.
https://git.gnome.org/browse/glib/tree/glib/gthread-posix.c#n189

> I think it uses a reference counting to dealloc the memory. I am not
> saying this is the better alternative but the eaiser with small code
> change. I don't want to diverge too much from FSL code so the
> maintenance work will  be harder.

If you want a minimal change then you could add a
-DGLIB_DISABLE_DEPRECATION_WARNINGS flag instead.

>>>
>>>>> ++  g_mutex_init (priv->x_lock);
>>>>> ++  g_cond_init (priv->cond_send_message);
>>>>> +   priv->running = TRUE;
>>>>> +   priv->visible = FALSE;
>>>>> +   priv->parent = 0;
>>>>>  --
>>>>> -1.7.9.5
>>>>> +1.8.1
>>>>>
>>>>> diff --git a/recipes-multimedia/gstreamer/gst-plugins-gl_0.10.3.bbappend b/recipes-multimedia/gstreamer/gst-plugins-gl_0.10.3.bbappend
>>>>> index 65257d5..20fa0a6 100644
>>>>> --- a/recipes-multimedia/gstreamer/gst-plugins-gl_0.10.3.bbappend
>>>>> +++ b/recipes-multimedia/gstreamer/gst-plugins-gl_0.10.3.bbappend
>>>>> @@ -1,7 +1,7 @@
>>>>>  # gst-plugins-gl for imx6 Vivante
>>>>>
>>>>>  FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
>>>>> -PRINC := "${@int(PRINC) + 2}"
>>>>> +PRINC := "${@int(PRINC) + 3}"
>>>>>
>>>>>  DEPENDS_append_mx6 = " gst-fsl-plugin gpu-viv-bin-mx6q"
>>>>>
>>>>> --
>>>>> 1.8.1
>>>>>
>>>>> _______________________________________________
>>>>> meta-freescale mailing list
>>>>> meta-freescale at yoctoproject.org
>>>>> https://lists.yoctoproject.org/listinfo/meta-freescale
>>>
>>>
>>>
>>> --
>>> Otavio Salvador                             O.S. Systems
>>> E-mail: otavio at ossystems.com.br  http://www.ossystems.com.br
>>> Mobile: +55 53 9981-7854              http://projetos.ossystems.com.br
>
>
>
> --
> Otavio Salvador                             O.S. Systems
> E-mail: otavio at ossystems.com.br  http://www.ossystems.com.br
> Mobile: +55 53 9981-7854              http://projetos.ossystems.com.br



More information about the meta-freescale mailing list