[arch-commits] Commit in gstreamer0.10/trunk (PKGBUILD bgo555631.patch)
Jan de Groot
jgc at archlinux.org
Sun Nov 9 14:50:38 UTC 2008
Date: Sunday, November 9, 2008 @ 09:50:37
Author: jgc
Revision: 18832
upgpkg: gstreamer0.10 0.10.21-2
Fix http://bugs.gnome.org/555631
Added:
gstreamer0.10/trunk/bgo555631.patch
Modified:
gstreamer0.10/trunk/PKGBUILD
-----------------+
PKGBUILD | 9 +++--
bgo555631.patch | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 94 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2008-11-09 14:15:31 UTC (rev 18831)
+++ PKGBUILD 2008-11-09 14:50:37 UTC (rev 18832)
@@ -3,7 +3,7 @@
pkgname=gstreamer0.10
pkgver=0.10.21
-pkgrel=1
+pkgrel=2
pkgdesc="GStreamer Multimedia Framework"
arch=(i686 x86_64)
license=('LGPL')
@@ -11,11 +11,14 @@
depends=('libxml2>=2.6.32' 'glib2>=2.18.1')
makedepends=('perlxml' 'pkgconfig' 'gtk-doc')
options=('!libtool')
-source=(${url}/src/gstreamer/gstreamer-${pkgver}.tar.bz2)
-md5sums=('7bad90af3fd81a1535363cf85359125c')
+source=(${url}/src/gstreamer/gstreamer-${pkgver}.tar.bz2
+ bgo555631.patch)
+md5sums=('7bad90af3fd81a1535363cf85359125c'
+ '71eb301845184638e6556dacd1ca7d55')
build() {
cd "${srcdir}/gstreamer-${pkgver}"
+ patch -Np0 -i "${srcdir}/bgo555631.patch" || return 1
./configure --prefix=/usr \
--sysconfdir=/etc --localstatedir=/var \
--disable-docs-build || return 1
Added: bgo555631.patch
===================================================================
--- bgo555631.patch (rev 0)
+++ bgo555631.patch 2008-11-09 14:50:37 UTC (rev 18832)
@@ -0,0 +1,88 @@
+--- libs/gst/base/gstbasetransform.c 2008/10/20 13:29:06 1.126
++++ 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);
+ }
More information about the arch-commits
mailing list