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:
David Redondo 2024-05-24 10:10:23 +02:00
parent 9f3228ca4c
commit c4b1a27943
2 changed files with 10 additions and 0 deletions

View File

@ -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 = {

View File

@ -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;