diff options
Diffstat (limited to 'src/plugins/gstreamer/camerabin/camerabinsession.cpp')
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabinsession.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp index 6e3448ffe..a835b1ce5 100644 --- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp @@ -487,6 +487,11 @@ QUrl CameraBinSession::outputLocation() const bool CameraBinSession::setOutputLocation(const QUrl& sink) { + if (!sink.isRelative() && !sink.isLocalFile()) { + qWarning("Output location must be a local file"); + return false; + } + m_sink = m_actualSink = sink; return true; } @@ -1007,8 +1012,9 @@ void CameraBinSession::recordVideo() if (m_actualSink.isEmpty()) { QString ext = m_mediaContainerControl->suggestedFileExtension(m_mediaContainerControl->actualContainerFormat()); m_actualSink = QUrl::fromLocalFile(generateFileName("clip_", defaultDir(QCamera::CaptureVideo), ext)); - } else if (!m_actualSink.isLocalFile()) { - m_actualSink = QUrl::fromLocalFile(m_actualSink.toEncoded()); + } else { + // Output location was rejected in setOutputlocation() if not a local file + m_actualSink = QUrl::fromLocalFile(QDir::currentPath()).resolved(m_actualSink); } QString fileName = m_actualSink.toLocalFile(); |