summaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-04-15 09:26:14 +0200
committerLiang Qi <liang.qi@theqtcompany.com>2015-04-15 09:26:14 +0200
commit1925bb404ec47b6e074c5e3b334fe0be12176d7b (patch)
tree8d7d79ac1b3a549c20bb4fa77c6f457bf1bb61ea /src/imports
parent6187b72c51d0c05955d9d814baf8866b8e70fcfe (diff)
parentf9145aca166ad2ca1514524ce88ded7834eb207c (diff)
Merge remote-tracking branch 'origin/5.4' into 5.5
Conflicts: src/multimedia/playback/playlistfileparser.cpp src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp Change-Id: I52950def2b8283ae15797d05d4ead6a1256eba19
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/audioengine/qdeclarative_audiosample_p.cpp5
-rw-r--r--src/imports/multimedia/multimedia.cpp8
-rw-r--r--src/imports/multimedia/plugins.qmltypes260
-rw-r--r--src/imports/multimedia/qdeclarativecamerarecorder_p.h2
-rw-r--r--src/imports/multimedia/qdeclarativemultimediaglobal.cpp52
-rw-r--r--src/imports/multimedia/qdeclarativemultimediaglobal_p.h26
-rw-r--r--src/imports/multimedia/qdeclarativetorch.cpp2
7 files changed, 291 insertions, 64 deletions
diff --git a/src/imports/audioengine/qdeclarative_audiosample_p.cpp b/src/imports/audioengine/qdeclarative_audiosample_p.cpp
index 13b4705b9..e95840711 100644
--- a/src/imports/audioengine/qdeclarative_audiosample_p.cpp
+++ b/src/imports/audioengine/qdeclarative_audiosample_p.cpp
@@ -106,6 +106,11 @@ void QDeclarativeAudioSample::componentComplete()
m_complete = true;
}
+/*!
+ \qmlproperty url QtAudioEngine::AudioSample::source
+
+ This property holds the source URL of the audio sample.
+*/
QUrl QDeclarativeAudioSample::source() const
{
return m_url;
diff --git a/src/imports/multimedia/multimedia.cpp b/src/imports/multimedia/multimedia.cpp
index 296550565..652359f3b 100644
--- a/src/imports/multimedia/multimedia.cpp
+++ b/src/imports/multimedia/multimedia.cpp
@@ -58,6 +58,12 @@ QML_DECLARE_TYPE(QSoundEffect)
QT_BEGIN_NAMESPACE
+static QObject *multimedia_global_object(QQmlEngine *qmlEngine, QJSEngine *jsEngine)
+{
+ Q_UNUSED(qmlEngine)
+ return new QDeclarativeMultimediaGlobal(jsEngine);
+}
+
class QMultimediaDeclarativeModule : public QQmlExtensionPlugin
{
Q_OBJECT
@@ -99,7 +105,7 @@ public:
qmlRegisterType<QSoundEffect>(uri, 5, 3, "SoundEffect");
// 5.4 types
- qmlRegisterSingletonType(uri, 5, 4, "QtMultimedia", QDeclarativeMultimedia::initGlobalObject);
+ qmlRegisterSingletonType<QDeclarativeMultimediaGlobal>(uri, 5, 4, "QtMultimedia", multimedia_global_object);
qmlRegisterRevision<QDeclarativeCamera, 1>(uri, 5, 4);
qmlRegisterUncreatableType<QDeclarativeCameraViewfinder>(uri, 5, 4, "CameraViewfinder",
trUtf8("CameraViewfinder is provided by Camera"));
diff --git a/src/imports/multimedia/plugins.qmltypes b/src/imports/multimedia/plugins.qmltypes
index 0cc3a6a24..1894a2a7d 100644
--- a/src/imports/multimedia/plugins.qmltypes
+++ b/src/imports/multimedia/plugins.qmltypes
@@ -3,7 +3,8 @@ import QtQuick.tooling 1.1
// This file describes the plugin-supplied types contained in the library.
// It is used for QML tooling purposes only.
//
-// This file was auto-generated with the command 'qmlplugindump -notrelocatable QtMultimedia 5.0'.
+// This file was auto-generated by:
+// 'qmlplugindump -nonrelocatable QtMultimedia 5.4'
Module {
Component {
@@ -76,6 +77,14 @@ Module {
"LockFocus": 4
}
}
+ Enum {
+ name: "Position"
+ values: {
+ "UnspecifiedPosition": 0,
+ "BackFace": 1,
+ "FrontFace": 2
+ }
+ }
Property { name: "state"; type: "QCamera::State"; isReadonly: true }
Property { name: "status"; type: "QCamera::Status"; isReadonly: true }
Property { name: "captureMode"; type: "QCamera::CaptureModes" }
@@ -233,6 +242,14 @@ Module {
exports: ["QtMultimedia/Camera 5.0"]
exportMetaObjectRevisions: [0]
Enum {
+ name: "Position"
+ values: {
+ "UnspecifiedPosition": 0,
+ "BackFace": 1,
+ "FrontFace": 2
+ }
+ }
+ Enum {
name: "CaptureMode"
values: {
"CaptureViewfinder": 0,
@@ -357,6 +374,10 @@ Module {
"ResourceMissing": 3
}
}
+ Property { name: "deviceId"; revision: 1; type: "string" }
+ Property { name: "position"; revision: 1; type: "Position" }
+ Property { name: "displayName"; revision: 1; type: "string"; isReadonly: true }
+ Property { name: "orientation"; revision: 1; type: "int"; isReadonly: true }
Property { name: "captureMode"; type: "CaptureMode" }
Property { name: "cameraState"; type: "State" }
Property { name: "cameraStatus"; type: "Status"; isReadonly: true }
@@ -395,12 +416,30 @@ Module {
isReadonly: true
isPointer: true
}
+ Property {
+ name: "metaData"
+ revision: 1
+ type: "QDeclarativeMediaMetaData"
+ isReadonly: true
+ isPointer: true
+ }
+ Property {
+ name: "viewfinder"
+ revision: 1
+ type: "QDeclarativeCameraViewfinder"
+ isReadonly: true
+ isPointer: true
+ }
Signal { name: "errorChanged" }
Signal {
name: "error"
Parameter { name: "errorCode"; type: "QDeclarativeCamera::Error" }
Parameter { name: "errorString"; type: "string" }
}
+ Signal { name: "deviceIdChanged"; revision: 1 }
+ Signal { name: "positionChanged"; revision: 1 }
+ Signal { name: "displayNameChanged"; revision: 1 }
+ Signal { name: "orientationChanged"; revision: 1 }
Signal {
name: "cameraStateChanged"
Parameter { type: "QDeclarativeCamera::State" }
@@ -450,6 +489,7 @@ Module {
name: "QDeclarativeCameraCapture"
prototype: "QObject"
exports: ["QtMultimedia/CameraCapture 5.0"]
+ isCreatable: false
exportMetaObjectRevisions: [0]
Property { name: "ready"; type: "bool"; isReadonly: true }
Property { name: "capturedImagePath"; type: "string"; isReadonly: true }
@@ -509,7 +549,33 @@ Module {
name: "QDeclarativeCameraExposure"
prototype: "QObject"
exports: ["QtMultimedia/CameraExposure 5.0"]
+ isCreatable: false
exportMetaObjectRevisions: [0]
+ Enum {
+ name: "ExposureMode"
+ values: {
+ "ExposureAuto": 0,
+ "ExposureManual": 1,
+ "ExposurePortrait": 2,
+ "ExposureNight": 3,
+ "ExposureBacklight": 4,
+ "ExposureSpotlight": 5,
+ "ExposureSports": 6,
+ "ExposureSnow": 7,
+ "ExposureBeach": 8,
+ "ExposureLargeAperture": 9,
+ "ExposureSmallAperture": 10,
+ "ExposureModeVendor": 1000
+ }
+ }
+ Enum {
+ name: "MeteringMode"
+ values: {
+ "MeteringMatrix": 1,
+ "MeteringAverage": 2,
+ "MeteringSpot": 3
+ }
+ }
Property { name: "exposureCompensation"; type: "double" }
Property { name: "iso"; type: "int"; isReadonly: true }
Property { name: "shutterSpeed"; type: "double"; isReadonly: true }
@@ -517,9 +583,9 @@ Module {
Property { name: "manualShutterSpeed"; type: "double" }
Property { name: "manualAperture"; type: "double" }
Property { name: "manualIso"; type: "double" }
- Property { name: "exposureMode"; type: "QDeclarativeCamera::ExposureMode" }
+ Property { name: "exposureMode"; type: "ExposureMode" }
Property { name: "spotMeteringPoint"; type: "QPointF" }
- Property { name: "meteringMode"; type: "QDeclarativeCamera::MeteringMode" }
+ Property { name: "meteringMode"; type: "MeteringMode" }
Signal {
name: "isoSensitivityChanged"
Parameter { type: "int" }
@@ -550,11 +616,11 @@ Module {
}
Signal {
name: "exposureModeChanged"
- Parameter { type: "QDeclarativeCamera::ExposureMode" }
+ Parameter { type: "ExposureMode" }
}
Signal {
name: "meteringModeChanged"
- Parameter { type: "QDeclarativeCamera::MeteringMode" }
+ Parameter { type: "MeteringMode" }
}
Signal {
name: "spotMeteringPointChanged"
@@ -562,7 +628,7 @@ Module {
}
Method {
name: "setExposureMode"
- Parameter { type: "QDeclarativeCamera::ExposureMode" }
+ Parameter { type: "ExposureMode" }
}
Method {
name: "setExposureCompensation"
@@ -588,38 +654,75 @@ Module {
name: "QDeclarativeCameraFlash"
prototype: "QObject"
exports: ["QtMultimedia/CameraFlash 5.0"]
+ isCreatable: false
exportMetaObjectRevisions: [0]
+ Enum {
+ name: "FlashMode"
+ values: {
+ "FlashAuto": 1,
+ "FlashOff": 2,
+ "FlashOn": 4,
+ "FlashRedEyeReduction": 8,
+ "FlashFill": 16,
+ "FlashTorch": 32,
+ "FlashVideoLight": 64,
+ "FlashSlowSyncFrontCurtain": 128,
+ "FlashSlowSyncRearCurtain": 256,
+ "FlashManual": 512
+ }
+ }
Property { name: "ready"; type: "bool"; isReadonly: true }
- Property { name: "mode"; type: "int" }
+ Property { name: "mode"; type: "FlashMode" }
Signal {
name: "flashReady"
Parameter { name: "status"; type: "bool" }
}
Signal {
name: "flashModeChanged"
- Parameter { type: "int" }
+ Parameter { type: "FlashMode" }
}
Method {
name: "setFlashMode"
- Parameter { type: "int" }
+ Parameter { type: "FlashMode" }
}
}
Component {
name: "QDeclarativeCameraFocus"
prototype: "QObject"
exports: ["QtMultimedia/CameraFocus 5.0"]
+ isCreatable: false
exportMetaObjectRevisions: [0]
- Property { name: "focusMode"; type: "QDeclarativeCamera::FocusMode" }
- Property { name: "focusPointMode"; type: "QDeclarativeCamera::FocusPointMode" }
+ Enum {
+ name: "FocusMode"
+ values: {
+ "FocusManual": 1,
+ "FocusHyperfocal": 2,
+ "FocusInfinity": 4,
+ "FocusAuto": 8,
+ "FocusContinuous": 16,
+ "FocusMacro": 32
+ }
+ }
+ Enum {
+ name: "FocusPointMode"
+ values: {
+ "FocusPointAuto": 0,
+ "FocusPointCenter": 1,
+ "FocusPointFaceDetection": 2,
+ "FocusPointCustom": 3
+ }
+ }
+ Property { name: "focusMode"; type: "FocusMode" }
+ Property { name: "focusPointMode"; type: "FocusPointMode" }
Property { name: "customFocusPoint"; type: "QPointF" }
Property { name: "focusZones"; type: "QObject"; isReadonly: true; isPointer: true }
Signal {
name: "focusModeChanged"
- Parameter { type: "QDeclarativeCamera::FocusMode" }
+ Parameter { type: "FocusMode" }
}
Signal {
name: "focusPointModeChanged"
- Parameter { type: "QDeclarativeCamera::FocusPointMode" }
+ Parameter { type: "FocusPointMode" }
}
Signal {
name: "customFocusPointChanged"
@@ -627,11 +730,11 @@ Module {
}
Method {
name: "setFocusMode"
- Parameter { type: "QDeclarativeCamera::FocusMode" }
+ Parameter { type: "FocusMode" }
}
Method {
name: "setFocusPointMode"
- Parameter { name: "mode"; type: "QDeclarativeCamera::FocusPointMode" }
+ Parameter { name: "mode"; type: "FocusPointMode" }
}
Method {
name: "setCustomFocusPoint"
@@ -640,18 +743,19 @@ Module {
Method {
name: "isFocusModeSupported"
type: "bool"
- Parameter { name: "mode"; type: "QDeclarativeCamera::FocusMode" }
+ Parameter { name: "mode"; type: "FocusMode" }
}
Method {
name: "isFocusPointModeSupported"
type: "bool"
- Parameter { name: "mode"; type: "QDeclarativeCamera::FocusPointMode" }
+ Parameter { name: "mode"; type: "FocusPointMode" }
}
}
Component {
name: "QDeclarativeCameraImageProcessing"
prototype: "QObject"
exports: ["QtMultimedia/CameraImageProcessing 5.0"]
+ isCreatable: false
exportMetaObjectRevisions: [0]
Enum {
name: "WhiteBalanceMode"
@@ -727,6 +831,7 @@ Module {
name: "QDeclarativeCameraRecorder"
prototype: "QObject"
exports: ["QtMultimedia/CameraRecorder 5.0"]
+ isCreatable: false
exportMetaObjectRevisions: [0]
Enum {
name: "RecorderState"
@@ -923,6 +1028,119 @@ Module {
}
}
Component {
+ name: "QDeclarativeCameraViewfinder"
+ prototype: "QObject"
+ exports: ["QtMultimedia/CameraViewfinder 5.4"]
+ isCreatable: false
+ exportMetaObjectRevisions: [0]
+ Property { name: "resolution"; type: "QSize" }
+ Property { name: "minimumFrameRate"; type: "double" }
+ Property { name: "maximumFrameRate"; type: "double" }
+ }
+ Component {
+ name: "QDeclarativeMediaMetaData"
+ prototype: "QObject"
+ Property { name: "title"; type: "QVariant" }
+ Property { name: "subTitle"; type: "QVariant" }
+ Property { name: "author"; type: "QVariant" }
+ Property { name: "comment"; type: "QVariant" }
+ Property { name: "description"; type: "QVariant" }
+ Property { name: "category"; type: "QVariant" }
+ Property { name: "genre"; type: "QVariant" }
+ Property { name: "year"; type: "QVariant" }
+ Property { name: "date"; type: "QVariant" }
+ Property { name: "userRating"; type: "QVariant" }
+ Property { name: "keywords"; type: "QVariant" }
+ Property { name: "language"; type: "QVariant" }
+ Property { name: "publisher"; type: "QVariant" }
+ Property { name: "copyright"; type: "QVariant" }
+ Property { name: "parentalRating"; type: "QVariant" }
+ Property { name: "ratingOrganization"; type: "QVariant" }
+ Property { name: "size"; type: "QVariant" }
+ Property { name: "mediaType"; type: "QVariant" }
+ Property { name: "duration"; type: "QVariant" }
+ Property { name: "audioBitRate"; type: "QVariant" }
+ Property { name: "audioCodec"; type: "QVariant" }
+ Property { name: "averageLevel"; type: "QVariant" }
+ Property { name: "channelCount"; type: "QVariant" }
+ Property { name: "peakValue"; type: "QVariant" }
+ Property { name: "sampleRate"; type: "QVariant" }
+ Property { name: "albumTitle"; type: "QVariant" }
+ Property { name: "albumArtist"; type: "QVariant" }
+ Property { name: "contributingArtist"; type: "QVariant" }
+ Property { name: "composer"; type: "QVariant" }
+ Property { name: "conductor"; type: "QVariant" }
+ Property { name: "lyrics"; type: "QVariant" }
+ Property { name: "mood"; type: "QVariant" }
+ Property { name: "trackNumber"; type: "QVariant" }
+ Property { name: "trackCount"; type: "QVariant" }
+ Property { name: "coverArtUrlSmall"; type: "QVariant" }
+ Property { name: "coverArtUrlLarge"; type: "QVariant" }
+ Property { name: "resolution"; type: "QVariant" }
+ Property { name: "pixelAspectRatio"; type: "QVariant" }
+ Property { name: "videoFrameRate"; type: "QVariant" }
+ Property { name: "videoBitRate"; type: "QVariant" }
+ Property { name: "videoCodec"; type: "QVariant" }
+ Property { name: "posterUrl"; type: "QVariant" }
+ Property { name: "chapterNumber"; type: "QVariant" }
+ Property { name: "director"; type: "QVariant" }
+ Property { name: "leadPerformer"; type: "QVariant" }
+ Property { name: "writer"; type: "QVariant" }
+ Property { name: "cameraManufacturer"; type: "QVariant" }
+ Property { name: "cameraModel"; type: "QVariant" }
+ Property { name: "event"; type: "QVariant" }
+ Property { name: "subject"; type: "QVariant" }
+ Property { name: "orientation"; type: "QVariant" }
+ Property { name: "exposureTime"; type: "QVariant" }
+ Property { name: "fNumber"; type: "QVariant" }
+ Property { name: "exposureProgram"; type: "QVariant" }
+ Property { name: "isoSpeedRatings"; type: "QVariant" }
+ Property { name: "exposureBiasValue"; type: "QVariant" }
+ Property { name: "dateTimeOriginal"; type: "QVariant" }
+ Property { name: "dateTimeDigitized"; type: "QVariant" }
+ Property { name: "subjectDistance"; type: "QVariant" }
+ Property { name: "meteringMode"; type: "QVariant" }
+ Property { name: "lightSource"; type: "QVariant" }
+ Property { name: "flash"; type: "QVariant" }
+ Property { name: "focalLength"; type: "QVariant" }
+ Property { name: "exposureMode"; type: "QVariant" }
+ Property { name: "whiteBalance"; type: "QVariant" }
+ Property { name: "digitalZoomRatio"; type: "QVariant" }
+ Property { name: "focalLengthIn35mmFilm"; type: "QVariant" }
+ Property { name: "sceneCaptureType"; type: "QVariant" }
+ Property { name: "gainControl"; type: "QVariant" }
+ Property { name: "contrast"; type: "QVariant" }
+ Property { name: "saturation"; type: "QVariant" }
+ Property { name: "sharpness"; type: "QVariant" }
+ Property { name: "deviceSettingDescription"; type: "QVariant" }
+ Property { name: "gpsLatitude"; type: "QVariant" }
+ Property { name: "gpsLongitude"; type: "QVariant" }
+ Property { name: "gpsAltitude"; type: "QVariant" }
+ Property { name: "gpsTimeStamp"; type: "QVariant" }
+ Property { name: "gpsSatellites"; type: "QVariant" }
+ Property { name: "gpsStatus"; type: "QVariant" }
+ Property { name: "gpsDOP"; type: "QVariant" }
+ Property { name: "gpsSpeed"; type: "QVariant" }
+ Property { name: "gpsTrack"; type: "QVariant" }
+ Property { name: "gpsTrackRef"; type: "QVariant" }
+ Property { name: "gpsImgDirection"; type: "QVariant" }
+ Property { name: "gpsImgDirectionRef"; type: "QVariant" }
+ Property { name: "gpsMapDatum"; type: "QVariant" }
+ Property { name: "gpsProcessingMethod"; type: "QVariant" }
+ Property { name: "gpsAreaInformation"; type: "QVariant" }
+ Signal { name: "metaDataChanged" }
+ }
+ Component {
+ name: "QDeclarativeMultimediaGlobal"
+ prototype: "QObject"
+ exports: ["QtMultimedia/QtMultimedia 5.4"]
+ isCreatable: false
+ isSingleton: true
+ exportMetaObjectRevisions: [0]
+ Property { name: "defaultCamera"; type: "QJSValue"; isReadonly: true }
+ Property { name: "availableCameras"; type: "QJSValue"; isReadonly: true }
+ }
+ Component {
name: "QDeclarativeRadio"
prototype: "QObject"
exports: ["QtMultimedia/Radio 5.0"]
@@ -1223,6 +1441,7 @@ Module {
Property { name: "source"; type: "QObject"; isPointer: true }
Property { name: "fillMode"; type: "FillMode" }
Property { name: "orientation"; type: "int" }
+ Property { name: "autoOrientation"; revision: 2; type: "bool" }
Property { name: "sourceRect"; type: "QRectF"; isReadonly: true }
Property { name: "contentRect"; type: "QRectF"; isReadonly: true }
Property { name: "filters"; isList: true; isReadonly: true }
@@ -1301,8 +1520,11 @@ Module {
Component {
name: "QSoundEffect"
prototype: "QObject"
- exports: ["QtMultimedia/SoundEffect 5.0"]
- exportMetaObjectRevisions: [0]
+ exports: [
+ "QtMultimedia/SoundEffect 5.0",
+ "QtMultimedia/SoundEffect 5.3"
+ ]
+ exportMetaObjectRevisions: [0, 0]
Enum {
name: "Loop"
values: {
diff --git a/src/imports/multimedia/qdeclarativecamerarecorder_p.h b/src/imports/multimedia/qdeclarativecamerarecorder_p.h
index 47482fd81..22d49d2e6 100644
--- a/src/imports/multimedia/qdeclarativecamerarecorder_p.h
+++ b/src/imports/multimedia/qdeclarativecamerarecorder_p.h
@@ -83,7 +83,7 @@ class QDeclarativeCameraRecorder : public QObject
Q_PROPERTY(QString actualLocation READ actualLocation NOTIFY actualLocationChanged)
Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged)
Q_PROPERTY(QString errorString READ errorString NOTIFY error)
- Q_PROPERTY(QString errorCode READ errorCode NOTIFY error)
+ Q_PROPERTY(Error errorCode READ errorCode NOTIFY error)
public:
enum RecorderState
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
diff --git a/src/imports/multimedia/qdeclarativemultimediaglobal_p.h b/src/imports/multimedia/qdeclarativemultimediaglobal_p.h
index 1fc138cff..c293e5d04 100644
--- a/src/imports/multimedia/qdeclarativemultimediaglobal_p.h
+++ b/src/imports/multimedia/qdeclarativemultimediaglobal_p.h
@@ -46,12 +46,32 @@
//
#include <QtQml/qqml.h>
+#include <QtQml/qjsvalue.h>
QT_BEGIN_NAMESPACE
-namespace QDeclarativeMultimedia {
- QJSValue initGlobalObject(QQmlEngine *, QJSEngine *);
-}
+class QDeclarativeMultimediaGlobal : public QObject
+{
+ Q_OBJECT
+
+ Q_PROPERTY(QJSValue defaultCamera READ defaultCamera NOTIFY defaultCameraChanged)
+ Q_PROPERTY(QJSValue availableCameras READ availableCameras NOTIFY availableCamerasChanged)
+
+public:
+ explicit QDeclarativeMultimediaGlobal(QJSEngine *engine, QObject *parent = 0);
+
+ QJSValue defaultCamera() const;
+ QJSValue availableCameras() const;
+
+Q_SIGNALS:
+ // Unused at the moment. QCameraInfo doesn't notify when cameras are added or removed,
+ // but it might change in the future.
+ void defaultCameraChanged();
+ void availableCamerasChanged();
+
+private:
+ QJSEngine *m_engine;
+};
QT_END_NAMESPACE
diff --git a/src/imports/multimedia/qdeclarativetorch.cpp b/src/imports/multimedia/qdeclarativetorch.cpp
index afbe64dd2..5a0b12081 100644
--- a/src/imports/multimedia/qdeclarativetorch.cpp
+++ b/src/imports/multimedia/qdeclarativetorch.cpp
@@ -74,7 +74,7 @@ QDeclarativeTorch::QDeclarativeTorch(QObject *parent)
m_flash = service ? service->requestControl<QCameraFlashControl*>() : 0;
if (m_exposure)
- connect(m_exposure, SIGNAL(valueChanged(int)), SLOT(parameterChanged(int)));
+ connect(m_exposure, SIGNAL(actualValueChanged(int)), SLOT(parameterChanged(int)));
// XXX There's no signal for flash mode changed
}