Removed QMediaServiceProvider parameter from media objects constructors.

QMediaServiceProvider should be removed from the public API,
to provide media objects with a custom media service.

A protected QMediaPlayer/QCamera/QRadioTuner/etc constructor
with QMediaService* parameter is a cleaner and more
flexible solution.

Change-Id: I335cce4bbebe0e548c3df338f206e7be7c93c3dd
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
This commit is contained in:
Dmytro Poplavskiy
2012-01-19 10:01:02 +10:00
committed by Qt by Nokia
parent adb2bd2cd4
commit a78a95ccd4
26 changed files with 309 additions and 371 deletions

View File

@@ -55,6 +55,7 @@
#include <QtCore/qbasictimer.h>
#include <qmediaplayer.h>
#include <qmediaserviceprovider.h>
QT_BEGIN_HEADER

View File

@@ -41,6 +41,7 @@
#include "qvideosurfaceoutput_p.h"
#include "qmediaobject_p.h"
#include "qmediaserviceprovider.h"
#include <qcamera.h>
#include <qcameracontrol.h>
@@ -338,11 +339,13 @@ void QCameraPrivate::_q_updateLockStatus(QCamera::LockType type, QCamera::LockSt
Construct a QCamera from service \a provider and \a parent.
*/
QCamera::QCamera(QObject *parent, QMediaServiceProvider *provider):
QMediaObject(*new QCameraPrivate, parent, provider->requestService(Q_MEDIASERVICE_CAMERA))
QCamera::QCamera(QObject *parent):
QMediaObject(*new QCameraPrivate,
parent,
QMediaServiceProvider::defaultServiceProvider()->requestService(Q_MEDIASERVICE_CAMERA))
{
Q_D(QCamera);
d->provider = provider;
d->provider = QMediaServiceProvider::defaultServiceProvider();
d->initControls();
d->cameraExposure = new QCameraExposure(this);
d->cameraFocus = new QCameraFocus(this);

View File

@@ -56,7 +56,6 @@
#include <qcamerafocus.h>
#include <qcameraimageprocessing.h>
#include <qmediaserviceprovider.h>
#include <qmediaenumdebug.h>
QT_BEGIN_HEADER
@@ -144,7 +143,7 @@ public:
};
Q_DECLARE_FLAGS(LockTypes, LockType)
QCamera(QObject *parent = 0, QMediaServiceProvider *provider = QMediaServiceProvider::defaultServiceProvider());
QCamera(QObject *parent = 0);
QCamera(const QByteArray& device, QObject *parent = 0);
~QCamera();

View File

@@ -238,8 +238,9 @@ void QMediaPlayerPrivate::_q_playlistDestroyed()
control->setMedia(QMediaContent(), 0);
}
static QMediaService *playerService(QMediaPlayer::Flags flags, QMediaServiceProvider *provider)
static QMediaService *playerService(QMediaPlayer::Flags flags)
{
QMediaServiceProvider *provider = QMediaServiceProvider::defaultServiceProvider();
if (flags) {
QMediaServiceProviderHint::Features features = 0;
if (flags & QMediaPlayer::LowLatency)
@@ -259,21 +260,18 @@ static QMediaService *playerService(QMediaPlayer::Flags flags, QMediaServiceProv
/*!
Construct a QMediaPlayer that uses the playback service from \a provider,
Construct a QMediaPlayer instance
parented to \a parent and with \a flags.
If a playback service is not specified the system default will be used.
*/
QMediaPlayer::QMediaPlayer(QObject *parent, QMediaPlayer::Flags flags, QMediaServiceProvider *provider):
QMediaPlayer::QMediaPlayer(QObject *parent, QMediaPlayer::Flags flags):
QMediaObject(*new QMediaPlayerPrivate,
parent,
playerService(flags,provider))
playerService(flags))
{
Q_D(QMediaPlayer);
d->provider = provider;
d->provider = QMediaServiceProvider::defaultServiceProvider();
if (d->service == 0) {
d->error = ServiceMissingError;
} else {
@@ -322,9 +320,9 @@ QMediaPlayer::~QMediaPlayer()
if (d->service) {
if (d->control)
d->service->releaseControl(d->control);
}
d->provider->releaseService(d->service);
d->provider->releaseService(d->service);
}
}
QMediaContent QMediaPlayer::media() const

View File

@@ -42,8 +42,6 @@
#ifndef QMEDIAPLAYER_H
#define QMEDIAPLAYER_H
#include "qmediaserviceprovider.h"
#include "qmediaobject.h"
#include "qmediacontent.h"
#include "qmediaenumdebug.h"
@@ -123,7 +121,7 @@ public:
ServiceMissingError
};
QMediaPlayer(QObject *parent = 0, Flags flags = 0, QMediaServiceProvider *provider = QMediaServiceProvider::defaultServiceProvider());
QMediaPlayer(QObject *parent = 0, Flags flags = 0);
~QMediaPlayer();
static QtMultimedia::SupportEstimate hasSupport(const QString &mimeType,

View File

@@ -613,13 +613,11 @@ QString QMediaServiceProvider::deviceDescription(const QByteArray &serviceType,
return QString();
}
#ifdef QT_BUILD_INTERNAL
static QMediaServiceProvider *qt_defaultMediaServiceProvider = 0;
/*!
Sets a media service \a provider as the default.
It's useful for unit tests to provide mock service.
\internal
*/
@@ -628,20 +626,15 @@ void QMediaServiceProvider::setDefaultServiceProvider(QMediaServiceProvider *pro
qt_defaultMediaServiceProvider = provider;
}
#endif
/*!
Returns a default provider of media services.
*/
QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
{
#ifdef QT_BUILD_INTERNAL
return qt_defaultMediaServiceProvider != 0
? qt_defaultMediaServiceProvider
: static_cast<QMediaServiceProvider *>(pluginProvider());
#else
return pluginProvider();
#endif
}
/*!

View File

@@ -120,10 +120,7 @@ public:
virtual QString deviceDescription(const QByteArray &serviceType, const QByteArray &device);
static QMediaServiceProvider* defaultServiceProvider();
#ifdef QT_BUILD_INTERNAL
static void setDefaultServiceProvider(QMediaServiceProvider *provider);
#endif
};
/*!

View File

@@ -43,6 +43,7 @@
#include "qmediaservice.h"
#include "qmediaobject_p.h"
#include "qradiodatacontrol.h"
#include "qmediaserviceprovider.h"
#include <QPair>
@@ -93,12 +94,14 @@ public:
The \a parent is passed to QMediaObject.
*/
QRadioData::QRadioData(QObject *parent, QMediaServiceProvider* provider):
QMediaObject(*new QRadioDataPrivate, parent, provider->requestService(Q_MEDIASERVICE_RADIO))
QRadioData::QRadioData(QObject *parent):
QMediaObject(*new QRadioDataPrivate,
parent,
QMediaServiceProvider::defaultServiceProvider()->requestService(Q_MEDIASERVICE_RADIO))
{
Q_D(QRadioData);
d->provider = provider;
d->provider = QMediaServiceProvider::defaultServiceProvider();
if (d->service != 0) {
d->control = qobject_cast<QRadioDataControl*>(d->service->requestControl(QRadioDataControl_iid));

View File

@@ -45,7 +45,6 @@
#include <QtCore/qobject.h>
#include "qmediaobject.h"
#include "qmediaserviceprovider.h"
#include <qmediaenumdebug.h>
#include <QPair>
@@ -88,7 +87,7 @@ public:
College
};
QRadioData(QObject *parent = 0, QMediaServiceProvider *provider = QMediaServiceProvider::defaultServiceProvider());
QRadioData(QObject *parent = 0);
~QRadioData();
bool isAvailable() const;

View File

@@ -43,6 +43,7 @@
#include "qmediaservice.h"
#include "qmediaobject_p.h"
#include "qradiotunercontrol.h"
#include "qmediaserviceprovider.h"
#include <QPair>
@@ -106,12 +107,14 @@ public:
The \a parent is passed to QMediaObject.
*/
QRadioTuner::QRadioTuner(QObject *parent, QMediaServiceProvider* provider):
QMediaObject(*new QRadioTunerPrivate, parent, provider->requestService(Q_MEDIASERVICE_RADIO))
QRadioTuner::QRadioTuner(QObject *parent):
QMediaObject(*new QRadioTunerPrivate,
parent,
QMediaServiceProvider::defaultServiceProvider()->requestService(Q_MEDIASERVICE_RADIO))
{
Q_D(QRadioTuner);
d->provider = provider;
d->provider = QMediaServiceProvider::defaultServiceProvider();
if (d->service != 0) {
d->control = qobject_cast<QRadioTunerControl*>(d->service->requestControl(QRadioTunerControl_iid));

View File

@@ -45,7 +45,6 @@
#include <QtCore/qobject.h>
#include "qmediaobject.h"
#include "qmediaserviceprovider.h"
#include <qmediaenumdebug.h>
#include <QPair>
@@ -83,7 +82,7 @@ public:
enum StereoMode { ForceStereo, ForceMono, Auto };
enum SearchMode { SearchFast, SearchGetStationId };
QRadioTuner(QObject *parent = 0, QMediaServiceProvider *provider = QMediaServiceProvider::defaultServiceProvider());
QRadioTuner(QObject *parent = 0);
~QRadioTuner();
bool isAvailable() const;

View File

@@ -118,11 +118,11 @@ public:
The \a parent is passed to QMediaObject.
*/
QAudioRecorder::QAudioRecorder(QObject *parent, QMediaServiceProvider *serviceProvider):
QAudioRecorder::QAudioRecorder(QObject *parent):
QMediaRecorder(*new QAudioRecorderPrivate, 0, parent)
{
Q_D(QAudioRecorder);
d->provider = serviceProvider;
d->provider = QMediaServiceProvider::defaultServiceProvider();
QMediaService *service = d->provider->requestService(Q_MEDIASERVICE_AUDIOSOURCE);
setMediaObject(new QAudioRecorderObject(this, service));

View File

@@ -68,7 +68,7 @@ class Q_MULTIMEDIA_EXPORT QAudioRecorder : public QMediaRecorder
Q_OBJECT
Q_PROPERTY(QString audioInput READ audioInput WRITE setAudioInput NOTIFY audioInputChanged)
public:
QAudioRecorder(QObject *parent = 0, QMediaServiceProvider *serviceProvider = QMediaServiceProvider::defaultServiceProvider());
QAudioRecorder(QObject *parent = 0);
~QAudioRecorder();
QStringList audioInputs() const;

View File

@@ -43,7 +43,6 @@
#define QMEDIARECORDER_H
#include <qmediaobject.h>
#include <qmediaserviceprovider.h>
#include <qmediaencodersettings.h>
#include <qmediabindableinterface.h>
#include <qmediaenumdebug.h>

View File

@@ -53,8 +53,6 @@
#include <qmediaservice.h>
#include <qvideowidget.h>
#include <qmediaserviceprovider.h>
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE