ext/directfb/dfbvideosink.c: Don't try allocating if we are not setup yet. Fail chang...
authorJulien Moutte <julien@moutte.net>
Mon, 31 Jul 2006 16:50:27 +0000 (16:50 +0000)
committerJulien Moutte <julien@moutte.net>
Mon, 31 Jul 2006 16:50:27 +0000 (16:50 +0000)
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.

ChangeLog
ext/directfb/dfbvideosink.c

index fa936e5..550d84d 100644 (file)
--- 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),
index db51f7e..8a56ecb 100644 (file)
@@ -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);