summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/imports/multimedia/qdeclarativecamera.cpp5
-rw-r--r--src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm13
-rw-r--r--src/plugins/directshow/player/directshowplayercontrol.cpp2
-rw-r--r--src/plugins/winrt/qwinrtmediaplayercontrol.cpp2
4 files changed, 16 insertions, 6 deletions
diff --git a/src/imports/multimedia/qdeclarativecamera.cpp b/src/imports/multimedia/qdeclarativecamera.cpp
index 6d36e462d..91bda2ea2 100644
--- a/src/imports/multimedia/qdeclarativecamera.cpp
+++ b/src/imports/multimedia/qdeclarativecamera.cpp
@@ -177,7 +177,6 @@ QDeclarativeCamera::QDeclarativeCamera(QObject *parent) :
QObject(parent),
m_camera(0),
m_metaData(0),
- m_viewfinder(0),
m_pendingState(ActiveState),
m_componentComplete(false)
{
@@ -190,6 +189,7 @@ QDeclarativeCamera::QDeclarativeCamera(QObject *parent) :
m_flash = new QDeclarativeCameraFlash(m_camera);
m_focus = new QDeclarativeCameraFocus(m_camera);
m_imageProcessing = new QDeclarativeCameraImageProcessing(m_camera);
+ m_viewfinder = new QDeclarativeCameraViewfinder(m_camera);
connect(m_camera, SIGNAL(captureModeChanged(QCamera::CaptureModes)),
this, SIGNAL(captureModeChanged()));
@@ -960,9 +960,6 @@ QDeclarativeMediaMetaData *QDeclarativeCamera::metaData()
QDeclarativeCameraViewfinder *QDeclarativeCamera::viewfinder()
{
- if (!m_viewfinder)
- m_viewfinder = new QDeclarativeCameraViewfinder(m_camera);
-
return m_viewfinder;
}
diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
index 3b3f47a43..3c59419e7 100644
--- a/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
+++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayersession.mm
@@ -922,6 +922,19 @@ void AVFMediaPlayerSession::processBufferStateChange(int bufferStatus)
if (bufferStatus == m_bufferStatus)
return;
+ auto status = m_mediaStatus;
+ // Buffered -> unbuffered.
+ if (!bufferStatus) {
+ status = QMediaPlayer::StalledMedia;
+ } else if (status == QMediaPlayer::StalledMedia) {
+ status = QMediaPlayer::BufferedMedia;
+ // Resume playback.
+ [[static_cast<AVFMediaPlayerSessionObserver*>(m_observer) player] setRate:m_rate];
+ }
+
+ if (m_mediaStatus != status)
+ Q_EMIT mediaStatusChanged(m_mediaStatus = status);
+
m_bufferStatus = bufferStatus;
Q_EMIT bufferStatusChanged(bufferStatus);
}
diff --git a/src/plugins/directshow/player/directshowplayercontrol.cpp b/src/plugins/directshow/player/directshowplayercontrol.cpp
index 2fe43f21b..50e8d6421 100644
--- a/src/plugins/directshow/player/directshowplayercontrol.cpp
+++ b/src/plugins/directshow/player/directshowplayercontrol.cpp
@@ -208,7 +208,7 @@ const QIODevice *DirectShowPlayerControl::mediaStream() const
void DirectShowPlayerControl::setMedia(const QMediaContent &media, QIODevice *stream)
{
- if (m_media == media)
+ if (m_media == media && m_stream == stream)
return;
m_pendingPosition = -1;
diff --git a/src/plugins/winrt/qwinrtmediaplayercontrol.cpp b/src/plugins/winrt/qwinrtmediaplayercontrol.cpp
index 02d956b5b..ee916b750 100644
--- a/src/plugins/winrt/qwinrtmediaplayercontrol.cpp
+++ b/src/plugins/winrt/qwinrtmediaplayercontrol.cpp
@@ -722,7 +722,7 @@ void QWinRTMediaPlayerControl::setMedia(const QMediaContent &media, QIODevice *s
{
Q_D(QWinRTMediaPlayerControl);
- if (d->media == media)
+ if (d->media == media && d->stream.data() == stream)
return;
d->media = media;