*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
/**
/* list of pending URI to process (current excluded) */
GList *pending_uris;
- GMutex *lock;
+ GMutex lock;
/* TRUE if processing a URI */
gboolean processing;
gulong bus_cb_id;
};
-#define DISCO_LOCK(dc) g_mutex_lock (dc->priv->lock);
-#define DISCO_UNLOCK(dc) g_mutex_unlock (dc->priv->lock);
+#define DISCO_LOCK(dc) g_mutex_lock (&dc->priv->lock);
+#define DISCO_UNLOCK(dc) g_mutex_unlock (&dc->priv->lock);
static void
_do_init (void)
GParamSpec * pspec, GstDiscoverer * dc);
static void gst_discoverer_dispose (GObject * dc);
+static void gst_discoverer_finalize (GObject * dc);
static void gst_discoverer_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec);
static void gst_discoverer_get_property (GObject * object, guint prop_id,
GObjectClass *gobject_class = (GObjectClass *) klass;
gobject_class->dispose = gst_discoverer_dispose;
+ gobject_class->finalize = gst_discoverer_finalize;
gobject_class->set_property = gst_discoverer_set_property;
gobject_class->get_property = gst_discoverer_get_property;
dc->priv->async = FALSE;
dc->priv->async_done = FALSE;
- dc->priv->lock = g_mutex_new ();
+ g_mutex_init (&dc->priv->lock);
dc->priv->pending_subtitle_pads = 0;
gst_discoverer_stop (dc);
- if (dc->priv->lock) {
- g_mutex_free (dc->priv->lock);
- dc->priv->lock = NULL;
- }
-
if (dc->priv->seeking_query) {
gst_query_unref (dc->priv->seeking_query);
dc->priv->seeking_query = NULL;
}
static void
+gst_discoverer_finalize (GObject * obj)
+{
+ GstDiscoverer *dc = (GstDiscoverer *) obj;
+
+ g_mutex_clear (&dc->priv->lock);
+
+ G_OBJECT_CLASS (gst_discoverer_parent_class)->finalize (obj);
+}
+
+static void
gst_discoverer_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
ps->tags);
tmp = gst_tag_list_merge (ps->tags, tl, GST_TAG_MERGE_APPEND);
if (ps->tags)
- gst_tag_list_free (ps->tags);
+ gst_tag_list_unref (ps->tags);
ps->tags = tmp;
GST_DEBUG_OBJECT (pad, "private stream %p new tags %" GST_PTR_FORMAT, ps,
tmp);
gst_bin_remove_many (dc->priv->pipeline, ps->sink, ps->queue, NULL);
if (ps->tags) {
- gst_tag_list_free (ps->tags);
+ gst_tag_list_unref (ps->tags);
}
if (ps->toc) {
gst_toc_unref (ps->toc);
}
gst_tag_list_insert (*taglist, new_tags, GST_TAG_MERGE_REPLACE);
- gst_tag_list_free (new_tags);
+ gst_tag_list_unref (new_tags);
}
/* Parses a set of caps and tags in st and populates a GstDiscovererStreamInfo
tmp =
gst_tag_list_merge (cont->parent.tags, (GstTagList *) tags,
GST_TAG_MERGE_APPEND);
- gst_tag_list_free (tags);
+ gst_tag_list_unref (tags);
if (cont->parent.tags)
- gst_tag_list_free (cont->parent.tags);
+ gst_tag_list_unref (cont->parent.tags);
cont->parent.tags = tmp;
GST_DEBUG ("Container info tags %" GST_PTR_FORMAT, tmp);
}
tmp =
gst_tag_list_merge (dc->priv->current_info->tags, tl,
GST_TAG_MERGE_APPEND);
- gst_tag_list_free (tl);
+ gst_tag_list_unref (tl);
if (dc->priv->current_info->tags)
- gst_tag_list_free (dc->priv->current_info->tags);
+ gst_tag_list_unref (dc->priv->current_info->tags);
dc->priv->current_info->tags = tmp;
GST_DEBUG_OBJECT (GST_MESSAGE_SRC (msg), "Current info %p, tags %"
GST_PTR_FORMAT, dc->priv->current_info, tmp);