projects
/
harmattan
/
cameraplus
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added NoFaceDetection quirk
[harmattan/cameraplus]
/
declarative
/
viewfinder.cpp
diff --git
a/declarative/viewfinder.cpp
b/declarative/viewfinder.cpp
index
6c9c36f
..
841fd14
100644
(file)
--- a/
declarative/viewfinder.cpp
+++ b/
declarative/viewfinder.cpp
@@
-43,6
+43,7
@@
Viewfinder::Viewfinder(QQuickItem *parent) :
m_renderer(0),
m_cam(0),
m_conf(0),
m_renderer(0),
m_cam(0),
m_conf(0),
+ m_dev(0),
m_enabled(true) {
#if defined(QT4)
m_enabled(true) {
#if defined(QT4)
@@
-92,12
+93,14
@@
void Viewfinder::setCamera(Camera *camera) {
if (m_cam) {
QObject::disconnect(m_cam, SIGNAL(deviceChanged()), this, SLOT(deviceChanged()));
if (m_cam) {
QObject::disconnect(m_cam, SIGNAL(deviceChanged()), this, SLOT(deviceChanged()));
+ QObject::disconnect(m_cam, SIGNAL(prepareForDeviceChange()), this, SLOT(prepareForDeviceChange()));
}
m_cam = camera;
if (m_cam) {
QObject::connect(m_cam, SIGNAL(deviceChanged()), this, SLOT(deviceChanged()));
}
m_cam = camera;
if (m_cam) {
QObject::connect(m_cam, SIGNAL(deviceChanged()), this, SLOT(deviceChanged()));
+ QObject::connect(m_cam, SIGNAL(prepareForDeviceChange()), this, SLOT(prepareForDeviceChange()));
}
if (isComponentComplete()) {
}
if (isComponentComplete()) {
@@
-219,10
+222,15
@@
void Viewfinder::deviceChanged() {
return;
}
return;
}
- QtCamDevice *dev = m_cam->device();
+ if (m_dev) {
+ qmlInfo(this) << "Cannot set a new device without cleaning up the existing one";
+ abort();
+ }
+
+ m_dev = m_cam->device();
- if (dev) {
- dev->setViewfinder(this);
+ if (
m_
dev) {
+
m_
dev->setViewfinder(this);
}
emit renderAreaChanged();
}
emit renderAreaChanged();
@@
-233,12
+241,6
@@
GstElement *Viewfinder::sinkElement() {
return m_renderer ? m_renderer->sinkElement() : 0;
}
return m_renderer ? m_renderer->sinkElement() : 0;
}
-bool Viewfinder::setDevice(QtCamDevice *device) {
- Q_UNUSED(device);
-
- return true;
-}
-
void Viewfinder::stop() {
if (m_renderer) {
m_renderer->reset();
void Viewfinder::stop() {
if (m_renderer) {
m_renderer->reset();
@@
-250,3
+252,10
@@
void Viewfinder::updateRequested() {
update();
}
}
update();
}
}
+
+void Viewfinder::prepareForDeviceChange() {
+ if (m_dev) {
+ m_dev->setViewfinder(0);
+ m_dev = 0;
+ }
+}