summaryrefslogtreecommitdiffstats
path: root/src/plugins/waylandcompositors/xcomposite_share/xcompositebuffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/waylandcompositors/xcomposite_share/xcompositebuffer.cpp')
-rw-r--r--src/plugins/waylandcompositors/xcomposite_share/xcompositebuffer.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/plugins/waylandcompositors/xcomposite_share/xcompositebuffer.cpp b/src/plugins/waylandcompositors/xcomposite_share/xcompositebuffer.cpp
index 4644cf29e..d7196b796 100644
--- a/src/plugins/waylandcompositors/xcomposite_share/xcompositebuffer.cpp
+++ b/src/plugins/waylandcompositors/xcomposite_share/xcompositebuffer.cpp
@@ -42,13 +42,21 @@
QT_USE_NAMESPACE
-XCompositeBuffer::XCompositeBuffer(QtWayland::Compositor *compositor, Window window, const QSize &size)
+XCompositeBuffer::XCompositeBuffer(Window window, const QSize &size,
+ struct ::wl_client *client, uint32_t id)
: mWindow(window)
, mInvertedY(false)
{
- Q_UNUSED(compositor);
base()->height = size.height();
base()->width = size.width();
+
+ base()->resource.object.id = id;
+ base()->resource.object.interface = &::wl_buffer_interface;
+ base()->resource.object.implementation = (void (**)(void))&buffer_interface;
+ base()->resource.data = base();
+ wl_client_add_resource(client, &base()->resource);
+
+ base()->resource.destroy = delete_resource;
}
struct wl_buffer_interface XCompositeBuffer::buffer_interface = {
@@ -63,7 +71,7 @@ void XCompositeBuffer::buffer_interface_destroy(wl_client *client, wl_resource *
void XCompositeBuffer::delete_resource(struct wl_resource *resource)
{
- delete reinterpret_cast<XCompositeBuffer *>(resource);
+ delete static_cast<XCompositeBuffer *>(static_cast<wl_buffer *>(resource->data));
}
Window XCompositeBuffer::window()