summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2009-05-13 21:35:23 +0200
committerWim Taymans <wim@metal.(none)>2009-05-13 21:35:23 +0200
commitbb013081a4f8291ef5c81fca2d303206323cf359 (patch)
tree81edde14bcc8aa7f5224b39599bbd06173fe8fbc
parent763a6f676171f890c6d28117648f98962846e90b (diff)
adapter: move new member to private struct
Move the new members to a private struct because we don't have enough padding anymore on 32-bits platforms.
-rw-r--r--docs/libs/gstreamer-libs-sections.txt1
-rw-r--r--libs/gst/base/gstadapter.c32
-rw-r--r--libs/gst/base/gstadapter.h13
3 files changed, 29 insertions, 17 deletions
diff --git a/docs/libs/gstreamer-libs-sections.txt b/docs/libs/gstreamer-libs-sections.txt
index 7c816946d9..c996448d46 100644
--- a/docs/libs/gstreamer-libs-sections.txt
+++ b/docs/libs/gstreamer-libs-sections.txt
@@ -208,6 +208,7 @@ gst_adapter_take_buffer
gst_adapter_prev_timestamp
<SUBSECTION Standard>
GstAdapterClass
+GstAdapterPrivate
GST_ADAPTER
GST_IS_ADAPTER
GST_TYPE_ADAPTER
diff --git a/libs/gst/base/gstadapter.c b/libs/gst/base/gstadapter.c
index 6298f97618..047bae3e53 100644
--- a/libs/gst/base/gstadapter.c
+++ b/libs/gst/base/gstadapter.c
@@ -118,6 +118,15 @@
GST_DEBUG_CATEGORY_STATIC (gst_adapter_debug);
#define GST_CAT_DEFAULT gst_adapter_debug
+#define GST_ADAPTER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_ADAPTER, GstAdapterPrivate))
+
+struct _GstAdapterPrivate
+{
+ GstClockTime timestamp;
+ guint64 distance;
+};
+
#define _do_init(thing) \
GST_DEBUG_CATEGORY_INIT (gst_adapter_debug, "adapter", 0, "object to splice and merge buffers to desired size")
GST_BOILERPLATE_FULL (GstAdapter, gst_adapter, GObject, G_TYPE_OBJECT,
@@ -137,6 +146,8 @@ gst_adapter_class_init (GstAdapterClass * klass)
{
GObjectClass *object = G_OBJECT_CLASS (klass);
+ g_type_class_add_private (klass, sizeof (GstAdapterPrivate));
+
object->dispose = gst_adapter_dispose;
object->finalize = gst_adapter_finalize;
}
@@ -144,10 +155,11 @@ gst_adapter_class_init (GstAdapterClass * klass)
static void
gst_adapter_init (GstAdapter * adapter, GstAdapterClass * g_class)
{
+ adapter->priv = GST_ADAPTER_GET_PRIVATE (adapter);
adapter->assembled_data = g_malloc (DEFAULT_SIZE);
adapter->assembled_size = DEFAULT_SIZE;
- adapter->abidata.ABI.timestamp = GST_CLOCK_TIME_NONE;
- adapter->abidata.ABI.distance = 0;
+ adapter->priv->timestamp = GST_CLOCK_TIME_NONE;
+ adapter->priv->distance = 0;
}
static void
@@ -201,8 +213,8 @@ gst_adapter_clear (GstAdapter * adapter)
adapter->size = 0;
adapter->skip = 0;
adapter->assembled_len = 0;
- adapter->abidata.ABI.timestamp = GST_CLOCK_TIME_NONE;
- adapter->abidata.ABI.distance = 0;
+ adapter->priv->timestamp = GST_CLOCK_TIME_NONE;
+ adapter->priv->distance = 0;
}
static inline void
@@ -214,8 +226,8 @@ update_timestamp (GstAdapter * adapter, GstBuffer * buf)
if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
GST_LOG_OBJECT (adapter, "new timestamp %" GST_TIME_FORMAT,
GST_TIME_ARGS (timestamp));
- adapter->abidata.ABI.timestamp = timestamp;
- adapter->abidata.ABI.distance = 0;
+ adapter->priv->timestamp = timestamp;
+ adapter->priv->distance = 0;
}
}
@@ -482,7 +494,7 @@ gst_adapter_flush (GstAdapter * adapter, guint flush)
GST_LOG_OBJECT (adapter, "flushing out head buffer");
flush -= size;
adapter->skip = 0;
- adapter->abidata.ABI.distance += size;
+ adapter->priv->distance += size;
adapter->buflist =
g_slist_delete_link (adapter->buflist, adapter->buflist);
@@ -496,7 +508,7 @@ gst_adapter_flush (GstAdapter * adapter, guint flush)
gst_buffer_unref (cur);
} else {
adapter->skip += flush;
- adapter->abidata.ABI.distance += flush;
+ adapter->priv->distance += flush;
break;
}
}
@@ -702,7 +714,7 @@ gst_adapter_prev_timestamp (GstAdapter * adapter, guint64 * distance)
g_return_val_if_fail (GST_IS_ADAPTER (adapter), GST_CLOCK_TIME_NONE);
if (distance)
- *distance = adapter->abidata.ABI.distance;
+ *distance = adapter->priv->distance;
- return adapter->abidata.ABI.timestamp;
+ return adapter->priv->timestamp;
}
diff --git a/libs/gst/base/gstadapter.h b/libs/gst/base/gstadapter.h
index 34fa395da4..af1c097dfc 100644
--- a/libs/gst/base/gstadapter.h
+++ b/libs/gst/base/gstadapter.h
@@ -40,6 +40,7 @@ G_BEGIN_DECLS
typedef struct _GstAdapter GstAdapter;
typedef struct _GstAdapterClass GstAdapterClass;
+typedef struct _GstAdapterPrivate GstAdapterPrivate;
/**
* GstAdapter:
@@ -60,16 +61,14 @@ struct _GstAdapter {
guint assembled_size;
guint assembled_len;
+ /* ABI added */
/* Remember where the end of our buffer list is to
* speed up the push */
GSList *buflist_end;
- union {
- struct {
- GstClockTime timestamp;
- guint64 distance;
- } ABI;
- gpointer _gst_reserved[GST_PADDING - 1];
- } abidata;
+
+ GstAdapterPrivate *priv;
+
+ gpointer _gst_reserved[GST_PADDING - 2];
};
struct _GstAdapterClass {