gst/flv/gstflvdemux.c: Fix locking and refcounting on the index.

Original commit message from CVS:
* gst/flv/gstflvdemux.c: (gst_flv_demux_set_index),
(gst_flv_demux_get_index):
Fix locking and refcounting on the index.
This commit is contained in:
Wim Taymans 2007-08-14 14:56:20 +00:00
parent 170c01e6c1
commit a2dbc1182c
2 changed files with 18 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2007-08-14 Wim Taymans <wim.taymans@gmail.com>
* gst/flv/gstflvdemux.c: (gst_flv_demux_set_index),
(gst_flv_demux_get_index):
Fix locking and refcounting on the index.
2007-08-14 Julien MOUTTE <julien@moutte.net> 2007-08-14 Julien MOUTTE <julien@moutte.net>
* gst/flv/gstflvdemux.c: (gst_flv_demux_cleanup), * gst/flv/gstflvdemux.c: (gst_flv_demux_cleanup),

View file

@ -911,7 +911,11 @@ gst_flv_demux_set_index (GstElement * element, GstIndex * index)
{ {
GstFLVDemux *demux = GST_FLV_DEMUX (element); GstFLVDemux *demux = GST_FLV_DEMUX (element);
GST_OBJECT_LOCK (demux);
if (demux->index)
gst_object_unref (demux->index);
demux->index = gst_object_ref (index); demux->index = gst_object_ref (index);
GST_OBJECT_UNLOCK (demux);
gst_index_get_writer_id (index, GST_OBJECT (element), &demux->index_id); gst_index_get_writer_id (index, GST_OBJECT (element), &demux->index_id);
} }
@ -919,9 +923,16 @@ gst_flv_demux_set_index (GstElement * element, GstIndex * index)
static GstIndex * static GstIndex *
gst_flv_demux_get_index (GstElement * element) gst_flv_demux_get_index (GstElement * element)
{ {
GstIndex *result = NULL;
GstFLVDemux *demux = GST_FLV_DEMUX (element); GstFLVDemux *demux = GST_FLV_DEMUX (element);
return demux->index; GST_OBJECT_LOCK (demux);
if (demux->index)
result = gst_object_ref (demux->index);
GST_OBJECT_UNLOCK (demux);
return result;
} }
static void static void