+QWaylandCursor::~QWaylandCursor()
+{
+ if (mSurface)
+ wl_surface_destroy(mSurface);
+
+ delete mBuffer;
+}
+
+void QWaylandCursor::ensureSurface(const QSize &size)
+{
+ if (!mBuffer || mBuffer->size() != size) {
+ delete mBuffer;
+ mBuffer = new QWaylandShmBuffer(mDisplay, size,
+ QImage::Format_ARGB32);
+ }
+
+ if (!mSurface)
+ mSurface = mDisplay->createSurface(0);
+
+ wl_surface_attach(mSurface, mBuffer->buffer(), 0, 0);
+}
+