summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVaL Doroshchuk <valentyn.doroshchuk@qt.io>2017-11-15 09:40:29 +0100
committerVaL Doroshchuk <valentyn.doroshchuk@qt.io>2018-03-21 12:59:05 +0000
commitd49abfda2f5bbf15de3a5133c77d5115a75b3c2b (patch)
treed0e96831e87c8de82e82fbe7415360944a8bd670
parent485cb9cec54ee3b9466e730037e7480296e2ecd0 (diff)
downloadqtmultimedia-d49abfda2f5bbf15de3a5133c77d5115a75b3c2b.tar.gz
Gstreamer: Emit an error if QCamera::start() fails
If a camera is not started successfully error() signal has to be emitted. Added emitting an error from video source. Emitted only first error to prevent multiple subsequent errors. Added debug message. Task-number: QTBUG-51825 Change-Id: I6ac936d2728213a4a64f3e4eb25ae2e2f109acca Reviewed-by: Christian Stromme <christian.stromme@qt.io>
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinsession.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
index 39f97e989..3bb6ebffb 100644
--- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
@@ -767,7 +767,11 @@ void CameraBinSession::setStateHelper(QCamera::State state)
void CameraBinSession::setError(int err, const QString &errorString)
{
- m_pendingState = QCamera::UnloadedState;
+ // Emit only first error
+ if (m_pendingState == QCamera::UnloadedState)
+ return;
+
+ setState(QCamera::UnloadedState);
emit error(err, errorString);
setStatus(QCamera::UnloadedStatus);
}
@@ -990,10 +994,14 @@ bool CameraBinSession::processBusMessage(const QGstreamerMessage &message)
if (err && err->message) {
message = QString::fromUtf8(err->message);
qWarning() << "CameraBin error:" << message;
+#if CAMERABIN_DEBUG
+ qWarning() << QString::fromUtf8(debug);
+#endif
}
- //only report error messager from camerabin
- if (GST_MESSAGE_SRC(gm) == GST_OBJECT_CAST(m_camerabin)) {
+ // Only report error messages from camerabin or video source
+ if (GST_MESSAGE_SRC(gm) == GST_OBJECT_CAST(m_camerabin)
+ || GST_MESSAGE_SRC(gm) == GST_OBJECT_CAST(m_videoSrc)) {
if (message.isEmpty())
message = tr("Camera error");