summaryrefslogtreecommitdiffstats
path: root/plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp
diff options
context:
space:
mode:
authorDmytro Poplavskiy <dmytro.poplavskiy@nokia.com>2010-09-07 14:03:05 +1000
committerDmytro Poplavskiy <dmytro.poplavskiy@nokia.com>2010-09-07 14:03:05 +1000
commitb72ea64c210a54e8a8ea98c9e0fd12863b4d1240 (patch)
treed7c154739478a264f26ec2eef837d6e95c10d0e4 /plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp
parent00ef42bfe7b49a1c12998fcb34e7474add812745 (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.cpp13
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);
}
}