diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
index cfac61c019e26707a5e1b86cf47238d7f3b6ec10..823cfe4089d581bdd60ac13c5af7fcd471055b5b 100644
--- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp
@@ -732,21 +732,18 @@ void CameraBinSession::setState(QCamera::State newState)
     if (newState == m_pendingState)
         return;
 
-    emit pendingStateChanged(newState);
+    m_pendingState = newState;
+    emit pendingStateChanged(m_pendingState);
 
 #if CAMERABIN_DEBUG
     qDebug() << Q_FUNC_INFO << newState;
 #endif
 
     setStateHelper(newState);
-    m_pendingState = newState;
 }
 
 void CameraBinSession::setStateHelper(QCamera::State state)
 {
-    if (state == m_pendingState)
-        return;
-
     switch (state) {
     case QCamera::UnloadedState:
         unload();