qtmobility/src/multimedia/qmediaservice.h
changeset 14 6fbed849b4f4
parent 11 06b8e2af4411
--- 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 <typename T> inline T control() const {
-        if (QObject *object = control(qmediacontrol_iid<T>())) {
-            return qobject_cast<T>(object);
+    template <typename T> inline T requestControl() {
+        if (QMediaControl *control = requestControl(qmediacontrol_iid<T>())) {
+            if (T typedControl = qobject_cast<T>(control))
+                return typedControl;
+            releaseControl(control);
         }
         return 0;
     }
 #endif
 
+    virtual void releaseControl(QMediaControl *control) = 0;
+
 protected:
     QMediaService(QObject* parent);
     QMediaService(QMediaServicePrivate &dd, QObject *parent);