[DirectShow] Fix potention undefined behavior on destruction

The exact warning is:
> deleting object of polymorphic class type which has non-virtual
  destructor might cause undefined behavior

Change-Id: I8f259def3f1f7f776fb31ace9dfcc7145426f5c0
Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
This commit is contained in:
Konstantin Ritt
2015-04-11 19:33:20 +04:00
parent e88da21a20
commit 740f16ac60
4 changed files with 8 additions and 3 deletions

View File

@@ -49,7 +49,7 @@ class DirectShowIOSource
{ {
public: public:
DirectShowIOSource(DirectShowEventLoop *loop); DirectShowIOSource(DirectShowEventLoop *loop);
~DirectShowIOSource(); virtual ~DirectShowIOSource();
void setDevice(QIODevice *device); void setDevice(QIODevice *device);
void setAllocator(IMemAllocator *allocator); void setAllocator(IMemAllocator *allocator);

View File

@@ -41,7 +41,7 @@ class DirectShowMediaTypeEnum : public IEnumMediaTypes
{ {
public: public:
DirectShowMediaTypeEnum(DirectShowMediaTypeList *list, int token, int index = 0); DirectShowMediaTypeEnum(DirectShowMediaTypeList *list, int token, int index = 0);
~DirectShowMediaTypeEnum(); virtual ~DirectShowMediaTypeEnum();
// IUnknown // IUnknown
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject); HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject);
@@ -143,6 +143,10 @@ DirectShowMediaTypeList::DirectShowMediaTypeList()
{ {
} }
DirectShowMediaTypeList::~DirectShowMediaTypeList()
{
}
IEnumMediaTypes *DirectShowMediaTypeList::createMediaTypeEnum() IEnumMediaTypes *DirectShowMediaTypeList::createMediaTypeEnum()
{ {
return new DirectShowMediaTypeEnum(this, m_mediaTypeToken, 0); return new DirectShowMediaTypeEnum(this, m_mediaTypeToken, 0);

View File

@@ -42,6 +42,7 @@ class DirectShowMediaTypeList : public IUnknown
{ {
public: public:
DirectShowMediaTypeList(); DirectShowMediaTypeList();
virtual ~DirectShowMediaTypeList();
IEnumMediaTypes *createMediaTypeEnum(); IEnumMediaTypes *createMediaTypeEnum();

View File

@@ -42,7 +42,7 @@ class DirectShowPinEnum : public IEnumPins
{ {
public: public:
DirectShowPinEnum(const QList<IPin *> &pins); DirectShowPinEnum(const QList<IPin *> &pins);
~DirectShowPinEnum(); virtual ~DirectShowPinEnum();
// IUnknown // IUnknown
HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject); HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject);