sys/: Playbin keeps some ref to some frames. We might get a frame destroyed after changing state to
Original commit message from CVS: 2006-01-22 Julien MOUTTE <julien@moutte.net> * sys/ximage/ximagesink.c: (gst_ximagesink_ximage_destroy): * sys/xvimage/xvimagesink.c: (gst_xvimage_buffer_destroy), (gst_xvimagesink_buffer_alloc): Playbin keeps some ref to some frames. We might get a frame destroyed after changing state to NULL, adding a safety check on xcontext.
This commit is contained in:
parent
4757506720
commit
b4c1c1c61c
@ -1,3 +1,11 @@
|
|||||||
|
2006-01-22 Julien MOUTTE <julien@moutte.net>
|
||||||
|
|
||||||
|
* sys/ximage/ximagesink.c: (gst_ximagesink_ximage_destroy):
|
||||||
|
* sys/xvimage/xvimagesink.c: (gst_xvimage_buffer_destroy),
|
||||||
|
(gst_xvimagesink_buffer_alloc): Playbin keeps some ref to some
|
||||||
|
frames. We might get a frame destroyed after changing state to
|
||||||
|
NULL, adding a safety check on xcontext.
|
||||||
|
|
||||||
2006-01-22 Tim-Philipp Müller <tim at centricular dot net>
|
2006-01-22 Tim-Philipp Müller <tim at centricular dot net>
|
||||||
|
|
||||||
* gst-libs/gst/interfaces/xoverlay.c:
|
* gst-libs/gst/interfaces/xoverlay.c:
|
||||||
|
@ -485,6 +485,11 @@ gst_ximagesink_ximage_destroy (GstXImageSink * ximagesink,
|
|||||||
ximagesink->cur_image = NULL;
|
ximagesink->cur_image = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* We might have some buffers destroyed after changing state to NULL */
|
||||||
|
if (!ximagesink->xcontext) {
|
||||||
|
goto beach;
|
||||||
|
}
|
||||||
|
|
||||||
g_mutex_lock (ximagesink->x_lock);
|
g_mutex_lock (ximagesink->x_lock);
|
||||||
|
|
||||||
#ifdef HAVE_XSHM
|
#ifdef HAVE_XSHM
|
||||||
@ -511,6 +516,7 @@ gst_ximagesink_ximage_destroy (GstXImageSink * ximagesink,
|
|||||||
|
|
||||||
g_mutex_unlock (ximagesink->x_lock);
|
g_mutex_unlock (ximagesink->x_lock);
|
||||||
|
|
||||||
|
beach:
|
||||||
if (ximage->ximagesink) {
|
if (ximage->ximagesink) {
|
||||||
/* Release the ref to our sink */
|
/* Release the ref to our sink */
|
||||||
ximage->ximagesink = NULL;
|
ximage->ximagesink = NULL;
|
||||||
|
@ -223,6 +223,11 @@ gst_xvimage_buffer_destroy (GstXvImageBuffer * xvimage)
|
|||||||
if (xvimagesink->cur_image == xvimage)
|
if (xvimagesink->cur_image == xvimage)
|
||||||
xvimagesink->cur_image = NULL;
|
xvimagesink->cur_image = NULL;
|
||||||
|
|
||||||
|
/* We might have some buffers destroyed after changing state to NULL */
|
||||||
|
if (xvimagesink->xcontext) {
|
||||||
|
goto beach;
|
||||||
|
}
|
||||||
|
|
||||||
g_mutex_lock (xvimagesink->x_lock);
|
g_mutex_lock (xvimagesink->x_lock);
|
||||||
|
|
||||||
#ifdef HAVE_XSHM
|
#ifdef HAVE_XSHM
|
||||||
@ -251,6 +256,7 @@ gst_xvimage_buffer_destroy (GstXvImageBuffer * xvimage)
|
|||||||
|
|
||||||
g_mutex_unlock (xvimagesink->x_lock);
|
g_mutex_unlock (xvimagesink->x_lock);
|
||||||
|
|
||||||
|
beach:
|
||||||
xvimage->xvimagesink = NULL;
|
xvimage->xvimagesink = NULL;
|
||||||
gst_object_unref (xvimagesink);
|
gst_object_unref (xvimagesink);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user