diff options
author | Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com> | 2012-06-29 14:21:58 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-29 07:28:29 +0200 |
commit | 8bdceb93573971deb7ff4327dfa580956c8d9c03 (patch) | |
tree | 2efedcfe60147d418622fa5479b478c741447235 /src/plugins/gstreamer/mediacapture/qgstreamerimagecapturecontrol.cpp | |
parent | b3e8783334f339e0a1f64670b8fb0e74699f735c (diff) |
Gst Capture: image capture fixes
Report camera is ready to capture only in image capture modes;
Emit capture failed if camera not configured for capture
Change-Id: Ia2b92e2f8c760db948185a29c3e5ceae81dd3af4
Reviewed-by: Lev Zelenskiy <lev.zelenskiy@nokia.com>
Reviewed-by: Ling Hu <ling.hu@nokia.com>
Diffstat (limited to 'src/plugins/gstreamer/mediacapture/qgstreamerimagecapturecontrol.cpp')
-rw-r--r-- | src/plugins/gstreamer/mediacapture/qgstreamerimagecapturecontrol.cpp | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/plugins/gstreamer/mediacapture/qgstreamerimagecapturecontrol.cpp b/src/plugins/gstreamer/mediacapture/qgstreamerimagecapturecontrol.cpp index a433ac2f5..e9fc3a331 100644 --- a/src/plugins/gstreamer/mediacapture/qgstreamerimagecapturecontrol.cpp +++ b/src/plugins/gstreamer/mediacapture/qgstreamerimagecapturecontrol.cpp @@ -63,6 +63,21 @@ bool QGstreamerImageCaptureControl::isReadyForCapture() const int QGstreamerImageCaptureControl::capture(const QString &fileName) { + m_lastId++; + + //it's allowed to request image capture while camera is starting + if (m_session->pendingState() == QGstreamerCaptureSession::StoppedState || + !(m_session->captureMode() & QGstreamerCaptureSession::Image)) { + //emit error in the next event loop, + //so application can associate it with returned request id. + QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, + Q_ARG(int, m_lastId), + Q_ARG(int, QCameraImageCapture::NotReadyError), + Q_ARG(QString,tr("Not ready to capture"))); + + return m_lastId; + } + QString path = fileName; if (path.isEmpty()) { int lastImage = 0; @@ -77,7 +92,6 @@ int QGstreamerImageCaptureControl::capture(const QString &fileName) 10, QLatin1Char('0')); } - m_lastId++; m_session->captureImage(m_lastId, path); @@ -91,7 +105,9 @@ void QGstreamerImageCaptureControl::cancelCapture() void QGstreamerImageCaptureControl::updateState() { - bool ready = m_session->state() == QGstreamerCaptureSession::PreviewState; + bool ready = (m_session->state() == QGstreamerCaptureSession::PreviewState) && + (m_session->captureMode() & QGstreamerCaptureSession::Image); + if (m_ready != ready) { emit readyForCaptureChanged(m_ready = ready); } |