diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | sys/qcam/gstqcamsrc.c | 30 |
2 files changed, 23 insertions, 13 deletions
@@ -1,3 +1,9 @@ +2005-02-03 Ronald S. Bultje <rbultje@ronald.bitfreak.net> + + * sys/qcam/gstqcamsrc.c: (gst_qcamsrc_change_state), + (gst_qcamsrc_open): + Use GST_ELEMENT_ERROR, not g_warning, if open failed. + 2005-02-02 Ronald S. Bultje <rbultje@ronald.bitfreak.net> * gst/qtdemux/qtdemux.c: (qtdemux_video_caps): diff --git a/sys/qcam/gstqcamsrc.c b/sys/qcam/gstqcamsrc.c index 48480225..c08453ba 100644 --- a/sys/qcam/gstqcamsrc.c +++ b/sys/qcam/gstqcamsrc.c @@ -388,19 +388,22 @@ gst_qcamsrc_change_state (GstElement * element) { g_return_val_if_fail (GST_IS_QCAMSRC (element), FALSE); - /* if going down into NULL state, close the file if it's open */ - if (GST_STATE_PENDING (element) == GST_STATE_NULL) { - if (GST_FLAG_IS_SET (element, GST_QCAMSRC_OPEN)) - gst_qcamsrc_close (GST_QCAMSRC (element)); - /* otherwise (READY or higher) we need to open the sound card */ - } else { - if (!GST_FLAG_IS_SET (element, GST_QCAMSRC_OPEN)) { - GST_DEBUG ("opening"); - if (!gst_qcamsrc_open (GST_QCAMSRC (element))) { - GST_DEBUG ("open failed"); - return GST_STATE_FAILURE; + switch (GST_STATE_TRANSITION (element)) { + case GST_STATE_READY_TO_NULL: + if (GST_FLAG_IS_SET (element, GST_QCAMSRC_OPEN)) + gst_qcamsrc_close (GST_QCAMSRC (element)); + break; + case GST_STATE_NULL_TO_READY: + if (!GST_FLAG_IS_SET (element, GST_QCAMSRC_OPEN)) { + GST_DEBUG ("opening"); + if (!gst_qcamsrc_open (GST_QCAMSRC (element))) { + GST_DEBUG ("open failed"); + return GST_STATE_FAILURE; + } } - } + break; + default: + break; } if (GST_ELEMENT_CLASS (parent_class)->change_state) @@ -413,7 +416,8 @@ static gboolean gst_qcamsrc_open (GstQCamSrc * qcamsrc) { if (qc_open (qcamsrc->qcam)) { - g_warning ("qcamsrc: Cannot open QuickCam.\n"); + GST_ELEMENT_ERROR (qcamsrc, RESOURCE, OPEN_READ, (NULL), + ("Failed to open QuickCam")); return FALSE; } |