diff options
author | Julien Moutte <julien@moutte.net> | 2006-07-31 16:50:27 +0000 |
---|---|---|
committer | Julien Moutte <julien@moutte.net> | 2006-07-31 16:50:27 +0000 |
commit | f91baadfcd578246f61d362e199394f7d74019a8 (patch) | |
tree | 807e76561da2bf1d8b4fdc008e428b3f7cc4f80a | |
parent | f186c1b29c20afc62aed64cfea3d8c3b121440a2 (diff) | |
download | gst-plugins-bad-f91baadfcd578246f61d362e199394f7d74019a8.tar.gz gst-plugins-bad-f91baadfcd578246f61d362e199394f7d74019a8.tar.bz2 gst-plugins-bad-f91baadfcd578246f61d362e199394f7d74019a8.zip |
ext/directfb/dfbvideosink.c: Don't try allocating if we are not setup yet. Fail changing state if setup fails.
Original commit message from CVS:
2006-07-31 Julien MOUTTE <julien@moutte.net>
* ext/directfb/dfbvideosink.c: (gst_dfbvideosink_change_state),
(gst_dfbvideosink_buffer_alloc): Don't try allocating if we are
not
setup yet. Fail changing state if setup fails.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | ext/directfb/dfbvideosink.c | 12 |
2 files changed, 17 insertions, 1 deletions
@@ -1,3 +1,9 @@ +2006-07-31 Julien MOUTTE <julien@moutte.net> + + * ext/directfb/dfbvideosink.c: (gst_dfbvideosink_change_state), + (gst_dfbvideosink_buffer_alloc): Don't try allocating if we are not + setup yet. Fail changing state if setup fails. + 2006-07-31 Wim Taymans <wim@fluendo.com> * gst/gdp/gstgdpdepay.c: (gst_gdp_depay_init), diff --git a/ext/directfb/dfbvideosink.c b/ext/directfb/dfbvideosink.c index db51f7e9..8a56ecbe 100644 --- a/ext/directfb/dfbvideosink.c +++ b/ext/directfb/dfbvideosink.c @@ -1425,7 +1425,11 @@ gst_dfbvideosink_change_state (GstElement * element, GstStateChange transition) case GST_STATE_CHANGE_NULL_TO_READY: dfbvideosink->running = TRUE; if (!dfbvideosink->setup) { - gst_dfbvideosink_setup (dfbvideosink); + if (!gst_dfbvideosink_setup (dfbvideosink)) { + GST_DEBUG_OBJECT (dfbvideosink, "setup failed when changing state " + "from NULL to READY"); + return GST_STATE_CHANGE_FAILURE; + } } break; case GST_STATE_CHANGE_READY_TO_PAUSED: @@ -1697,6 +1701,12 @@ gst_dfbvideosink_buffer_alloc (GstBaseSink * bsink, guint64 offset, guint size, GST_DEBUG_OBJECT (dfbvideosink, "a buffer of %d bytes was requested " "with caps %" GST_PTR_FORMAT " and offset %llu", size, caps, offset); + if (G_UNLIKELY (!dfbvideosink->setup)) { + GST_DEBUG_OBJECT (dfbvideosink, "we are not setup yet, can't allocate!"); + *buf = NULL; + return ret; + } + desired_caps = gst_caps_copy (caps); structure = gst_caps_get_structure (desired_caps, 0); |