diff options
author | Peter Alfredsen <loki_val@gentoo.org> | 2009-01-09 12:54:19 +0000 |
---|---|---|
committer | Peter Alfredsen <loki_val@gentoo.org> | 2009-01-09 12:54:19 +0000 |
commit | 308c8b5ff3f67a7ad387daebb1e9e1bff9913206 (patch) | |
tree | 1169a485e1b806dfd907bb17fb0ef982e9f84335 /media-libs/gstreamer | |
parent | version bump (diff) | |
download | gentoo-2-308c8b5ff3f67a7ad387daebb1e9e1bff9913206.tar.gz gentoo-2-308c8b5ff3f67a7ad387daebb1e9e1bff9913206.tar.bz2 gentoo-2-308c8b5ff3f67a7ad387daebb1e9e1bff9913206.zip |
Fix bug 250704, upstream bug 555631, Banshee crashing or doing a tail-spin with gstreamer. Bump masked version to -r10, the new 'ordinary' version is -r3.
(Portage version: 2.2_rc20/cvs/Linux 2.6.28 x86_64)
Diffstat (limited to 'media-libs/gstreamer')
-rw-r--r-- | media-libs/gstreamer/ChangeLog | 15 | ||||
-rw-r--r-- | media-libs/gstreamer/files/gstreamer-0.10.21-b.g.o-555631.patch | 100 | ||||
-rw-r--r-- | media-libs/gstreamer/gstreamer-0.10.21-r10.ebuild (renamed from media-libs/gstreamer/gstreamer-0.10.21-r2.ebuild) | 7 | ||||
-rw-r--r-- | media-libs/gstreamer/gstreamer-0.10.21-r3.ebuild (renamed from media-libs/gstreamer/gstreamer-0.10.21-r1.ebuild) | 7 |
4 files changed, 121 insertions, 8 deletions
diff --git a/media-libs/gstreamer/ChangeLog b/media-libs/gstreamer/ChangeLog index c1c8a9980e8b..319397a376b2 100644 --- a/media-libs/gstreamer/ChangeLog +++ b/media-libs/gstreamer/ChangeLog @@ -1,6 +1,17 @@ # ChangeLog for media-libs/gstreamer -# Copyright 2002-2008 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/media-libs/gstreamer/ChangeLog,v 1.215 2008/12/24 13:39:17 ssuominen Exp $ +# Copyright 2002-2009 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/media-libs/gstreamer/ChangeLog,v 1.216 2009/01/09 12:54:19 loki_val Exp $ + +*gstreamer-0.10.21-r10 (09 Jan 2009) +*gstreamer-0.10.21-r3 (09 Jan 2009) + + 09 Jan 2009; Peter Alfredsen <loki_val@gentoo.org> + +files/gstreamer-0.10.21-b.g.o-555631.patch, -gstreamer-0.10.21-r1.ebuild, + -gstreamer-0.10.21-r2.ebuild, +gstreamer-0.10.21-r3.ebuild, + +gstreamer-0.10.21-r10.ebuild: + Fix bug 250704, upstream bug 555631, Banshee crashing or doing a tail-spin + with gstreamer. Bump masked version to -r10, the new 'ordinary' version is + -r3. *gstreamer-0.10.21-r2 (24 Dec 2008) diff --git a/media-libs/gstreamer/files/gstreamer-0.10.21-b.g.o-555631.patch b/media-libs/gstreamer/files/gstreamer-0.10.21-b.g.o-555631.patch new file mode 100644 index 000000000000..922d8beb3cfa --- /dev/null +++ b/media-libs/gstreamer/files/gstreamer-0.10.21-b.g.o-555631.patch @@ -0,0 +1,100 @@ + +* libs/gst/base/gstbasetransform.c: +(gst_base_transform_prepare_output_buffer), +(gst_base_transform_buffer_alloc), (gst_base_transform_suggest): +Protect sink_alloc caps with the sinkpad lock to avoid nasty caps +refcount problems as seen in banshee and maybe also in farsight2. +Remove atomic int now that we need to take the lock anyways. + +http://bugzilla.gnome.org/show_bug.cgi?id=555631 +http://bugs.gentoo.org/show_bug.cgi?id=250704 +http://webcvs.freedesktop.org/gstreamer/gstreamer/libs/gst/base/gstbasetransform.c?r1=1.126&r2=1.127 + +--- gstreamer/libs/gst/base/gstbasetransform.c 2008/10/20 13:29:06 1.126 ++++ gstreamer/libs/gst/base/gstbasetransform.c 2008/10/21 16:30:41 1.127 +@@ -251,7 +251,7 @@ + /* upstream caps and size suggestions */ + GstCaps *sink_suggest; + guint size_suggest; +- gint suggest_pending; ++ gboolean suggest_pending; + + gboolean reconfigure; + }; +@@ -1224,7 +1224,7 @@ + gst_caps_unref (priv->sink_suggest); + priv->sink_suggest = gst_caps_ref (othercaps); + priv->size_suggest = size_suggest; +- g_atomic_int_set (&trans->priv->suggest_pending, 1); ++ trans->priv->suggest_pending = TRUE; + GST_OBJECT_UNLOCK (trans->sinkpad); + } + gst_caps_unref (othercaps); +@@ -1366,7 +1366,7 @@ + GstBaseTransform *trans; + GstBaseTransformPrivate *priv; + GstFlowReturn res; +- gboolean proxy, suggest; ++ gboolean proxy, suggest, same_caps; + GstCaps *sink_suggest; + guint size_suggest; + +@@ -1384,8 +1384,12 @@ + + /* we remember our previous alloc request to quickly see if we can proxy or + * not. We skip this check if we have a pending suggestion. */ +- if (g_atomic_int_get (&priv->suggest_pending) == 0 && caps && +- gst_caps_is_equal (priv->sink_alloc, caps)) { ++ GST_OBJECT_LOCK (pad); ++ same_caps = !priv->suggest_pending && caps && ++ gst_caps_is_equal (priv->sink_alloc, caps); ++ GST_OBJECT_UNLOCK (pad); ++ ++ if (same_caps) { + /* we have seen this before, see below if we need to proxy */ + GST_DEBUG_OBJECT (trans, "have old caps"); + sink_suggest = caps; +@@ -1414,7 +1418,7 @@ + size_suggest = size; + suggest = FALSE; + } +- g_atomic_int_set (&priv->suggest_pending, 0); ++ priv->suggest_pending = FALSE; + GST_OBJECT_UNLOCK (pad); + + /* check if we actually handle this format on the sinkpad */ +@@ -1462,7 +1466,10 @@ + } + } + /* remember the new caps */ ++ GST_OBJECT_LOCK (pad); + gst_caps_replace (&priv->sink_alloc, sink_suggest); ++ GST_OBJECT_UNLOCK (pad); ++ + proxy = priv->proxy_alloc; + GST_DEBUG_OBJECT (trans, "doing default alloc, proxy %d", proxy); + +@@ -1487,11 +1494,13 @@ + if (!gst_caps_is_equal (newcaps, caps)) { + GST_DEBUG_OBJECT (trans, "caps are new"); + /* we have new caps, see if we can proxy downstream */ +- if (gst_pad_peer_accept_caps (trans->sinkpad, newcaps)) { ++ if (gst_pad_peer_accept_caps (pad, newcaps)) { + /* peer accepts the caps, return a buffer in this format */ + GST_DEBUG_OBJECT (trans, "peer accepted new caps"); + /* remember the format */ ++ GST_OBJECT_LOCK (pad); + gst_caps_replace (&priv->sink_alloc, newcaps); ++ GST_OBJECT_UNLOCK (pad); + } else { + GST_DEBUG_OBJECT (trans, "peer did not accept new caps"); + /* peer does not accept the caps, free the buffer we received and +@@ -2306,7 +2315,7 @@ + caps = gst_caps_copy (caps); + trans->priv->sink_suggest = caps; + trans->priv->size_suggest = size; +- g_atomic_int_set (&trans->priv->suggest_pending, 1); ++ trans->priv->suggest_pending = TRUE; + GST_DEBUG_OBJECT (trans, "new suggest %" GST_PTR_FORMAT, caps); + GST_OBJECT_UNLOCK (trans->sinkpad); + } diff --git a/media-libs/gstreamer/gstreamer-0.10.21-r2.ebuild b/media-libs/gstreamer/gstreamer-0.10.21-r10.ebuild index 754a34e24385..e8b6723a4895 100644 --- a/media-libs/gstreamer/gstreamer-0.10.21-r2.ebuild +++ b/media-libs/gstreamer/gstreamer-0.10.21-r10.ebuild @@ -1,6 +1,6 @@ -# Copyright 1999-2008 Gentoo Foundation +# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/media-libs/gstreamer/gstreamer-0.10.21-r2.ebuild,v 1.3 2008/12/31 03:30:47 mr_bones_ Exp $ +# $Header: /var/cvsroot/gentoo-x86/media-libs/gstreamer/gstreamer-0.10.21-r10.ebuild,v 1.1 2009/01/09 12:54:19 loki_val Exp $ EAPI=2 @@ -30,7 +30,8 @@ src_prepare() { # Needed for sane .so versioning on Gentoo/FreeBSD #elibtoolize epatch "${FILESDIR}"/${P}-gtkdoc.patch \ - "${FILESDIR}"/${P}-bison241.patch + "${FILESDIR}"/${P}-bison241.patch \ + "${FILESDIR}"/${P}-b.g.o-555631.patch AT_M4DIR="common/m4" eautoreconf } diff --git a/media-libs/gstreamer/gstreamer-0.10.21-r1.ebuild b/media-libs/gstreamer/gstreamer-0.10.21-r3.ebuild index a5657c7226ec..7908f18dce18 100644 --- a/media-libs/gstreamer/gstreamer-0.10.21-r1.ebuild +++ b/media-libs/gstreamer/gstreamer-0.10.21-r3.ebuild @@ -1,6 +1,6 @@ -# Copyright 1999-2008 Gentoo Foundation +# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/media-libs/gstreamer/gstreamer-0.10.21-r1.ebuild,v 1.3 2008/12/31 03:30:47 mr_bones_ Exp $ +# $Header: /var/cvsroot/gentoo-x86/media-libs/gstreamer/gstreamer-0.10.21-r3.ebuild,v 1.1 2009/01/09 12:54:19 loki_val Exp $ EAPI=2 @@ -30,7 +30,8 @@ src_prepare() { # Needed for sane .so versioning on Gentoo/FreeBSD #elibtoolize epatch "${FILESDIR}"/${P}-gtkdoc.patch \ - "${FILESDIR}"/${P}-bison241.patch + "${FILESDIR}"/${P}-bison241.patch \ + "${FILESDIR}"/${P}-b.g.o-555631.patch AT_M4DIR="common/m4" eautoreconf } |