summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/multimedia/qmediaresourcepolicy_p.cpp8
-rw-r--r--src/multimedia/qmediaresourcepolicy_p.h6
-rw-r--r--src/multimedia/qmediaresourceset_p.cpp5
-rw-r--r--src/multimedia/qmediaresourceset_p.h2
-rw-r--r--src/plugins/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp2
5 files changed, 16 insertions, 7 deletions
diff --git a/src/multimedia/qmediaresourcepolicy_p.cpp b/src/multimedia/qmediaresourcepolicy_p.cpp
index 630870c05..0262c0f85 100644
--- a/src/multimedia/qmediaresourcepolicy_p.cpp
+++ b/src/multimedia/qmediaresourcepolicy_p.cpp
@@ -86,9 +86,10 @@ QObject* QMediaResourcePolicy::createResourceSet(const QString& interfaceId)
QMediaResourceSetFactoryInterface *factory =
qobject_cast<QMediaResourceSetFactoryInterface*>(resourcePolicyLoader()
->instance(QLatin1String("default")));
- if (!factory)
- return 0;
- QObject* obj = factory->create(interfaceId);
+ QObject* obj = 0;
+ if (factory)
+ obj = factory->create(interfaceId);
+
if (!obj) {
if (interfaceId == QLatin1String(QMediaPlayerResourceSetInterface_iid)) {
obj = new QDummyMediaPlayerResourceSet(dummyRoot());
@@ -107,6 +108,7 @@ void QMediaResourcePolicy::destroyResourceSet(QObject* resourceSet)
QMediaResourceSetFactoryInterface *factory =
qobject_cast<QMediaResourceSetFactoryInterface*>(resourcePolicyLoader()
->instance(QLatin1String("default")));
+ Q_ASSERT(factory);
if (!factory)
return;
return factory->destroy(resourceSet);
diff --git a/src/multimedia/qmediaresourcepolicy_p.h b/src/multimedia/qmediaresourcepolicy_p.h
index c21d36f47..7e9dd03d5 100644
--- a/src/multimedia/qmediaresourcepolicy_p.h
+++ b/src/multimedia/qmediaresourcepolicy_p.h
@@ -55,16 +55,16 @@ class Q_MULTIMEDIA_EXPORT QMediaResourcePolicy
public:
//a dummy object will always be provided if the interfaceId is not supported
template<typename T>
- static T* createResourceSet(const QString& interfaceId);
+ static T* createResourceSet();
static void destroyResourceSet(QObject* resourceSet);
private:
static QObject* createResourceSet(const QString& interfaceId);
};
template<typename T>
-T* QMediaResourcePolicy::createResourceSet(const QString& interfaceId)
+T* QMediaResourcePolicy::createResourceSet()
{
- return qobject_cast<T*>(QMediaResourcePolicy::createResourceSet(interfaceId));
+ return qobject_cast<T*>(QMediaResourcePolicy::createResourceSet(T::iid()));
}
QT_END_NAMESPACE
diff --git a/src/multimedia/qmediaresourceset_p.cpp b/src/multimedia/qmediaresourceset_p.cpp
index 97aa34d6e..a440c82f5 100644
--- a/src/multimedia/qmediaresourceset_p.cpp
+++ b/src/multimedia/qmediaresourceset_p.cpp
@@ -48,4 +48,9 @@ QMediaPlayerResourceSetInterface::QMediaPlayerResourceSetInterface(QObject *pare
{
}
+QString QMediaPlayerResourceSetInterface::iid()
+{
+ return QString(QMediaPlayerResourceSetInterface_iid);
+}
+
QT_END_NAMESPACE
diff --git a/src/multimedia/qmediaresourceset_p.h b/src/multimedia/qmediaresourceset_p.h
index c58320c27..5070b9499 100644
--- a/src/multimedia/qmediaresourceset_p.h
+++ b/src/multimedia/qmediaresourceset_p.h
@@ -65,6 +65,8 @@ public:
virtual void release() = 0;
virtual void setVideoEnabled(bool enabled) = 0;
+ static QString iid();
+
Q_SIGNALS:
void resourcesGranted();
void resourcesLost();
diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp b/src/plugins/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp
index 2aee1e387..0666ab4fa 100644
--- a/src/plugins/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp
+++ b/src/plugins/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp
@@ -78,7 +78,7 @@ QGstreamerPlayerControl::QGstreamerPlayerControl(QGstreamerPlayerSession *sessio
m_fifoFd[0] = -1;
m_fifoFd[1] = -1;
- m_resources = QMediaResourcePolicy::createResourceSet<QMediaPlayerResourceSetInterface>(QMediaPlayerResourceSetInterface_iid);
+ m_resources = QMediaResourcePolicy::createResourceSet<QMediaPlayerResourceSetInterface>();
Q_ASSERT(m_resources);
connect(m_session, SIGNAL(positionChanged(qint64)),