diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro index d29ba729112c162b924ce357d40752750d712014..5a77e3413701a2db3354b8f152924f8d3d8733c4 100644 --- a/src/multimedia/multimedia.pro +++ b/src/multimedia/multimedia.pro @@ -19,6 +19,7 @@ load(qt_module_config) HEADERS += qtmultimediaversion.h + INCLUDEPATH *= . PRIVATE_HEADERS += \ @@ -27,6 +28,9 @@ PRIVATE_HEADERS += \ qmediapluginloader_p.h \ qmediaservice_p.h \ qmediaserviceprovider_p.h \ + qmediaresourcepolicyplugin_p.h \ + qmediaresourcepolicy_p.h \ + qmediaresourceset_p.h PUBLIC_HEADERS += \ qmediabindableinterface.h \ @@ -47,7 +51,10 @@ SOURCES += \ qmediaservice.cpp \ qmediaserviceprovider.cpp \ qmediatimerange.cpp \ - qtmedianamespace.cpp + qtmedianamespace.cpp \ + qmediaresourcepolicyplugin_p.cpp \ + qmediaresourcepolicy_p.cpp \ + qmediaresourceset_p.cpp include(audio/audio.pri) include(camera/camera.pri) diff --git a/src/multimedia/qmediaresourcepolicy_p.cpp b/src/multimedia/qmediaresourcepolicy_p.cpp new file mode 100644 index 0000000000000000000000000000000000000000..630870c05d53d9b93ecf5c5bc595a34ac3716028 --- /dev/null +++ b/src/multimedia/qmediaresourcepolicy_p.cpp @@ -0,0 +1,114 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qmediaresourcepolicy_p.h" +#include "qmediapluginloader_p.h" +#include "qmediaresourcepolicyplugin_p.h" +#include "qmediaresourceset_p.h" + +namespace { + class QDummyMediaPlayerResourceSet : public QMediaPlayerResourceSetInterface + { + public: + QDummyMediaPlayerResourceSet(QObject *parent) + : QMediaPlayerResourceSetInterface(parent) + { + } + + bool isVideoEnabled() const + { + return true; + } + + bool isGranted() const + { + return true; + } + + bool isAvailable() const + { + return true; + } + + void acquire() {} + void release() {} + void setVideoEnabled(bool) {} + }; +} + +QT_BEGIN_NAMESPACE + +Q_GLOBAL_STATIC_WITH_ARGS(QMediaPluginLoader, resourcePolicyLoader, + (QMediaResourceSetFactoryInterface_iid, QLatin1String("resourcepolicy"), Qt::CaseInsensitive)) + +Q_GLOBAL_STATIC(QObject, dummyRoot) + +QObject* QMediaResourcePolicy::createResourceSet(const QString& interfaceId) +{ + QMediaResourceSetFactoryInterface *factory = + qobject_cast<QMediaResourceSetFactoryInterface*>(resourcePolicyLoader() + ->instance(QLatin1String("default"))); + if (!factory) + return 0; + QObject* obj = factory->create(interfaceId); + if (!obj) { + if (interfaceId == QLatin1String(QMediaPlayerResourceSetInterface_iid)) { + obj = new QDummyMediaPlayerResourceSet(dummyRoot()); + } + } + Q_ASSERT(obj); + return obj; +} + +void QMediaResourcePolicy::destroyResourceSet(QObject* resourceSet) +{ + if (resourceSet->parent() == dummyRoot()) { + delete resourceSet; + return; + } + QMediaResourceSetFactoryInterface *factory = + qobject_cast<QMediaResourceSetFactoryInterface*>(resourcePolicyLoader() + ->instance(QLatin1String("default"))); + if (!factory) + return; + return factory->destroy(resourceSet); +} +QT_END_NAMESPACE diff --git a/src/multimedia/qmediaresourcepolicy_p.h b/src/multimedia/qmediaresourcepolicy_p.h new file mode 100644 index 0000000000000000000000000000000000000000..c21d36f47cf623dcda3a33c79d9718aa4290faf3 --- /dev/null +++ b/src/multimedia/qmediaresourcepolicy_p.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMEDIARESOURCEPOLICY_H +#define QMEDIARESOURCEPOLICY_H + +#include <QObject> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Multimedia) + +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 void destroyResourceSet(QObject* resourceSet); +private: + static QObject* createResourceSet(const QString& interfaceId); +}; + +template<typename T> +T* QMediaResourcePolicy::createResourceSet(const QString& interfaceId) +{ + return qobject_cast<T*>(QMediaResourcePolicy::createResourceSet(interfaceId)); +} + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QMEDIARESOURCEPOLICY_H diff --git a/src/multimedia/qmediaresourcepolicyplugin_p.cpp b/src/multimedia/qmediaresourcepolicyplugin_p.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e1a005ac75057983f7df7abc3d4723cc7bd49278 --- /dev/null +++ b/src/multimedia/qmediaresourcepolicyplugin_p.cpp @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qmediaresourcepolicyplugin_p.h" + +QT_BEGIN_NAMESPACE + +QMediaResourcePolicyPlugin::QMediaResourcePolicyPlugin(QObject *parent) + : QObject(parent) +{ +} + +QMediaResourcePolicyPlugin::~QMediaResourcePolicyPlugin() +{ +} + +QT_END_NAMESPACE diff --git a/src/multimedia/qmediaresourcepolicyplugin_p.h b/src/multimedia/qmediaresourcepolicyplugin_p.h new file mode 100644 index 0000000000000000000000000000000000000000..7e6d2e77defefc23b23ac8b59cf1d2c94f9f296e --- /dev/null +++ b/src/multimedia/qmediaresourcepolicyplugin_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QRESOURCEPOLICYPLUGIN_P_H +#define QRESOURCEPOLICYPLUGIN_P_H + +#include <QObject> +#include <qtmultimediadefs.h> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +QT_MODULE(Multimedia) + +struct Q_MULTIMEDIA_EXPORT QMediaResourceSetFactoryInterface +{ + virtual QObject* create(const QString& interfaceId) = 0; + virtual void destroy(QObject *resourceSet) = 0; +}; + +#define QMediaResourceSetFactoryInterface_iid \ + "org.qt-project.qt.mediaresourcesetfactory/5.0" +Q_DECLARE_INTERFACE(QMediaResourceSetFactoryInterface, QMediaResourceSetFactoryInterface_iid) + +class Q_MULTIMEDIA_EXPORT QMediaResourcePolicyPlugin : public QObject, public QMediaResourceSetFactoryInterface +{ + Q_OBJECT + Q_INTERFACES(QMediaResourceSetFactoryInterface) + +public: + QMediaResourcePolicyPlugin(QObject *parent = 0); + ~QMediaResourcePolicyPlugin(); +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QRESOURCEPOLICYPLUGIN_P_H diff --git a/src/multimedia/qmediaresourceset_p.cpp b/src/multimedia/qmediaresourceset_p.cpp new file mode 100644 index 0000000000000000000000000000000000000000..97aa34d6e878bc81037719448191937f4dbf5843 --- /dev/null +++ b/src/multimedia/qmediaresourceset_p.cpp @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qmediaresourceset_p.h" + +QT_BEGIN_NAMESPACE + +QMediaPlayerResourceSetInterface::QMediaPlayerResourceSetInterface(QObject *parent) + : QObject(parent) +{ +} + +QT_END_NAMESPACE diff --git a/src/plugins/gstreamer/mediaplayer/playerresourcepolicy.h b/src/multimedia/qmediaresourceset_p.h similarity index 69% rename from src/plugins/gstreamer/mediaplayer/playerresourcepolicy.h rename to src/multimedia/qmediaresourceset_p.h index 66a0ed931bd78c318b2bc0ef2cfcad5021a20b14..c58320c279f22b9aaf14193d5d8e0a7593fea27f 100644 --- a/src/plugins/gstreamer/mediaplayer/playerresourcepolicy.h +++ b/src/multimedia/qmediaresourceset_p.h @@ -39,52 +39,45 @@ ** ****************************************************************************/ -#ifndef PLAYERRESOURCEPOLICY_H -#define PLAYERRESOURCEPOLICY_H +#ifndef QMEDIARESOURCESET_P_H +#define QMEDIARESOURCESET_P_H +#include <QObject> +#include <qtmultimediadefs.h> -#include <QtCore/qobject.h> +QT_BEGIN_HEADER -namespace ResourcePolicy { -class ResourceSet; -}; +QT_BEGIN_NAMESPACE + +QT_MODULE(Multimedia) + +#define QMediaPlayerResourceSetInterface_iid \ + "org.qt-project.qt.mediaplayerresourceset/5.0" -class PlayerResourcePolicy : public QObject +class Q_MULTIMEDIA_EXPORT QMediaPlayerResourceSetInterface : public QObject { Q_OBJECT public: - PlayerResourcePolicy(QObject *parent = 0); - ~PlayerResourcePolicy(); + virtual bool isVideoEnabled() const = 0; + virtual bool isGranted() const = 0; + virtual bool isAvailable() const = 0; - bool isVideoEnabled() const; - bool isGranted() const; - bool isRequested() const; + virtual void acquire() = 0; + virtual void release() = 0; + virtual void setVideoEnabled(bool enabled) = 0; Q_SIGNALS: - void resourcesDenied(); void resourcesGranted(); void resourcesLost(); + void resourcesDenied(); + void resourcesReleased(); + void availabilityChanged(bool available); -public Q_SLOTS: - void acquire(); - void release(); - - void setVideoEnabled(bool enabled); - -private Q_SLOTS: - void handleResourcesGranted(); - void handleResourcesDenied(); - void handleResourcesLost(); +protected: + QMediaPlayerResourceSetInterface(QObject *parent = 0); +}; -private: - enum ResourceStatus { - Initial = 0, - RequestedResource, - GrantedResource - }; +QT_END_NAMESPACE - bool m_videoEnabled; - ResourcePolicy::ResourceSet *m_resourceSet; - ResourceStatus m_status; -}; +QT_END_HEADER -#endif +#endif // QMEDIARESOURCESET_P_H diff --git a/src/plugins/gstreamer/mediaplayer/mediaplayer.pri b/src/plugins/gstreamer/mediaplayer/mediaplayer.pri index 92cd7908666e41f827dccaf74757e01f995ec9fc..fcfbd063b96da36e489090bf8942bca4f8dad55d 100644 --- a/src/plugins/gstreamer/mediaplayer/mediaplayer.pri +++ b/src/plugins/gstreamer/mediaplayer/mediaplayer.pri @@ -7,15 +7,13 @@ HEADERS += \ $$PWD/qgstreamerplayerservice.h \ $$PWD/qgstreamerplayersession.h \ $$PWD/qgstreamerstreamscontrol.h \ - $$PWD/qgstreamermetadataprovider.h \ - $$PWD/playerresourcepolicy.h + $$PWD/qgstreamermetadataprovider.h SOURCES += \ $$PWD/qgstreamerplayercontrol.cpp \ $$PWD/qgstreamerplayerservice.cpp \ $$PWD/qgstreamerplayersession.cpp \ $$PWD/qgstreamerstreamscontrol.cpp \ - $$PWD/qgstreamermetadataprovider.cpp \ - $$PWD/playerresourcepolicy.cpp + $$PWD/qgstreamermetadataprovider.cpp diff --git a/src/plugins/gstreamer/mediaplayer/playerresourcepolicy.cpp b/src/plugins/gstreamer/mediaplayer/playerresourcepolicy.cpp deleted file mode 100644 index bd2431b7efe52e0fae55556eebc407cf2f0c90d8..0000000000000000000000000000000000000000 --- a/src/plugins/gstreamer/mediaplayer/playerresourcepolicy.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "playerresourcepolicy.h" - -//#define DEBUG_RESOURCE_POLICY -#include <QtCore/qdebug.h> - -#ifdef HAVE_RESOURCE_POLICY -#include <policy/resource.h> -#include <policy/resources.h> -#include <policy/resource-set.h> -#endif - -PlayerResourcePolicy::PlayerResourcePolicy(QObject *parent) : - QObject(parent), - m_videoEnabled(true), - m_resourceSet(0), - m_status(PlayerResourcePolicy::Initial) -{ -#ifdef HAVE_RESOURCE_POLICY - m_resourceSet = new ResourcePolicy::ResourceSet("player", this); - m_resourceSet->setAlwaysReply(); - - ResourcePolicy::AudioResource *audioResource = new ResourcePolicy::AudioResource("player"); - audioResource->setProcessID(QCoreApplication::applicationPid()); - audioResource->setStreamTag("media.name", "*"); - m_resourceSet->addResourceObject(audioResource); - - m_resourceSet->addResource(ResourcePolicy::VideoPlaybackType); - m_resourceSet->update(); - - connect(m_resourceSet, SIGNAL(resourcesGranted(const QList<ResourcePolicy::ResourceType>)), - this, SLOT(handleResourcesGranted())); - connect(m_resourceSet, SIGNAL(resourcesDenied()), - this, SLOT(handleResourcesDenied())); - connect(m_resourceSet, SIGNAL(lostResources()), - this, SLOT(handleResourcesLost())); - connect(m_resourceSet, SIGNAL(resourcesReleasedByManager()), - this, SLOT(handleResourcesLost())); -#endif -} - -PlayerResourcePolicy::~PlayerResourcePolicy() -{ -} - -bool PlayerResourcePolicy::isVideoEnabled() const -{ - return m_videoEnabled; -} - -void PlayerResourcePolicy::setVideoEnabled(bool enabled) -{ - if (m_videoEnabled != enabled) { - m_videoEnabled = enabled; - -#ifdef HAVE_RESOURCE_POLICY - if (enabled) - m_resourceSet->addResource(ResourcePolicy::VideoPlaybackType); - else - m_resourceSet->deleteResource(ResourcePolicy::VideoPlaybackType); - - m_resourceSet->update(); -#endif - } -} - -void PlayerResourcePolicy::acquire() -{ -#ifdef HAVE_RESOURCE_POLICY - -#ifdef DEBUG_RESOURCE_POLICY - qDebug() << Q_FUNC_INFO << "Acquire resource"; -#endif - m_status = RequestedResource; - m_resourceSet->acquire(); -#else - m_status = GrantedResource; -#endif -} - -void PlayerResourcePolicy::release() -{ -#ifdef HAVE_RESOURCE_POLICY - -#ifdef DEBUG_RESOURCE_POLICY - qDebug() << Q_FUNC_INFO << "Release resource"; -#endif - - m_resourceSet->release(); -#endif - m_status = Initial; - -} - -bool PlayerResourcePolicy::isGranted() const -{ - return m_status == GrantedResource; -} - -bool PlayerResourcePolicy::isRequested() const -{ - return m_status == RequestedResource; -} - -void PlayerResourcePolicy::handleResourcesGranted() -{ - m_status = GrantedResource; -#ifdef DEBUG_RESOURCE_POLICY - qDebug() << Q_FUNC_INFO << "Resource granted"; -#endif - emit resourcesGranted(); -} - -void PlayerResourcePolicy::handleResourcesDenied() -{ - m_status = Initial; -#ifdef DEBUG_RESOURCE_POLICY - qDebug() << Q_FUNC_INFO << "Resource denied"; -#endif - emit resourcesDenied(); -} - -void PlayerResourcePolicy::handleResourcesLost() -{ -#ifdef DEBUG_RESOURCE_POLICY - qDebug() << Q_FUNC_INFO << "Resource lost"; -#endif - if (m_status != Initial) { - m_status = Initial; - emit resourcesLost(); - } - -#ifdef HAVE_RESOURCE_POLICY - m_resourceSet->release(); -#endif -} diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp b/src/plugins/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp index 19e261a163188e210883684eeaa04b0f7eb2277f..19476b4976aef42ebead7e299283103013fa219c 100644 --- a/src/plugins/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp +++ b/src/plugins/gstreamer/mediaplayer/qgstreamerplayercontrol.cpp @@ -41,10 +41,10 @@ #include "qgstreamerplayercontrol.h" #include "qgstreamerplayersession.h" -#include "playerresourcepolicy.h" #include <private/qmediaplaylistnavigator_p.h> - +#include <private/qmediaresourcepolicy_p.h> +#include <private/qmediaresourceset_p.h> #include <QtCore/qdir.h> #include <QtCore/qsocketnotifier.h> @@ -78,7 +78,8 @@ QGstreamerPlayerControl::QGstreamerPlayerControl(QGstreamerPlayerSession *sessio m_fifoFd[0] = -1; m_fifoFd[1] = -1; - m_resources = new PlayerResourcePolicy(this); + m_resources = QMediaResourcePolicy::createResourceSet<QMediaPlayerResourceSetInterface>(QMediaPlayerResourceSetInterface_iid); + Q_ASSERT(m_resources); connect(m_session, SIGNAL(positionChanged(qint64)), this, SLOT(updatePosition(qint64))); @@ -116,6 +117,8 @@ QGstreamerPlayerControl::QGstreamerPlayerControl(QGstreamerPlayerSession *sessio QGstreamerPlayerControl::~QGstreamerPlayerControl() { + QMediaResourcePolicy::destroyResourceSet(m_resources); + if (m_fifoFd[0] >= 0) { ::close(m_fifoFd[0]); ::close(m_fifoFd[1]); @@ -243,7 +246,7 @@ void QGstreamerPlayerControl::playOrPause(QMediaPlayer::State newState) m_seekToStartPending = true; } - if (!m_resources->isGranted() && !m_resources->isRequested()) + if (!m_resources->isGranted()) m_resources->acquire(); if (m_resources->isGranted()) { @@ -350,7 +353,7 @@ void QGstreamerPlayerControl::setMedia(const QMediaContent &content, QIODevice * m_session->showPrerollFrames(false); // do not show prerolled frames until pause() or play() explicitly called if (!content.isNull() || stream) { - if (!m_resources->isRequested() && !m_resources->isGranted()) + if (!m_resources->isGranted()) m_resources->acquire(); if (!m_resources->isGranted()) { diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamerplayercontrol.h b/src/plugins/gstreamer/mediaplayer/qgstreamerplayercontrol.h index 5d976dbb4a58deffd1110bde4fc8734f5f3007a0..b575d1d1b88645fc66fbd5b6f8fbc24e9e5f2ef3 100644 --- a/src/plugins/gstreamer/mediaplayer/qgstreamerplayercontrol.h +++ b/src/plugins/gstreamer/mediaplayer/qgstreamerplayercontrol.h @@ -50,7 +50,7 @@ #include <limits.h> -class PlayerResourcePolicy; +class QMediaPlayerResourceSetInterface; QT_BEGIN_NAMESPACE class QMediaPlaylist; @@ -151,7 +151,7 @@ private: int m_bufferOffset; char m_buffer[PIPE_BUF]; - PlayerResourcePolicy *m_resources; + QMediaPlayerResourceSetInterface *m_resources; }; QT_END_NAMESPACE