pulsesink: handle NULL timing info
authorWim Taymans <wim.taymans@collabora.co.uk>
Fri, 10 Apr 2009 19:31:06 +0000 (21:31 +0200)
committerWim Taymans <wim@metal.(none)>
Fri, 10 Apr 2009 19:32:54 +0000 (21:32 +0200)
Don't crash when the timing info is not yet available.

ext/pulse/pulsesink.c

index 92b618840de41a43cc7ee0a9f3e7bab0c578ceb6..8f8805f6e27a06436257189c45c583c59f17403e 100644 (file)
@@ -1092,17 +1092,21 @@ gst_pulseringbuffer_commit (GstRingBuffer * buf, guint64 * sample,
 
     /* check if we need to uncork after writing the samples */
     if (pbuf->corked) {
-      const pa_timing_info *info = pa_stream_get_timing_info (pbuf->stream);
-
-      GST_LOG_OBJECT (psink,
-          "read_index at %" G_GUINT64_FORMAT ", offset %" G_GINT64_FORMAT,
-          info->read_index, offset);
-
-      /* we uncork when the read_index is too far behind the offset we need
-       * to write to. */
-      if (info->read_index + bufsize <= offset) {
-        if (!gst_pulsering_set_corked (pbuf, FALSE, FALSE))
-          goto uncork_failed;
+      const pa_timing_info *info;
+
+      if ((info = pa_stream_get_timing_info (pbuf->stream))) {
+        GST_LOG_OBJECT (psink,
+            "read_index at %" G_GUINT64_FORMAT ", offset %" G_GINT64_FORMAT,
+            info->read_index, offset);
+
+        /* we uncork when the read_index is too far behind the offset we need
+         * to write to. */
+        if (info->read_index + bufsize <= offset) {
+          if (!gst_pulsering_set_corked (pbuf, FALSE, FALSE))
+            goto uncork_failed;
+        }
+      } else {
+        GST_LOG_OBJECT (psink, "no timing info available yet");
       }
     }
   }