[oe-commits] ghost : gst-plugins-base_0.10.24.bb: replace own hotfix with fix from gstreamer team

git version control git at git.openembedded.org
Thu Sep 10 15:34:03 UTC 2009


Module: openembedded.git
Branch: org.openembedded.dreambox
Commit: ef8b83ccdf5f1b54b1a8c514cea97ea690216a29
URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=ef8b83ccdf5f1b54b1a8c514cea97ea690216a29

Author: ghost <andreas.monzner at multimedia-labs.de>
Date:   Mon Aug 24 15:48:24 2009 +0200

gst-plugins-base_0.10.24.bb: replace own hotfix with fix from gstreamer team

---

 .../files/playsink_fix_double_refcount.patch       |   78 ++++++++++++++++----
 packages/gstreamer/gst-plugins-base_0.10.24.bb     |    2 +-
 2 files changed, 64 insertions(+), 16 deletions(-)

diff --git a/packages/gstreamer/files/playsink_fix_double_refcount.patch b/packages/gstreamer/files/playsink_fix_double_refcount.patch
index 5221b9f..ac26b50 100644
--- a/packages/gstreamer/files/playsink_fix_double_refcount.patch
+++ b/packages/gstreamer/files/playsink_fix_double_refcount.patch
@@ -1,16 +1,64 @@
---- gst-plugins-base-0.10.24.org/gst/playback/gstplaysink.c	2009-07-14 12:03:45.000000000 +0200
-+++ gst-plugins-base-0.10.24/gst/playback/gstplaysink.c	2009-08-24 14:42:32.000000000 +0200
-@@ -418,11 +418,11 @@
-   }
-   if (chainp) {
-     /* we have an active chain with a sink, get the sink */
--    result = gst_object_ref (chainp);
-+    result = chainp;
-   }
-   /* nothing found, return last configured sink */
-   if (result == NULL && elem)
--    result = gst_object_ref (elem);
-+    result = elem;
-   GST_PLAY_SINK_UNLOCK (playsink);
+From c3ebeec5a54c6c00bf30f7196968a9369c3d8205 Mon Sep 17 00:00:00 2001
+From: Wim Taymans <wim.taymans at collabora.co.uk>
+Date: Mon, 24 Aug 2009 13:06:28 +0000
+Subject: playbin2: fix refcounting of _get_sink()
+
+g_value_set_object() increases the refcount of the sink, which is not needed
+because the object should already be refcounted. Make sure this is always the
+case and use g_value_take_object().
+
+Fixes: #592884
+---
+diff --git a/gst/playback/gstplaybin2.c b/gst/playback/gstplaybin2.c
+index 6fc8d2d..24071b5 100644
+--- a/gst/playback/gstplaybin2.c
++++ b/gst/playback/gstplaybin2.c
+@@ -1618,8 +1618,12 @@ gst_play_bin_get_current_sink (GstPlayBin * playbin, GstElement ** elem,
+       GST_PTR_FORMAT ", the originally set %s sink is %" GST_PTR_FORMAT,
+       dbg, sink, dbg, *elem);
  
-   return result;
+-  if (sink == NULL)
+-    sink = *elem;
++  if (sink == NULL) {
++    GST_PLAY_BIN_LOCK (playbin);
++    if ((sink = *elem))
++      gst_object_ref (sink);
++    GST_PLAY_BIN_UNLOCK (playbin);
++  }
+ 
+   return sink;
+ }
+@@ -1720,26 +1724,26 @@ gst_play_bin_get_property (GObject * object, guint prop_id, GValue * value,
+       GST_PLAY_BIN_UNLOCK (playbin);
+       break;
+     case PROP_VIDEO_SINK:
+-      g_value_set_object (value,
++      g_value_take_object (value,
+           gst_play_bin_get_current_sink (playbin, &playbin->video_sink,
+               "video", GST_PLAY_SINK_TYPE_VIDEO));
+       break;
+     case PROP_AUDIO_SINK:
+-      g_value_set_object (value,
++      g_value_take_object (value,
+           gst_play_bin_get_current_sink (playbin, &playbin->audio_sink,
+               "audio", GST_PLAY_SINK_TYPE_AUDIO));
+       break;
+     case PROP_VIS_PLUGIN:
+-      g_value_set_object (value,
++      g_value_take_object (value,
+           gst_play_sink_get_vis_plugin (playbin->playsink));
+       break;
+     case PROP_TEXT_SINK:
+-      g_value_set_object (value,
++      g_value_take_object (value,
+           gst_play_bin_get_current_sink (playbin, &playbin->text_sink,
+               "text", GST_PLAY_SINK_TYPE_TEXT));
+       break;
+     case PROP_SUBPIC_SINK:
+-      g_value_set_object (value,
++      g_value_take_object (value,
+           gst_play_bin_get_current_sink (playbin, &playbin->subpic_sink,
+               "subpicture", GST_PLAY_SINK_TYPE_SUBPIC));
+       break;
+--
+cgit v0.8.2
diff --git a/packages/gstreamer/gst-plugins-base_0.10.24.bb b/packages/gstreamer/gst-plugins-base_0.10.24.bb
index 4aa4f0f..b1f085e 100644
--- a/packages/gstreamer/gst-plugins-base_0.10.24.bb
+++ b/packages/gstreamer/gst-plugins-base_0.10.24.bb
@@ -3,7 +3,7 @@ PROVIDES_${PN} += "gst-plugins"
 RCONFLICTS_gst-plugins-base = "libgstapp-0.10-0"
 RREPLACES_gst-plugins-base = "libgstapp-0.10-0"
 EXTRA_OECONF += "--with-audioresample-format=int"
-PR = "r2"
+PR = "r3"
 SRC_URI += "file://gst-plugins_configure_skip_shave.patch;patch=1;pnum=0 \
 	file://playsink-textsink.diff;patch=1;pnum=1 \
 	file://playsink_fix_double_refcount.patch;patch=1;pnum=1"
\ No newline at end of file





More information about the Openembedded-commits mailing list