diff options
Diffstat (limited to 'gst')
-rw-r--r-- | gst/camerabin2/gstcamerabin2.c | 31 | ||||
-rw-r--r-- | gst/camerabin2/gstwrappercamerabinsrc.c | 4 |
2 files changed, 19 insertions, 16 deletions
diff --git a/gst/camerabin2/gstcamerabin2.c b/gst/camerabin2/gstcamerabin2.c index c77585a1e..f1b2f8762 100644 --- a/gst/camerabin2/gstcamerabin2.c +++ b/gst/camerabin2/gstcamerabin2.c @@ -1101,17 +1101,24 @@ gst_camera_bin_handle_message (GstBin * bin, GstMessage * message) g_mutex_lock (&camerabin->video_capture_mutex); GST_DEBUG_OBJECT (bin, "EOS from video branch"); - g_assert (camerabin->video_state == GST_CAMERA_BIN_VIDEO_FINISHING); - - if (!g_thread_try_new ("reset-element-thread", - gst_camera_bin_video_reset_elements, gst_object_ref (camerabin), - NULL)) { - GST_WARNING_OBJECT (camerabin, - "Failed to create thread to " - "reset video elements' state, video recordings may not work " - "anymore"); - gst_object_unref (camerabin); - camerabin->video_state = GST_CAMERA_BIN_VIDEO_IDLE; + if (camerabin->video_state == GST_CAMERA_BIN_VIDEO_FINISHING) { + if (!g_thread_try_new ("reset-element-thread", + gst_camera_bin_video_reset_elements, + gst_object_ref (camerabin), NULL)) { + GST_WARNING_OBJECT (camerabin, + "Failed to create thread to " + "reset video elements' state, video recordings may not work " + "anymore"); + gst_object_unref (camerabin); + camerabin->video_state = GST_CAMERA_BIN_VIDEO_IDLE; + } + } else if (camerabin->video_state == GST_CAMERA_BIN_VIDEO_IDLE) { + GST_DEBUG_OBJECT (camerabin, "Received EOS from video branch but " + "video recording is idle, ignoring"); + } else { + GST_WARNING_OBJECT (camerabin, "Received EOS from video branch but " + "video is recording and stop-capture wasn't requested"); + g_assert_not_reached (); } g_mutex_unlock (&camerabin->video_capture_mutex); @@ -1760,7 +1767,7 @@ gst_camera_bin_create_elements (GstCameraBin2 * camera) G_CALLBACK (gst_camera_bin_src_notify_readyforcapture), camera); if (!gst_element_link_pads (camera->src, "vfsrc", - camera->viewfinderbin_queue, "sink")) { + camera->viewfinderbin_queue, "sink")) { GST_ERROR_OBJECT (camera, "Failed to link camera source's vfsrc pad to viewfinder queue"); goto fail; diff --git a/gst/camerabin2/gstwrappercamerabinsrc.c b/gst/camerabin2/gstwrappercamerabinsrc.c index 32fb38ee0..b25b8ad10 100644 --- a/gst/camerabin2/gstwrappercamerabinsrc.c +++ b/gst/camerabin2/gstwrappercamerabinsrc.c @@ -312,10 +312,6 @@ gst_wrapper_camera_src_src_event_probe (GstPad * pad, GstPadProbeInfo * info, GstEvent *evt = GST_EVENT (info->data); switch (GST_EVENT_TYPE (evt)) { - case GST_EVENT_EOS: - /* drop */ - ret = GST_PAD_PROBE_DROP; - break; case GST_EVENT_SEGMENT: if (self->drop_newseg) { ret = GST_PAD_PROBE_DROP; |