diff options
author | Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com> | 2010-09-07 14:03:05 +1000 |
---|---|---|
committer | Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com> | 2010-09-07 14:03:05 +1000 |
commit | b72ea64c210a54e8a8ea98c9e0fd12863b4d1240 (patch) | |
tree | d7c154739478a264f26ec2eef837d6e95c10d0e4 /plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp | |
parent | 00ef42bfe7b49a1c12998fcb34e7474add812745 (diff) |
Gstreamer backend: added isReady() property to video output interface.
It allows to postpone using the video output until it's configured
(winId is set or video surface attached).
Diffstat (limited to 'plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp')
-rw-r--r-- | plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp b/plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp index b2d21ce7fb..bab3ae4de0 100644 --- a/plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp +++ b/plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp @@ -81,6 +81,8 @@ CameraBinControl::CameraBinControl(CameraBinSession *session) SLOT(reloadLater())); connect(m_session, SIGNAL(viewfinderChanged()), SLOT(reloadLater())); + connect(m_session, SIGNAL(readyChanged(bool)), + SLOT(reloadLater())); } CameraBinControl::~CameraBinControl() @@ -105,7 +107,14 @@ void CameraBinControl::setState(QCamera::State state) qDebug() << Q_FUNC_INFO << state; if (m_state != state) { m_state = state; - m_session->setState(state); + + //postpone changing to Active if the session is nor ready yet + if (state == QCamera::ActiveState) { + if (m_session->isReady()) + m_session->setState(state); + } else + m_session->setState(state); + emit stateChanged(m_state); } } @@ -171,7 +180,7 @@ void CameraBinControl::delayedReload() #endif if (m_reloadPending) { m_reloadPending = false; - if (m_state == QCamera::ActiveState) { + if (m_state == QCamera::ActiveState && m_session->isReady()) { m_session->setState(QCamera::ActiveState); } } |