diff options
-rw-r--r-- | src/multimedia/video/qabstractvideobuffer.cpp | 13 | ||||
-rw-r--r-- | src/multimedia/video/qabstractvideobuffer.h | 1 | ||||
-rw-r--r-- | src/multimedia/video/qvideoframe.cpp | 3 |
3 files changed, 16 insertions, 1 deletions
diff --git a/src/multimedia/video/qabstractvideobuffer.cpp b/src/multimedia/video/qabstractvideobuffer.cpp index 0d0ff597e..127cd5ea0 100644 --- a/src/multimedia/video/qabstractvideobuffer.cpp +++ b/src/multimedia/video/qabstractvideobuffer.cpp @@ -149,6 +149,19 @@ QAbstractVideoBuffer::~QAbstractVideoBuffer() } /*! + 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. \sa handle() diff --git a/src/multimedia/video/qabstractvideobuffer.h b/src/multimedia/video/qabstractvideobuffer.h index 0e92d3285..6bd7f8a58 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 c17a88835..4b1309806 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; |