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

Philip Craig phil at blackmoth.com.au
Thu Apr 4 20:21:18 PDT 2013


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

>
>>> ++  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



More information about the meta-freescale mailing list