summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Moutte <julien@moutte.net>2006-07-31 16:50:27 +0000
committerJulien Moutte <julien@moutte.net>2006-07-31 16:50:27 +0000
commitf91baadfcd578246f61d362e199394f7d74019a8 (patch)
tree807e76561da2bf1d8b4fdc008e428b3f7cc4f80a
parentf186c1b29c20afc62aed64cfea3d8c3b121440a2 (diff)
downloadgst-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--ChangeLog6
-rw-r--r--ext/directfb/dfbvideosink.c12
2 files changed, 17 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index fa936e50..550d84da 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);