/* remove item */
priv_data->n_qdata--;
- if (index != priv_data->n_qdata) {
+ if (priv_data->n_qdata == 0) {
+ /* we don't shrink but free when everything is gone */
+ g_free (priv_data->qdata);
+ priv_data->qdata = NULL;
+ priv_data->n_qdata_len = 0;
+ } else if (index != priv_data->n_qdata) {
QDATA (priv_data, index) = QDATA (priv_data, priv_data->n_qdata);
}
}
}
/**
+ * gst_clear_mini_object: (skip)
+ * @object_ptr: a pointer to a #GstMiniObject reference
+ *
+ * Clears a reference to a #GstMiniObject.
+ *
+ * @object_ptr must not be %NULL.
+ *
+ * If the reference is %NULL then this function does nothing.
+ * Otherwise, the reference count of the object is decreased using
+ * gst_mini_object_unref() and the pointer is set to %NULL.
+ *
+ * A macro is also included that allows this function to be used without
+ * pointer casts.
+ *
+ * Since: 1.16
+ **/
+#undef gst_clear_mini_object
+void
+gst_clear_mini_object (GstMiniObject ** object_ptr)
+{
+ g_clear_pointer (object_ptr, gst_mini_object_unref);
+}
+
+/**
* gst_mini_object_replace:
* @olddata: (inout) (transfer full) (nullable): pointer to a pointer to a
* mini-object to be replaced