24 this, &SurfaceItemWayland::handleSurfaceSizeChanged);
26 this, &SurfaceItemWayland::handleBufferSizeChanged);
28 this, &SurfaceItemWayland::handleBufferSourceBoxChanged);
30 this, &SurfaceItemWayland::handleBufferTransformChanged);
33 this, &SurfaceItemWayland::handleChildSubSurfacesChanged);
35 this, &SurfaceItemWayland::handleSurfaceCommitted);
39 this, &SurfaceItemWayland::handleChildSubSurfaceRemoved);
41 this, &SurfaceItemWayland::handleColorDescriptionChanged);
43 this, &SurfaceItemWayland::handlePresentationModeHintChanged);
48 this, &SurfaceItemWayland::handleSubSurfaceMappedChanged);
50 this, &SurfaceItemWayland::handleSubSurfaceMappedChanged);
52 this, &SurfaceItemWayland::handleSubSurfacePositionChanged);
57 handleChildSubSurfacesChanged();
73 return m_surface->opaque();
83void SurfaceItemWayland::handleSurfaceSizeChanged()
88void SurfaceItemWayland::handleBufferSizeChanged()
93void SurfaceItemWayland::handleBufferSourceBoxChanged()
98void SurfaceItemWayland::handleBufferTransformChanged()
103void SurfaceItemWayland::handleSurfaceCommitted()
105 if (m_surface->hasFrameCallbacks()) {
110SurfaceItemWayland *SurfaceItemWayland::getOrCreateSubSurfaceItem(SubSurfaceInterface *child)
112 auto &item = m_subsurfaces[child];
114 item = std::make_unique<SurfaceItemWayland>(child->surface(),
scene());
115 item->setParentItem(
this);
120void SurfaceItemWayland::handleChildSubSurfaceRemoved(SubSurfaceInterface *child)
122 m_subsurfaces.erase(child);
125void SurfaceItemWayland::handleChildSubSurfacesChanged()
127 const QList<SubSurfaceInterface *> below = m_surface->below();
128 const QList<SubSurfaceInterface *> above = m_surface->above();
130 for (
int i = 0; i < below.count(); ++i) {
132 subsurfaceItem->setZ(i - below.count());
135 for (
int i = 0; i < above.count(); ++i) {
137 subsurfaceItem->setZ(i);
141void SurfaceItemWayland::handleSubSurfacePositionChanged()
146void SurfaceItemWayland::handleSubSurfaceMappedChanged()
153 return std::make_unique<SurfacePixmapWayland>(
this);
167 m_surface->disconnect(
this);
168 if (
auto subsurface = m_surface->subSurface()) {
169 subsurface->disconnect(
this);
172 for (
auto &[subsurface, subsurfaceItem] : m_subsurfaces) {
173 subsurfaceItem->freeze();
177void SurfaceItemWayland::handleColorDescriptionChanged()
182void SurfaceItemWayland::handlePresentationModeHintChanged()
221 for (QRectF &shapePart :
shape) {
222 shapePart = shapePart.intersected(
rect());
230 for (
const QRectF &shapePart :
shape()) {
231 shapeRegion += shapePart.toRect();
243#include "moc_surfaceitem_wayland.cpp"
void setColorDescription(const ColorDescription &description)
void setVisible(bool visible)
void setPresentationHint(PresentationModeHint hint)
void setPosition(const QPointF &point)
void positionChanged(const QPoint &position)
Resource representing a wl_surface.
const ColorDescription & colorDescription() const
void damaged(const QRegion &)
void childSubSurfacesChanged()
QRectF bufferSourceBox() const
void childSubSurfaceRemoved(SubSurfaceInterface *subSurface)
OutputTransform bufferTransform() const
GraphicsBuffer * buffer() const
void bufferTransformChanged(KWin::OutputTransform)
SubSurfaceInterface * subSurface() const
void presentationModeHintChanged()
void colorDescriptionChanged()
void bufferSourceBoxChanged()
void setDestinationSize(const QSizeF &size)
void setBufferTransform(OutputTransform transform)
void setBufferSize(const QSize &size)
void addDamage(const QRegion ®ion)
void setBufferSourceBox(const QRectF &box)
QList< QRectF > shape() const override
std::unique_ptr< SurfacePixmap > createPixmap() override
ContentType contentType() const override
QRegion opaque() const override
SurfaceInterface * surface() const
SurfaceItemWayland(SurfaceInterface *surface, Scene *scene, Item *parent=nullptr)
QRegion opaque() const override
QList< QRectF > shape() const override
SurfaceItemXwayland(X11Window *window, Scene *scene, Item *parent=nullptr)
GraphicsBufferRef m_bufferRef
void setBuffer(GraphicsBuffer *buffer)
SurfacePixmapWayland(SurfaceItemWayland *item, QObject *parent=nullptr)
bool isValid() const override
QList< QRectF > shapeRegion() const
QRegion opaqueRegion() const