gboolean synced;
};
+typedef struct
+{
+ GstClockEntry entry;
+ GWeakRef clock;
+} GstClockEntryImpl;
+
+#define GST_CLOCK_ENTRY_CLOCK_WEAK_REF(entry) (&((GstClockEntryImpl *)(entry))->clock)
+
/* seqlocks */
#define read_seqbegin(clock) \
g_atomic_int_get (&clock->priv->post_count);
{
GstClockEntry *entry;
- entry = g_slice_new (GstClockEntry);
+ entry = (GstClockEntry *) g_slice_new (GstClockEntryImpl);
/* FIXME: add tracer hook for struct allocations such as clock entries */
"created entry %p, time %" GST_TIME_FORMAT, entry, GST_TIME_ARGS (time));
entry->refcount = 1;
+#ifndef GST_REMOVE_DEPRECATED
#ifndef GST_DISABLE_DEPRECATED
entry->clock = clock;
+#else
+ entry->_clock = clock;
+#endif
#endif
- g_weak_ref_init (&entry->ABI.clock, clock);
+ g_weak_ref_init (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry), clock);
entry->type = type;
entry->time = time;
entry->interval = interval;
if (entry->destroy_data)
entry->destroy_data (entry->user_data);
- g_weak_ref_clear (&entry->ABI.clock);
+ g_weak_ref_clear (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
/* FIXME: add tracer hook for struct allocations such as clock entries */
- g_slice_free (GstClockEntry, id);
+ g_slice_free (GstClockEntryImpl, (GstClockEntryImpl *) id);
}
/**
entry = (GstClockEntry *) id;
requested = GST_CLOCK_ENTRY_TIME (entry);
- clock = g_weak_ref_get (&entry->ABI.clock);
+ clock = g_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
if (G_UNLIKELY (clock == NULL))
goto invalid_entry;
entry = (GstClockEntry *) id;
requested = GST_CLOCK_ENTRY_TIME (entry);
- clock = g_weak_ref_get (&entry->ABI.clock);
+ clock = g_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
if (G_UNLIKELY (clock == NULL))
goto invalid_entry;
g_return_if_fail (id != NULL);
entry = (GstClockEntry *) id;
- clock = g_weak_ref_get (&entry->ABI.clock);
+ clock = g_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
if (G_UNLIKELY (clock == NULL))
goto invalid_entry;
* underlying clock has been freed. Unref after usage.
*
* MT safe.
+ *
+ * Since: 1.16
*/
GstClock *
gst_clock_id_get_clock (GstClockID id)
g_return_val_if_fail (id != NULL, NULL);
entry = (GstClockEntry *) id;
- return g_weak_ref_get (&entry->ABI.clock);
+ return g_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
}
/**
* gst_clock_id_uses_clock:
* @id: a #GstClockID to check
* @clock: a #GstClock to compare against
- *
+ *
* This function returns whether @id uses @clock as the underlying clock.
* @clock can be NULL, in which case the return value indicates whether
* the underlying clock has been freed. If this is the case, the @id is
* Returns: whether the clock @id uses the same underlying #GstClock @clock.
*
* MT safe.
+ *
+ * Since: 1.16
*/
gboolean
gst_clock_id_uses_clock (GstClockID id, GstClock * clock)
gboolean ret = FALSE;
g_return_val_if_fail (id != NULL, FALSE);
+ g_return_val_if_fail (clock != NULL, FALSE);
entry = (GstClockEntry *) id;
- entry_clock = g_weak_ref_get (&entry->ABI.clock);
+ entry_clock = g_weak_ref_get (GST_CLOCK_ENTRY_CLOCK_WEAK_REF (entry));
if (entry_clock == clock)
ret = TRUE;