summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Olav Tvete <paul.tvete@qt.io>2016-08-04 10:28:41 +0200
committerPaul Olav Tvete <paul.tvete@qt.io>2016-08-22 11:31:30 +0000
commitaee2b77784118ffe29f19a4d767a541c1f344fdf (patch)
tree3d57cbe0d3ef1db6dd85929630093972608f6068
parentb7075b72200b7b087e2c34fa449737970981ccea (diff)
Remove QWaylandView from the QML API
QWaylandQuickItem already encapsulates the view. Also rename the confusing 'discardFrontBuffers' property to 'allowDiscardFrontBuffer' Change-Id: Ibd74ad54bfe3d5187c2ed91ff0378b45e144e109 Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com> Reviewed-by: Johan Helsing <johan.helsing@qt.io>
-rw-r--r--examples/wayland/multi-output/qml/GridScreen.qml2
-rw-r--r--examples/wayland/multi-output/qml/ShellChrome.qml2
-rw-r--r--examples/wayland/pure-qml/qml/Chrome.qml2
-rw-r--r--src/compositor/compositor_api/qwaylandquickitem.cpp57
-rw-r--r--src/compositor/compositor_api/qwaylandquickitem.h16
-rw-r--r--src/compositor/compositor_api/qwaylandquickitem_p.h4
-rw-r--r--src/compositor/compositor_api/qwaylandview.cpp18
-rw-r--r--src/compositor/compositor_api/qwaylandview.h8
-rw-r--r--src/compositor/compositor_api/qwaylandview_p.h4
-rw-r--r--src/imports/compositor/plugins.qmltypes41
-rw-r--r--src/imports/compositor/qwaylandquickcompositorplugin.cpp1
11 files changed, 114 insertions, 41 deletions
diff --git a/examples/wayland/multi-output/qml/GridScreen.qml b/examples/wayland/multi-output/qml/GridScreen.qml
index 6b1d574cd..3dab99d0a 100644
--- a/examples/wayland/multi-output/qml/GridScreen.qml
+++ b/examples/wayland/multi-output/qml/GridScreen.qml
@@ -73,7 +73,7 @@ WaylandOutput {
height: gridView.cellHeight
sizeFollowsSurface: false
inputEventsEnabled: false
- view.discardFrontBuffers: true
+ allowDiscardFrontBuffer: true
MouseArea {
anchors.fill: parent
onClicked: item.surface.activated()
diff --git a/examples/wayland/multi-output/qml/ShellChrome.qml b/examples/wayland/multi-output/qml/ShellChrome.qml
index b88414b25..709e83679 100644
--- a/examples/wayland/multi-output/qml/ShellChrome.qml
+++ b/examples/wayland/multi-output/qml/ShellChrome.qml
@@ -45,7 +45,7 @@ ShellSurfaceItem {
id: rootChrome
onSurfaceDestroyed: {
- view.bufferLocked = true;
+ bufferLocked = true;
destroyAnimation.start();
}
diff --git a/examples/wayland/pure-qml/qml/Chrome.qml b/examples/wayland/pure-qml/qml/Chrome.qml
index 63b6038ab..d2ff5cc2a 100644
--- a/examples/wayland/pure-qml/qml/Chrome.qml
+++ b/examples/wayland/pure-qml/qml/Chrome.qml
@@ -45,7 +45,7 @@ ShellSurfaceItem {
id: rootChrome
onSurfaceDestroyed: {
- view.bufferLocked = true;
+ bufferLocked = true;
destroyAnimation.start();
}
diff --git a/src/compositor/compositor_api/qwaylandquickitem.cpp b/src/compositor/compositor_api/qwaylandquickitem.cpp
index 975802790..6ea44feac 100644
--- a/src/compositor/compositor_api/qwaylandquickitem.cpp
+++ b/src/compositor/compositor_api/qwaylandquickitem.cpp
@@ -777,6 +777,63 @@ void QWaylandQuickItem::setSubsurfaceHandler(QObject *handler)
}
/*!
+ * \property QWaylandQuickItem::output
+ *
+ * This property holds the output on which this item is displayed.
+ */
+QWaylandOutput *QWaylandQuickItem::output() const
+{
+ Q_D(const QWaylandQuickItem);
+ return d->view->output();
+}
+
+void QWaylandQuickItem::setOutput(QWaylandOutput *output)
+{
+ Q_D(QWaylandQuickItem);
+ d->view->setOutput(output);
+}
+
+/*!
+ * \property QWaylandQuickItem::bufferLocked
+ *
+ * This property holds whether the item's buffer is currently locked. As long as
+ * the buffer is locked, it will not be released and returned to the client.
+ *
+ * The default is false.
+ */
+bool QWaylandQuickItem::isBufferLocked() const
+{
+ Q_D(const QWaylandQuickItem);
+ return d->view->isBufferLocked();
+}
+
+void QWaylandQuickItem::setBufferLocked(bool locked)
+{
+ Q_D(QWaylandQuickItem);
+ d->view->setBufferLocked(locked);
+}
+
+/*!
+ * \property bool QWaylandQuickItem::allowDiscardFrontBuffer
+ *
+ * By default, the item locks the current buffer until a new buffer is available
+ * and updatePaintNode() is called. Set this property to true to allow Qt to release the buffer
+ * immediately when the throttling view is no longer using it. This is useful for items that have
+ * slow update intervals.
+ */
+bool QWaylandQuickItem::allowDiscardFrontBuffer() const
+{
+ Q_D(const QWaylandQuickItem);
+ return d->view->allowDiscardFrontBuffer();
+}
+
+void QWaylandQuickItem::setAllowDiscardFrontBuffer(bool discard)
+{
+ Q_D(QWaylandQuickItem);
+ d->view->setAllowDiscardFrontBuffer(discard);
+}
+
+/*!
* \internal
*/
void QWaylandQuickItem::handleSurfaceChanged()
diff --git a/src/compositor/compositor_api/qwaylandquickitem.h b/src/compositor/compositor_api/qwaylandquickitem.h
index 0a6c78919..5c89d58b4 100644
--- a/src/compositor/compositor_api/qwaylandquickitem.h
+++ b/src/compositor/compositor_api/qwaylandquickitem.h
@@ -58,7 +58,6 @@ class Q_WAYLAND_COMPOSITOR_EXPORT QWaylandQuickItem : public QQuickItem
{
Q_OBJECT
Q_DECLARE_PRIVATE(QWaylandQuickItem)
- Q_PROPERTY(QWaylandView *view READ view CONSTANT)
Q_PROPERTY(QWaylandCompositor *compositor READ compositor)
Q_PROPERTY(QWaylandSurface *surface READ surface WRITE setSurface NOTIFY surfaceChanged)
Q_PROPERTY(bool paintEnabled READ paintEnabled WRITE setPaintEnabled)
@@ -68,6 +67,9 @@ class Q_WAYLAND_COMPOSITOR_EXPORT QWaylandQuickItem : public QQuickItem
Q_PROPERTY(bool focusOnClick READ focusOnClick WRITE setFocusOnClick NOTIFY focusOnClickChanged)
Q_PROPERTY(bool sizeFollowsSurface READ sizeFollowsSurface WRITE setSizeFollowsSurface NOTIFY sizeFollowsSurfaceChanged)
Q_PROPERTY(QObject *subsurfaceHandler READ subsurfaceHandler WRITE setSubsurfaceHandler NOTIFY subsurfaceHandlerChanged)
+ Q_PROPERTY(QWaylandOutput *output READ output WRITE setOutput NOTIFY outputChanged)
+ Q_PROPERTY(bool bufferLocked READ isBufferLocked WRITE setBufferLocked NOTIFY bufferLockedChanged)
+ Q_PROPERTY(bool allowDiscardFrontBuffer READ allowDiscardFrontBuffer WRITE setAllowDiscardFrontBuffer NOTIFY allowDiscardFrontBufferChanged)
public:
QWaylandQuickItem(QQuickItem *parent = nullptr);
~QWaylandQuickItem();
@@ -108,6 +110,15 @@ public:
QObject *subsurfaceHandler() const;
void setSubsurfaceHandler(QObject*);
+ QWaylandOutput *output() const;
+ void setOutput(QWaylandOutput *output);
+
+ bool isBufferLocked() const;
+ void setBufferLocked(bool locked);
+
+ bool allowDiscardFrontBuffer() const;
+ void setAllowDiscardFrontBuffer(bool discard);
+
protected:
void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
@@ -160,6 +171,9 @@ Q_SIGNALS:
void mouseRelease();
void sizeFollowsSurfaceChanged();
void subsurfaceHandlerChanged();
+ void outputChanged();
+ void bufferLockedChanged();
+ void allowDiscardFrontBufferChanged();
protected:
QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) Q_DECL_OVERRIDE;
diff --git a/src/compositor/compositor_api/qwaylandquickitem_p.h b/src/compositor/compositor_api/qwaylandquickitem_p.h
index fca0d9d29..8c242ac88 100644
--- a/src/compositor/compositor_api/qwaylandquickitem_p.h
+++ b/src/compositor/compositor_api/qwaylandquickitem_p.h
@@ -139,9 +139,11 @@ public:
QObject::connect(view.data(), &QWaylandView::surfaceChanged, q, &QWaylandQuickItem::surfaceChanged);
QObject::connect(view.data(), &QWaylandView::surfaceChanged, q, &QWaylandQuickItem::handleSurfaceChanged);
QObject::connect(view.data(), &QWaylandView::surfaceDestroyed, q, &QWaylandQuickItem::surfaceDestroyed);
+ QObject::connect(view.data(), &QWaylandView::outputChanged, q, &QWaylandQuickItem::outputChanged);
+ QObject::connect(view.data(), &QWaylandView::bufferLockedChanged, q, &QWaylandQuickItem::bufferLockedChanged);
+ QObject::connect(view.data(), &QWaylandView::allowDiscardFrontBufferChanged, q, &QWaylandQuickItem::allowDiscardFrontBuffer);
}
-
void setInputEventsEnabled(bool enable)
{
Q_Q(QWaylandQuickItem);
diff --git a/src/compositor/compositor_api/qwaylandview.cpp b/src/compositor/compositor_api/qwaylandview.cpp
index f6e086523..f605de55c 100644
--- a/src/compositor/compositor_api/qwaylandview.cpp
+++ b/src/compositor/compositor_api/qwaylandview.cpp
@@ -215,7 +215,7 @@ void QWaylandView::attach(const QWaylandBufferRef &ref, const QRegion &damage)
*
* If this view is set as its surface's throttling view, discardCurrentBuffer()
* will be called on all views of the same surface for which the
- * \l{QWaylandView::discardFrontBuffers}{discardFrontBuffers}
+ * \l{QWaylandView::allowDiscardFrontBuffer}{allowDiscardFrontBuffer}
* property is set to true and the current buffer is the same as the
* throttling view's current buffer.
*
@@ -236,7 +236,7 @@ bool QWaylandView::advance()
if (d->surface && d->surface->throttlingView() == this) {
Q_FOREACH (QWaylandView *view, d->surface->views()) {
- if (view != this && view->discardFrontBuffers() && view->d_func()->currentBuffer == d->currentBuffer)
+ if (view != this && view->allowDiscardFrontBuffer() && view->d_func()->currentBuffer == d->currentBuffer)
view->discardCurrentBuffer();
}
}
@@ -314,24 +314,24 @@ void QWaylandView::setBufferLocked(bool locked)
}
/*!
- * \property bool QWaylandView::discardFrontBuffers
+ * \property bool QWaylandView::allowDiscardFrontBuffer
*
* By default, the view locks the current buffer until advance() is called. Set this property
* to true to allow Qt to release the buffer when the throttling view is no longer using it.
*/
-bool QWaylandView::discardFrontBuffers() const
+bool QWaylandView::allowDiscardFrontBuffer() const
{
Q_D(const QWaylandView);
- return d->discardFrontBuffers;
+ return d->allowDiscardFrontBuffer;
}
-void QWaylandView::setDiscardFrontBuffers(bool discard)
+void QWaylandView::setAllowDiscardFrontBuffer(bool discard)
{
Q_D(QWaylandView);
- if (d->discardFrontBuffers == discard)
+ if (d->allowDiscardFrontBuffer == discard)
return;
- d->discardFrontBuffers = discard;
- emit discardFrontBuffersChanged();
+ d->allowDiscardFrontBuffer = discard;
+ emit allowDiscardFrontBufferChanged();
}
/*!
diff --git a/src/compositor/compositor_api/qwaylandview.h b/src/compositor/compositor_api/qwaylandview.h
index a6c5dce90..6247e06e2 100644
--- a/src/compositor/compositor_api/qwaylandview.h
+++ b/src/compositor/compositor_api/qwaylandview.h
@@ -57,7 +57,7 @@ class Q_WAYLAND_COMPOSITOR_EXPORT QWaylandView : public QObject
Q_PROPERTY(QWaylandSurface *surface READ surface WRITE setSurface NOTIFY surfaceChanged)
Q_PROPERTY(QWaylandOutput *output READ output WRITE setOutput NOTIFY outputChanged)
Q_PROPERTY(bool bufferLocked READ isBufferLocked WRITE setBufferLocked NOTIFY bufferLockedChanged)
- Q_PROPERTY(bool discardFrontBuffers READ discardFrontBuffers WRITE setDiscardFrontBuffers NOTIFY discardFrontBuffersChanged)
+ Q_PROPERTY(bool allowDiscardFrontBuffer READ allowDiscardFrontBuffer WRITE setAllowDiscardFrontBuffer NOTIFY allowDiscardFrontBufferChanged)
public:
QWaylandView(QObject *renderObject = nullptr, QObject *parent = nullptr);
virtual ~QWaylandView();
@@ -79,8 +79,8 @@ public:
bool isBufferLocked() const;
void setBufferLocked(bool locked);
- bool discardFrontBuffers() const;
- void setDiscardFrontBuffers(bool discard);
+ bool allowDiscardFrontBuffer() const;
+ void setAllowDiscardFrontBuffer(bool discard);
struct wl_resource *surfaceResource() const;
@@ -89,7 +89,7 @@ Q_SIGNALS:
void surfaceDestroyed();
void outputChanged();
void bufferLockedChanged();
- void discardFrontBuffersChanged();
+ void allowDiscardFrontBufferChanged();
};
QT_END_NAMESPACE
diff --git a/src/compositor/compositor_api/qwaylandview_p.h b/src/compositor/compositor_api/qwaylandview_p.h
index 768ebd4bc..d9fd352ed 100644
--- a/src/compositor/compositor_api/qwaylandview_p.h
+++ b/src/compositor/compositor_api/qwaylandview_p.h
@@ -72,7 +72,7 @@ public:
, bufferLocked(false)
, broadcastRequestedPositionChanged(false)
, forceAdvanceSucceed(false)
- , discardFrontBuffers(false)
+ , allowDiscardFrontBuffer(false)
{ }
void markSurfaceAsDestroyed(QWaylandSurface *surface);
@@ -89,7 +89,7 @@ public:
bool bufferLocked;
bool broadcastRequestedPositionChanged;
bool forceAdvanceSucceed;
- bool discardFrontBuffers;
+ bool allowDiscardFrontBuffer;
};
QT_END_NAMESPACE
diff --git a/src/imports/compositor/plugins.qmltypes b/src/imports/compositor/plugins.qmltypes
index 2cd5a0e33..4c7cd7aa5 100644
--- a/src/imports/compositor/plugins.qmltypes
+++ b/src/imports/compositor/plugins.qmltypes
@@ -14,6 +14,7 @@ Module {
exports: ["QtWayland.Compositor/WaylandClient 1.0"]
isCreatable: false
exportMetaObjectRevisions: [0]
+ Property { name: "compositor"; type: "QWaylandCompositor"; isReadonly: true; isPointer: true }
Property { name: "userId"; type: "qlonglong"; isReadonly: true }
Property { name: "groupId"; type: "qlonglong"; isReadonly: true }
Property { name: "processId"; type: "qlonglong"; isReadonly: true }
@@ -26,7 +27,7 @@ Module {
}
Component {
name: "QWaylandCompositor"
- prototype: "QObject"
+ prototype: "QWaylandObject"
exports: ["QtWayland.Compositor/WaylandCompositorBase 1.0"]
isCreatable: false
exportMetaObjectRevisions: [0]
@@ -64,6 +65,14 @@ Module {
Parameter { name: "newDevice"; type: "QWaylandSeat"; isPointer: true }
Parameter { name: "oldDevice"; type: "QWaylandSeat"; isPointer: true }
}
+ Signal {
+ name: "outputAdded"
+ Parameter { name: "output"; type: "QWaylandOutput"; isPointer: true }
+ }
+ Signal {
+ name: "outputRemoved"
+ Parameter { name: "output"; type: "QWaylandOutput"; isPointer: true }
+ }
Method { name: "processWaylandEvents" }
Method {
name: "destroyClientForSurface"
@@ -81,7 +90,7 @@ Module {
}
Component {
name: "QWaylandCompositorExtension"
- prototype: "QObject"
+ prototype: "QWaylandObject"
exports: ["QtWayland.Compositor/WaylandExtension 1.0"]
isCreatable: false
exportMetaObjectRevisions: [0]
@@ -105,7 +114,7 @@ Module {
}
Component {
name: "QWaylandSeat"
- prototype: "QObject"
+ prototype: "QWaylandObject"
exports: ["QtWayland.Compositor/WaylandSeat 1.0"]
isCreatable: false
exportMetaObjectRevisions: [0]
@@ -148,9 +157,10 @@ Module {
Property { name: "windowSystemCursorEnabled"; type: "bool" }
Signal { name: "hoveredChanged" }
}
+ Component { name: "QWaylandObject"; prototype: "QObject" }
Component {
name: "QWaylandOutput"
- prototype: "QObject"
+ prototype: "QWaylandObject"
exports: ["QtWayland.Compositor/WaylandOutputBase 1.0"]
isCreatable: false
exportMetaObjectRevisions: [0]
@@ -233,7 +243,6 @@ Module {
prototype: "QQuickItem"
exports: ["QtWayland.Compositor/WaylandQuickItem 1.0"]
exportMetaObjectRevisions: [0]
- Property { name: "view"; type: "QWaylandView"; isReadonly: true; isPointer: true }
Property { name: "compositor"; type: "QWaylandCompositor"; isReadonly: true; isPointer: true }
Property { name: "surface"; type: "QWaylandSurface"; isPointer: true }
Property { name: "paintEnabled"; type: "bool" }
@@ -243,6 +252,8 @@ Module {
Property { name: "focusOnClick"; type: "bool" }
Property { name: "sizeFollowsSurface"; type: "bool" }
Property { name: "subsurfaceHandler"; type: "QObject"; isPointer: true }
+ Property { name: "bufferLocked"; type: "bool" }
+ Property { name: "allowDiscardFrontBuffer"; type: "bool" }
Signal { name: "surfaceDestroyed" }
Signal {
name: "mouseMove"
@@ -312,7 +323,7 @@ Module {
}
Component {
name: "QWaylandSurface"
- prototype: "QObject"
+ prototype: "QWaylandObject"
exports: ["QtWayland.Compositor/WaylandSurfaceBase 1.0"]
isCreatable: false
exportMetaObjectRevisions: [0]
@@ -393,19 +404,6 @@ Module {
Property { name: "data"; type: "QObject"; isList: true; isReadonly: true }
}
Component {
- name: "QWaylandView"
- prototype: "QObject"
- exports: ["QtWayland.Compositor/WaylandView 1.0"]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Property { name: "renderObject"; type: "QObject"; isReadonly: true; isPointer: true }
- Property { name: "surface"; type: "QWaylandSurface"; isPointer: true }
- Property { name: "output"; type: "QWaylandOutput"; isPointer: true }
- Property { name: "bufferLocked"; type: "bool" }
- Property { name: "discardFrontBuffers"; type: "bool" }
- Signal { name: "surfaceDestroyed" }
- }
- Component {
name: "QWaylandWlShell"
prototype: "QWaylandCompositorExtension"
Signal {
@@ -615,6 +613,8 @@ Module {
Parameter { name: "seat"; type: "QWaylandSeat"; isPointer: true }
Parameter { name: "edges"; type: "ResizeEdge" }
}
+ Signal { name: "setTopLevel" }
+ Signal { name: "setTransient" }
Signal { name: "setMaximized" }
Signal { name: "unsetMaximized" }
Signal {
@@ -692,7 +692,6 @@ Module {
Parameter { name: "hotspotX"; type: "QVariant" }
Parameter { name: "hotspotY"; type: "QVariant" }
}
- Property { name: "view"; type: "QWaylandView"; isReadonly: true; isPointer: true }
Property { name: "compositor"; type: "QWaylandCompositor"; isReadonly: true; isPointer: true }
Property { name: "surface"; type: "QWaylandSurface"; isPointer: true }
Property { name: "paintEnabled"; type: "bool" }
@@ -702,6 +701,8 @@ Module {
Property { name: "focusOnClick"; type: "bool" }
Property { name: "sizeFollowsSurface"; type: "bool" }
Property { name: "subsurfaceHandler"; type: "QObject"; isPointer: true }
+ Property { name: "bufferLocked"; type: "bool" }
+ Property { name: "allowDiscardFrontBuffer"; type: "bool" }
Signal { name: "surfaceDestroyed" }
Signal {
name: "mouseMove"
diff --git a/src/imports/compositor/qwaylandquickcompositorplugin.cpp b/src/imports/compositor/qwaylandquickcompositorplugin.cpp
index a5f520433..3bcb61813 100644
--- a/src/imports/compositor/qwaylandquickcompositorplugin.cpp
+++ b/src/imports/compositor/qwaylandquickcompositorplugin.cpp
@@ -121,7 +121,6 @@ public:
qmlRegisterUncreatableType<QWaylandCompositorExtension>(uri, 1, 0, "WaylandExtension", QObject::tr("Cannot create instance of WaylandExtension"));
qmlRegisterUncreatableType<QWaylandClient>(uri, 1, 0, "WaylandClient", QObject::tr("Cannot create instance of WaylandClient"));
qmlRegisterUncreatableType<QWaylandOutput>(uri, 1, 0, "WaylandOutputBase", QObject::tr("Cannot create instance of WaylandOutputBase, use WaylandOutput instead"));
- qmlRegisterUncreatableType<QWaylandView>(uri, 1, 0, "WaylandView", QObject::tr("Cannot create instance of WaylandView, it can be retrieved by accessor on WaylandQuickItem"));
qmlRegisterUncreatableType<QWaylandSeat>(uri, 1, 0, "WaylandSeat", QObject::tr("Cannot create instance of WaylandSeat"));
qmlRegisterUncreatableType<QWaylandDrag>(uri, 1, 0, "WaylandDrag", QObject::tr("Cannot create instance of WaylandDrag"));
qmlRegisterUncreatableType<QWaylandCompositor>(uri, 1, 0, "WaylandCompositorBase", QObject::tr("Cannot create instance of WaylandCompositorBase, use WaylandCompositor instead"));