diff options
-rw-r--r-- | examples/qwidget-compositor/main.cpp | 15 | ||||
-rw-r--r-- | examples/qwindow-compositor/qwindowcompositor.cpp | 9 | ||||
-rw-r--r-- | examples/qwindow-compositor/qwindowcompositor.h | 4 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandsurface.h | 1 | ||||
-rw-r--r-- | src/compositor/compositor_api/qwaylandsurfaceitem.cpp | 2 | ||||
-rw-r--r-- | src/compositor/wayland_wrapper/qwlsurface.cpp | 2 |
6 files changed, 15 insertions, 18 deletions
diff --git a/examples/qwidget-compositor/main.cpp b/examples/qwidget-compositor/main.cpp index ed1c0a3fc..7a268fbd3 100644 --- a/examples/qwidget-compositor/main.cpp +++ b/examples/qwidget-compositor/main.cpp @@ -110,27 +110,22 @@ private slots: update(); } - void surfaceDamaged(const QRegion &rect) { + void surfaceCommitted() { QWaylandSurface *surface = qobject_cast<QWaylandSurface *>(sender()); - surfaceDamaged(surface, rect); + surfaceCommitted(surface); } protected: - void surfaceDamaged(QWaylandSurface *surface, const QRegion &rect) + void surfaceCommitted(QWaylandSurface *surface) { -#ifdef QT_COMPOSITOR_WAYLAND_GL Q_UNUSED(surface); - Q_UNUSED(rect); update(); -#else - update(rect.translated(surface->geometry().topLeft())); -#endif } void surfaceCreated(QWaylandSurface *surface) { connect(surface, SIGNAL(destroyed(QObject *)), this, SLOT(surfaceDestroyed(QObject *))); connect(surface, SIGNAL(mapped()), this, SLOT(surfaceMapped())); - connect(surface, SIGNAL(damaged(const QRegion &)), this, SLOT(surfaceDamaged(const QRegion &))); + connect(surface, SIGNAL(committed()), this, SLOT(surfaceCommitted())); update(); } @@ -265,7 +260,7 @@ protected: void raise(QWaylandSurface *surface) { defaultInputDevice()->setKeyboardFocus(surface); - surfaceDamaged(surface, QRect(QPoint(), surface->size())); + update(); m_surfaces.removeOne(surface); m_surfaces.append(surface); } diff --git a/examples/qwindow-compositor/qwindowcompositor.cpp b/examples/qwindow-compositor/qwindowcompositor.cpp index f64922db5..e0f213aa4 100644 --- a/examples/qwindow-compositor/qwindowcompositor.cpp +++ b/examples/qwindow-compositor/qwindowcompositor.cpp @@ -159,10 +159,10 @@ void QWindowCompositor::surfaceUnmapped() ensureKeyboardFocusSurface(surface); } -void QWindowCompositor::surfaceDamaged(const QRegion &rect) +void QWindowCompositor::surfaceCommitted() { QWaylandSurface *surface = qobject_cast<QWaylandSurface *>(sender()); - surfaceDamaged(surface, rect); + surfaceCommitted(surface); } void QWindowCompositor::surfacePosChanged() @@ -170,10 +170,9 @@ void QWindowCompositor::surfacePosChanged() m_renderScheduler.start(0); } -void QWindowCompositor::surfaceDamaged(QWaylandSurface *surface, const QRegion &rect) +void QWindowCompositor::surfaceCommitted(QWaylandSurface *surface) { Q_UNUSED(surface) - Q_UNUSED(rect) m_renderScheduler.start(0); } @@ -182,7 +181,7 @@ void QWindowCompositor::surfaceCreated(QWaylandSurface *surface) connect(surface, SIGNAL(destroyed(QObject *)), this, SLOT(surfaceDestroyed(QObject *))); connect(surface, SIGNAL(mapped()), this, SLOT(surfaceMapped())); connect(surface, SIGNAL(unmapped()), this, SLOT(surfaceUnmapped())); - connect(surface, SIGNAL(damaged(const QRegion &)), this, SLOT(surfaceDamaged(const QRegion &))); + connect(surface, SIGNAL(committed()), this, SLOT(surfaceCommitted())); connect(surface, SIGNAL(extendedSurfaceReady()), this, SLOT(sendExpose())); connect(surface, SIGNAL(posChanged()), this, SLOT(surfacePosChanged())); m_renderScheduler.start(0); diff --git a/examples/qwindow-compositor/qwindowcompositor.h b/examples/qwindow-compositor/qwindowcompositor.h index f8d354c36..e26a09ebc 100644 --- a/examples/qwindow-compositor/qwindowcompositor.h +++ b/examples/qwindow-compositor/qwindowcompositor.h @@ -61,12 +61,12 @@ private slots: void surfaceDestroyed(QObject *object); void surfaceMapped(); void surfaceUnmapped(); - void surfaceDamaged(const QRegion &rect); + void surfaceCommitted(); void surfacePosChanged(); void render(); protected: - void surfaceDamaged(QWaylandSurface *surface, const QRegion &rect); + void surfaceCommitted(QWaylandSurface *surface); void surfaceCreated(QWaylandSurface *surface); QWaylandSurface* surfaceAt(const QPointF &point, QPointF *local = 0); diff --git a/src/compositor/compositor_api/qwaylandsurface.h b/src/compositor/compositor_api/qwaylandsurface.h index 774464a8a..03ed73e02 100644 --- a/src/compositor/compositor_api/qwaylandsurface.h +++ b/src/compositor/compositor_api/qwaylandsurface.h @@ -187,6 +187,7 @@ signals: void mapped(); void unmapped(); void damaged(const QRegion &rect); + void committed(); void parentChanged(QWaylandSurface *newParent, QWaylandSurface *oldParent); void sizeChanged(); void posChanged(); diff --git a/src/compositor/compositor_api/qwaylandsurfaceitem.cpp b/src/compositor/compositor_api/qwaylandsurfaceitem.cpp index b87bbb614..2c2f3cce3 100644 --- a/src/compositor/compositor_api/qwaylandsurfaceitem.cpp +++ b/src/compositor/compositor_api/qwaylandsurfaceitem.cpp @@ -147,6 +147,7 @@ void QWaylandSurfaceItem::init(QWaylandSurface *surface) connect(surface, &QWaylandSurface::unmapped, this, &QWaylandSurfaceItem::surfaceUnmapped); connect(surface, &QWaylandSurface::destroyed, this, &QWaylandSurfaceItem::surfaceDestroyed); connect(surface, &QWaylandSurface::damaged, this, &QWaylandSurfaceItem::surfaceDamaged); + connect(surface, &QWaylandSurface::committed, this, &QQuickItem::update); connect(surface, &QWaylandSurface::parentChanged, this, &QWaylandSurfaceItem::parentChanged); connect(surface, &QWaylandSurface::sizeChanged, this, &QWaylandSurfaceItem::updateSize); connect(surface, &QWaylandSurface::posChanged, this, &QWaylandSurfaceItem::updatePosition); @@ -309,7 +310,6 @@ void QWaylandSurfaceItem::surfaceDamaged(const QRegion &) } } emit textureChanged(); - update(); } void QWaylandSurfaceItem::parentChanged(QWaylandSurface *newParent, QWaylandSurface *oldParent) diff --git a/src/compositor/wayland_wrapper/qwlsurface.cpp b/src/compositor/wayland_wrapper/qwlsurface.cpp index cd5320677..86f34279e 100644 --- a/src/compositor/wayland_wrapper/qwlsurface.cpp +++ b/src/compositor/wayland_wrapper/qwlsurface.cpp @@ -483,6 +483,8 @@ void Surface::surface_commit(Resource *) m_frameCallbacks << m_pendingFrameCallbacks; m_pendingFrameCallbacks.clear(); + + emit m_waylandSurface->committed(); } void Surface::frameStarted() |