summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/multimedia/video/qabstractvideobuffer.cpp13
-rw-r--r--src/multimedia/video/qabstractvideobuffer.h1
-rw-r--r--src/multimedia/video/qvideoframe.cpp3
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;