summaryrefslogtreecommitdiffstats
path: root/plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp
diff options
context:
space:
mode:
authorDmytro Poplavskiy <dmytro.poplavskiy@nokia.com>2011-09-06 15:40:50 +1000
committerDmytro Poplavskiy <dmytro.poplavskiy@nokia.com>2011-10-03 11:22:26 +1000
commit76e3fb9c7c73d30306cdd3584b31b8f6dc52ba5a (patch)
treed923edbea229dafc40d7a877e46d3a5995af2519 /plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp
parent361ff64748b37191c61992508fce503eb4ebe75f (diff)
Camerabin backend: don't request audio resources unless recording video
To allow alarms while camera is running. Task-number: PMO 279633 Reviewed-by: Michael Goddard Change-Id: I4760dc9bc05e903da5b9bbe5b449c02929b64426
Diffstat (limited to 'plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp')
-rw-r--r--plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp b/plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp
index d31ea5541f..8038d94c2e 100644
--- a/plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp
+++ b/plugins/multimedia/gstreamer/camerabin/camerabincontrol.cpp
@@ -46,6 +46,7 @@
#include "camerabinvideoencoder.h"
#include "camerabinimageencoder.h"
#include "camerabinresourcepolicy.h"
+#include "camerabinrecorder.h"
#include <QtCore/qdebug.h>
#include <QtCore/qfile.h>
@@ -92,6 +93,8 @@ CameraBinControl::CameraBinControl(CameraBinSession *session)
SLOT(reloadLater()));
connect(m_session, SIGNAL(error(int,QString)),
SLOT(handleCameraError(int,QString)));
+ connect(m_session->recorderControl(), SIGNAL(stateChanged(QMediaRecorder::State)),
+ SLOT(updateRecorderResources(QMediaRecorder::State)));
m_resourcePolicy = new CamerabinResourcePolicy(this);
connect(m_resourcePolicy, SIGNAL(resourcesGranted()),
@@ -357,3 +360,22 @@ void CameraBinControl::setViewfinderColorSpaceConversion(bool enabled)
g_object_set(G_OBJECT(m_session->cameraBin()), "flags", flags, NULL);
}
+
+void CameraBinControl::updateRecorderResources(QMediaRecorder::State recorderState)
+{
+ if (m_state == QCamera::ActiveState) {
+ CamerabinResourcePolicy::ResourceSet resourceSet;
+
+ if (recorderState == QMediaRecorder::RecordingState) {
+ resourceSet = CamerabinResourcePolicy::VideoRecordingResources;
+ } else {
+ if (captureMode() == QCamera::CaptureStillImage)
+ resourceSet = CamerabinResourcePolicy::ImageCaptureResources;
+ else
+ resourceSet = CamerabinResourcePolicy::VideoCaptureResources;
+ }
+
+ if (m_resourcePolicy->resourceSet() != resourceSet)
+ m_resourcePolicy->setResourceSet(resourceSet);
+ }
+}