pad: add PROXY_SCHEDULING flag
authorWim Taymans <wim.taymans@collabora.co.uk>
Wed, 18 Jul 2012 15:30:30 +0000 (17:30 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Wed, 18 Jul 2012 15:49:32 +0000 (17:49 +0200)
Add a flag that makes the default query handler forward the scheduling query.

gst/gstpad.c
gst/gstpad.h

index 3d3fcf4..21529f1 100644 (file)
@@ -2881,7 +2881,7 @@ gst_pad_query_default (GstPad * pad, GstObject * parent, GstQuery * query)
 
   switch (GST_QUERY_TYPE (query)) {
     case GST_QUERY_SCHEDULING:
-      forward = FALSE;
+      forward = GST_PAD_IS_PROXY_SCHEDULING (pad);
       break;
     case GST_QUERY_ALLOCATION:
       forward = GST_PAD_IS_PROXY_ALLOCATION (pad);
index 915d7c2..9bf812a 100644 (file)
@@ -601,6 +601,9 @@ typedef gboolean  (*GstPadStickyEventsForeachFunction) (GstPad *pad, GstEvent **
  * @GST_PAD_FLAG_PROXY_ALLOCATION: the default query handler will forward
  *                      allocation queries to the internally linked pads
  *                      instead of discarding them.
+ * @GST_PAD_FLAG_PROXY_SCHEDULING: the default query handler will forward
+ *                      scheduling queries to the internally linked pads
+ *                      instead of discarding them.
  * @GST_PAD_FLAG_LAST: offset to define more flags
  *
  * Pad state flags
@@ -616,6 +619,7 @@ typedef enum {
   GST_PAD_FLAG_FIXED_CAPS       = (GST_OBJECT_FLAG_LAST << 7),
   GST_PAD_FLAG_PROXY_CAPS       = (GST_OBJECT_FLAG_LAST << 8),
   GST_PAD_FLAG_PROXY_ALLOCATION = (GST_OBJECT_FLAG_LAST << 9),
+  GST_PAD_FLAG_PROXY_SCHEDULING = (GST_OBJECT_FLAG_LAST << 10),
   /* padding */
   GST_PAD_FLAG_LAST        = (GST_OBJECT_FLAG_LAST << 16)
 } GstPadFlags;
@@ -765,6 +769,10 @@ struct _GstPadClass {
 #define GST_PAD_SET_PROXY_ALLOCATION(pad)   (GST_OBJECT_FLAG_SET (pad, GST_PAD_FLAG_PROXY_ALLOCATION))
 #define GST_PAD_UNSET_PROXY_ALLOCATION(pad) (GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_PROXY_ALLOCATION))
 
+#define GST_PAD_IS_PROXY_SCHEDULING(pad)    (GST_OBJECT_FLAG_IS_SET (pad, GST_PAD_FLAG_PROXY_SCHEDULING))
+#define GST_PAD_SET_PROXY_SCHEDULING(pad)   (GST_OBJECT_FLAG_SET (pad, GST_PAD_FLAG_PROXY_SCHEDULING))
+#define GST_PAD_UNSET_PROXY_SCHEDULING(pad) (GST_OBJECT_FLAG_UNSET (pad, GST_PAD_FLAG_PROXY_SCHEDULING))
+
 /**
  * GST_PAD_GET_STREAM_LOCK:
  * @pad: a #GstPad