summaryrefslogtreecommitdiffstats
path: root/src/plugins/gstreamer/mediacapture/qgstreamerimagecapturecontrol.cpp
diff options
context:
space:
mode:
authorDmytro Poplavskiy <dmytro.poplavskiy@nokia.com>2012-06-29 14:21:58 +1000
committerQt by Nokia <qt-info@nokia.com>2012-06-29 07:28:29 +0200
commit8bdceb93573971deb7ff4327dfa580956c8d9c03 (patch)
tree2efedcfe60147d418622fa5479b478c741447235 /src/plugins/gstreamer/mediacapture/qgstreamerimagecapturecontrol.cpp
parentb3e8783334f339e0a1f64670b8fb0e74699f735c (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.cpp20
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);
}