From a45d35c07f9eed27fc286ab5fbc00789d45259b5 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 25 Jan 2013 13:39:28 -0800 Subject: Add virtual destructors to two classes with other virtuals Classes with virtuals are used polymorphically (why have virtuals otherwise?), so they need virtual destructors to be deleted properly. Unless they are never deleted using objects of those two classes -- but why have the interface in the first place if that's the case? This is binary incompatible change. It was agreed upon in the mailing list. Change-Id: I697e4bd53251452a0e6b0c09edd08c4835f90cbd Discussed-on: http://lists.qt-project.org/pipermail/development/2012-December/008908.html Reviewed-by: Lars Knoll --- src/multimedia/audio/qaudiosystemplugin.cpp | 4 ++++ src/multimedia/audio/qaudiosystemplugin.h | 1 + src/multimedia/qmediaserviceprovider.cpp | 4 ++++ src/multimedia/qmediaserviceproviderplugin.h | 1 + 4 files changed, 10 insertions(+) diff --git a/src/multimedia/audio/qaudiosystemplugin.cpp b/src/multimedia/audio/qaudiosystemplugin.cpp index 85fa855b1..0262026c1 100644 --- a/src/multimedia/audio/qaudiosystemplugin.cpp +++ b/src/multimedia/audio/qaudiosystemplugin.cpp @@ -44,6 +44,10 @@ QT_BEGIN_NAMESPACE +QAudioSystemFactoryInterface::~QAudioSystemFactoryInterface() +{ +} + /*! \class QAudioSystemPlugin \brief The QAudioSystemPlugin class provides an abstract base for audio plugins. diff --git a/src/multimedia/audio/qaudiosystemplugin.h b/src/multimedia/audio/qaudiosystemplugin.h index 7a8a4606a..b2e1dd17b 100644 --- a/src/multimedia/audio/qaudiosystemplugin.h +++ b/src/multimedia/audio/qaudiosystemplugin.h @@ -66,6 +66,7 @@ struct Q_MULTIMEDIA_EXPORT QAudioSystemFactoryInterface virtual QAbstractAudioInput* createInput(const QByteArray& device) = 0; virtual QAbstractAudioOutput* createOutput(const QByteArray& device) = 0; virtual QAbstractAudioDeviceInfo* createDeviceInfo(const QByteArray& device, QAudio::Mode mode) = 0; + virtual ~QAudioSystemFactoryInterface(); }; #define QAudioSystemFactoryInterface_iid \ diff --git a/src/multimedia/qmediaserviceprovider.cpp b/src/multimedia/qmediaserviceprovider.cpp index 8be091df4..09dff9d86 100644 --- a/src/multimedia/qmediaserviceprovider.cpp +++ b/src/multimedia/qmediaserviceprovider.cpp @@ -50,6 +50,10 @@ QT_BEGIN_NAMESPACE +QMediaServiceProviderFactoryInterface::~QMediaServiceProviderFactoryInterface() +{ +} + class QMediaServiceProviderHintPrivate : public QSharedData { public: diff --git a/src/multimedia/qmediaserviceproviderplugin.h b/src/multimedia/qmediaserviceproviderplugin.h index 870ee5966..9a7ff1d1e 100644 --- a/src/multimedia/qmediaserviceproviderplugin.h +++ b/src/multimedia/qmediaserviceproviderplugin.h @@ -112,6 +112,7 @@ struct Q_MULTIMEDIA_EXPORT QMediaServiceProviderFactoryInterface { virtual QMediaService* create(QString const& key) = 0; virtual void release(QMediaService *service) = 0; + virtual ~QMediaServiceProviderFactoryInterface(); }; #define QMediaServiceProviderFactoryInterface_iid \ -- cgit v1.2.3