summaryrefslogtreecommitdiffstats
path: root/src/imports/multimedia/qdeclarativemultimediaglobal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/multimedia/qdeclarativemultimediaglobal.cpp')
-rw-r--r--src/imports/multimedia/qdeclarativemultimediaglobal.cpp52
1 files changed, 13 insertions, 39 deletions
diff --git a/src/imports/multimedia/qdeclarativemultimediaglobal.cpp b/src/imports/multimedia/qdeclarativemultimediaglobal.cpp
index bccee7d92..1717d05f3 100644
--- a/src/imports/multimedia/qdeclarativemultimediaglobal.cpp
+++ b/src/imports/multimedia/qdeclarativemultimediaglobal.cpp
@@ -153,27 +153,6 @@ Camera {
\endqml
*/
-namespace QDeclarativeMultimedia {
-
-#define FREEZE_SOURCE "(function deepFreeze(o) { "\
- " var prop, propKey;" \
- " Object.freeze(o);" \
- " for (propKey in o) {" \
- " prop = o[propKey];" \
- " if (!o.hasOwnProperty(propKey) || !(typeof prop === \"object\") || " \
- " Object.isFrozen(prop)) {" \
- " continue;" \
- " }" \
- " deepFreeze(prop);" \
- " }" \
- "})"
-
-static void deepFreeze(QJSEngine *jsEngine, const QJSValue &obj)
-{
- QJSValue freezeFunc = jsEngine->evaluate(QString::fromUtf8(FREEZE_SOURCE));
- freezeFunc.call(QJSValueList() << obj);
-}
-
static QJSValue cameraInfoToJSValue(QJSEngine *jsEngine, const QCameraInfo &camera)
{
QJSValue o = jsEngine->newObject();
@@ -184,29 +163,24 @@ static QJSValue cameraInfoToJSValue(QJSEngine *jsEngine, const QCameraInfo &came
return o;
}
-QJSValue initGlobalObject(QQmlEngine *qmlEngine, QJSEngine *jsEngine)
+QDeclarativeMultimediaGlobal::QDeclarativeMultimediaGlobal(QJSEngine *engine, QObject *parent)
+ : QObject(parent)
+ , m_engine(engine)
{
- Q_UNUSED(qmlEngine)
-
- QJSValue globalObject = jsEngine->newObject();
+}
- // property object defaultCamera
- globalObject.setProperty(QStringLiteral("defaultCamera"),
- cameraInfoToJSValue(jsEngine, QCameraInfo::defaultCamera()));
+QJSValue QDeclarativeMultimediaGlobal::defaultCamera() const
+{
+ return cameraInfoToJSValue(m_engine, QCameraInfo::defaultCamera());
+}
- // property list<object> availableCameras
+QJSValue QDeclarativeMultimediaGlobal::availableCameras() const
+{
QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
- QJSValue availableCameras = jsEngine->newArray(cameras.count());
+ QJSValue availableCameras = m_engine->newArray(cameras.count());
for (int i = 0; i < cameras.count(); ++i)
- availableCameras.setProperty(i, cameraInfoToJSValue(jsEngine, cameras.at(i)));
- globalObject.setProperty(QStringLiteral("availableCameras"), availableCameras);
-
- // freeze global object to prevent properties to be modified from QML
- deepFreeze(jsEngine, globalObject);
-
- return globalObject;
-}
-
+ availableCameras.setProperty(i, cameraInfoToJSValue(m_engine, cameras.at(i)));
+ return availableCameras;
}
QT_END_NAMESPACE