diff options
author | VaL Doroshchuk <valentyn.doroshchuk@qt.io> | 2017-11-15 09:40:29 +0100 |
---|---|---|
committer | VaL Doroshchuk <valentyn.doroshchuk@qt.io> | 2018-03-21 12:59:05 +0000 |
commit | d49abfda2f5bbf15de3a5133c77d5115a75b3c2b (patch) | |
tree | d0e96831e87c8de82e82fbe7415360944a8bd670 /src | |
parent | 485cb9cec54ee3b9466e730037e7480296e2ecd0 (diff) | |
download | qtmultimedia-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>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabinsession.cpp | 14 |
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"); |