diff -r 06b8e2af4411 -r 6fbed849b4f4 qtmobility/src/multimedia/qmediaservice.h --- a/qtmobility/src/multimedia/qmediaservice.h Fri Jun 11 14:26:25 2010 +0300 +++ b/qtmobility/src/multimedia/qmediaservice.h Wed Jun 23 19:08:38 2010 +0300 @@ -51,24 +51,28 @@ QT_BEGIN_NAMESPACE class QMediaServicePrivate; -class Q_MEDIA_EXPORT QMediaService : public QObject +class Q_MULTIMEDIA_EXPORT QMediaService : public QObject { Q_OBJECT public: ~QMediaService(); - virtual QMediaControl* control(const char *name) const = 0; + virtual QMediaControl* requestControl(const char *name) = 0; #ifndef QT_NO_MEMBER_TEMPLATES - template inline T control() const { - if (QObject *object = control(qmediacontrol_iid())) { - return qobject_cast(object); + template inline T requestControl() { + if (QMediaControl *control = requestControl(qmediacontrol_iid())) { + if (T typedControl = qobject_cast(control)) + return typedControl; + releaseControl(control); } return 0; } #endif + virtual void releaseControl(QMediaControl *control) = 0; + protected: QMediaService(QObject* parent); QMediaService(QMediaServicePrivate &dd, QObject *parent);