diff --git a/src/multimedia/video/qabstractvideobuffer.cpp b/src/multimedia/video/qabstractvideobuffer.cpp index 0d0ff597..127cd5ea 100644 --- a/src/multimedia/video/qabstractvideobuffer.cpp +++ b/src/multimedia/video/qabstractvideobuffer.cpp @@ -148,6 +148,19 @@ QAbstractVideoBuffer::~QAbstractVideoBuffer() delete d_ptr; } +/*! + Releases the video buffer. + + QVideoFrame calls QAbstractVideoBuffer::release when the buffer is not used + any more and can be destroyed or returned to the buffer pool. + + The default implementation deletes the buffer instance. +*/ +void QAbstractVideoBuffer::release() +{ + delete this; +} + /*! Returns the type of a video buffer's handle. diff --git a/src/multimedia/video/qabstractvideobuffer.h b/src/multimedia/video/qabstractvideobuffer.h index 0e92d328..6bd7f8a5 100644 --- a/src/multimedia/video/qabstractvideobuffer.h +++ b/src/multimedia/video/qabstractvideobuffer.h @@ -82,6 +82,7 @@ public: QAbstractVideoBuffer(HandleType type); virtual ~QAbstractVideoBuffer(); + virtual void release(); HandleType handleType() const; diff --git a/src/multimedia/video/qvideoframe.cpp b/src/multimedia/video/qvideoframe.cpp index c17a8883..4b130980 100644 --- a/src/multimedia/video/qvideoframe.cpp +++ b/src/multimedia/video/qvideoframe.cpp @@ -102,7 +102,8 @@ public: ~QVideoFramePrivate() { - delete buffer; + if (buffer) + buffer->release(); } QSize size;