valve: Don't drop non-serialized queries when the valve is dropping
authorSebastian Dröge <sebastian@centricular.com>
Thu, 19 Mar 2015 12:51:38 +0000 (13:51 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Fri, 20 Mar 2015 08:32:34 +0000 (09:32 +0100)
Otherwise we end up dropping e.g. CAPS queries, and then upstream just
negotiates to whatever format it wants to. Once the valve is not-dropping
anymore this can easily result in negotiation failing completely.

https://bugzilla.gnome.org/show_bug.cgi?id=746448

plugins/elements/gstvalve.c

index 6a37353..e4ef0a2 100644 (file)
@@ -253,7 +253,7 @@ gst_valve_query (GstPad * pad, GstObject * parent, GstQuery * query)
 {
   GstValve *valve = GST_VALVE (parent);
 
-  if (g_atomic_int_get (&valve->drop))
+  if (GST_QUERY_IS_SERIALIZED (query) && g_atomic_int_get (&valve->drop))
     return FALSE;
 
   return gst_pad_query_default (pad, parent, query);