client: Add option to automatically delete a buffer upon release
This is useful when using with protocols that use buffers that are basically one-shot and managing and reusing multiple buffers is not needed. Change-Id: Id4f6c01b7e873540fd87ab663ceb9069f2de0ca1 Reviewed-by: David Edmundson <davidedmundson@kde.org>
This commit is contained in:
parent
9f3228ca4c
commit
c4b1a27943
@ -31,6 +31,13 @@ void QWaylandBuffer::release(void *data, wl_buffer *)
|
||||
QWaylandBuffer *self = static_cast<QWaylandBuffer *>(data);
|
||||
self->mBusy = false;
|
||||
self->mCommitted = false;
|
||||
if (self->mDeleteOnRelease)
|
||||
delete self;
|
||||
}
|
||||
|
||||
void QWaylandBuffer::setDeleteOnRelease(bool deleteOnRelease)
|
||||
{
|
||||
mDeleteOnRelease = deleteOnRelease;
|
||||
}
|
||||
|
||||
const wl_buffer_listener QWaylandBuffer::listener = {
|
||||
|
@ -43,12 +43,15 @@ public:
|
||||
void setCommitted() { mCommitted = true; }
|
||||
bool committed() const { return mCommitted; }
|
||||
|
||||
void setDeleteOnRelease(bool deleteOnRelease);
|
||||
|
||||
protected:
|
||||
struct wl_buffer *mBuffer = nullptr;
|
||||
|
||||
private:
|
||||
bool mBusy = false;
|
||||
bool mCommitted = false;
|
||||
bool mDeleteOnRelease = false;
|
||||
|
||||
static void release(void *data, wl_buffer *);
|
||||
static const wl_buffer_listener listener;
|
||||
|
Loading…
x
Reference in New Issue
Block a user