summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2009-05-28 16:36:32 +0200
committerWim Taymans <wim.taymans@collabora.co.uk>2009-05-28 16:36:32 +0200
commit8f7c59936e36bba05e0aad1cbd8b871b8f1a071a (patch)
treec776f2f670108bdb97e3f6ab951024a414cef32f
parent1d05e05b3e60061602077b8f5b4492e59ddd6b07 (diff)
pad: add pad private structure
Add pad private structure and move the new chainlistfunc into the private struct. This avoids ABI breakage and allows us to expand in the future.
-rw-r--r--docs/gst/gstreamer-sections.txt2
-rw-r--r--gst/gstpad.c14
-rw-r--r--gst/gstpad.h7
3 files changed, 18 insertions, 5 deletions
diff --git a/docs/gst/gstreamer-sections.txt b/docs/gst/gstreamer-sections.txt
index 08e0a95d51..337e0c046f 100644
--- a/docs/gst/gstreamer-sections.txt
+++ b/docs/gst/gstreamer-sections.txt
@@ -1472,6 +1472,7 @@ GST_FLOW_IS_SUCCESS
<SUBSECTION Standard>
GstPadClass
+GstPadPrivate
GST_PAD
GST_IS_PAD
GST_PAD_CLASS
@@ -1526,7 +1527,6 @@ GST_PAD_ACTIVATEPULLFUNC
GST_PAD_ACTIVATEPUSHFUNC
GST_PAD_BUFFERALLOCFUNC
GST_PAD_CHAINFUNC
-GST_PAD_CHAINLISTFUNC
GST_PAD_CHECKGETRANGEFUNC
GST_PAD_EVENTFUNC
GST_PAD_FIXATECAPSFUNC
diff --git a/gst/gstpad.c b/gst/gstpad.c
index e4ca3d7722..f91b331432 100644
--- a/gst/gstpad.c
+++ b/gst/gstpad.c
@@ -95,6 +95,16 @@ enum
/* FILL ME */
};
+#define GST_PAD_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_PAD, GstPadPrivate))
+
+#define GST_PAD_CHAINLISTFUNC(pad) ((pad)->abidata.ABI.priv->chainlistfunc)
+
+struct _GstPadPrivate
+{
+ GstPadChainListFunction chainlistfunc;
+};
+
static void gst_pad_dispose (GObject * object);
static void gst_pad_finalize (GObject * object);
static void gst_pad_set_property (GObject * object, guint prop_id,
@@ -230,6 +240,8 @@ gst_pad_class_init (GstPadClass * klass)
gobject_class = G_OBJECT_CLASS (klass);
gstobject_class = GST_OBJECT_CLASS (klass);
+ g_type_class_add_private (klass, sizeof (GstPadPrivate));
+
parent_class = g_type_class_peek_parent (klass);
gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_pad_dispose);
@@ -314,6 +326,8 @@ gst_pad_class_init (GstPadClass * klass)
static void
gst_pad_init (GstPad * pad)
{
+ pad->abidata.ABI.priv = GST_PAD_GET_PRIVATE (pad);
+
GST_PAD_DIRECTION (pad) = GST_PAD_UNKNOWN;
GST_PAD_PEER (pad) = NULL;
diff --git a/gst/gstpad.h b/gst/gstpad.h
index 2b71939a00..fa53012473 100644
--- a/gst/gstpad.h
+++ b/gst/gstpad.h
@@ -48,6 +48,7 @@ G_BEGIN_DECLS
typedef struct _GstPad GstPad;
+typedef struct _GstPadPrivate GstPadPrivate;
typedef struct _GstPadClass GstPadClass;
/**
@@ -568,7 +569,6 @@ typedef struct _GstPadTemplate GstPadTemplate;
* @peer: the pad this pad is linked to
* @sched_private: private storage for the scheduler
* @chainfunc: function to chain buffer to pad
- * @chainlistfunc: function to chain buffer list to pad
* @checkgetrangefunc: function to check if pad can operate in pull mode
* @getrangefunc: function to get a range of data from a pad
* @eventfunc: function to send an event to a pad
@@ -651,7 +651,6 @@ struct _GstPad {
/* ABI added */
/* iterate internal links */
GstPadIterIntLinkFunction iterintlinkfunc;
- GstPadChainListFunction chainlistfunc;
/* free block_data */
GDestroyNotify block_destroy_data;
@@ -660,8 +659,9 @@ struct _GstPad {
union {
struct {
gboolean block_callback_called;
+ GstPadPrivate *priv;
} ABI;
- gpointer _gst_reserved[GST_PADDING - 3];
+ gpointer _gst_reserved[GST_PADDING - 2];
} abidata;
};
@@ -693,7 +693,6 @@ struct _GstPadClass {
#define GST_PAD_ACTIVATEPUSHFUNC(pad) (GST_PAD_CAST(pad)->activatepushfunc)
#define GST_PAD_ACTIVATEPULLFUNC(pad) (GST_PAD_CAST(pad)->activatepullfunc)
#define GST_PAD_CHAINFUNC(pad) (GST_PAD_CAST(pad)->chainfunc)
-#define GST_PAD_CHAINLISTFUNC(pad) (GST_PAD_CAST(pad)->chainlistfunc)
#define GST_PAD_CHECKGETRANGEFUNC(pad) (GST_PAD_CAST(pad)->checkgetrangefunc)
#define GST_PAD_GETRANGEFUNC(pad) (GST_PAD_CAST(pad)->getrangefunc)
#define GST_PAD_EVENTFUNC(pad) (GST_PAD_CAST(pad)->eventfunc)