summaryrefslogtreecommitdiffstats
path: root/src/compositor/compositor_api/qwaylandquickcompositor.cpp
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@theqtcompany.com>2015-07-29 14:58:54 +0200
committerJørgen Lind <jorgen.lind@theqtcompany.com>2015-08-28 13:09:41 +0200
commita327ca8d8a1f6e0a44a3aa6bd4dac716911c434e (patch)
treeae4c432c495a7baee8f97737160836cbb2e38476 /src/compositor/compositor_api/qwaylandquickcompositor.cpp
parent6c9c54587c6cd1059d5de652d06e248456832ab6 (diff)
Move the texture ownership from the QWaylandSurface
to the respective QWaylandSurfaceView. For all GL applications this will have no significant impact, but will cause a memory regression for shm surfaces with multiple views. This is done to simplify the creation and destruction of textures, especially in multi-threaded environments. Also the same patch removes the y_inverted property and replaces it with a origin property. Its done in the same patch as a lot of the code was overlapping. Change-Id: I4bce50c614c9ac3ba0580e0560339476eac03433
Diffstat (limited to 'src/compositor/compositor_api/qwaylandquickcompositor.cpp')
-rw-r--r--src/compositor/compositor_api/qwaylandquickcompositor.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/compositor/compositor_api/qwaylandquickcompositor.cpp b/src/compositor/compositor_api/qwaylandquickcompositor.cpp
index 15923659d..7c37e6c59 100644
--- a/src/compositor/compositor_api/qwaylandquickcompositor.cpp
+++ b/src/compositor/compositor_api/qwaylandquickcompositor.cpp
@@ -38,6 +38,8 @@
#include <QtCompositor/private/qwlcompositor_p.h>
#include <QtCompositor/private/qwlsurface_p.h>
+#include <QtQml/QQmlEngine>
+
#include "qwaylandclient.h"
#include "qwaylandquickcompositor.h"
#include "qwaylandquicksurface.h"
@@ -101,16 +103,22 @@ QWaylandOutput *QWaylandQuickCompositor::createOutput(QWindow *window,
const QString &manufacturer,
const QString &model)
{
+ QQmlEngine::setObjectOwnership(window, QQmlEngine::CppOwnership);
+
QQuickWindow *quickWindow = qobject_cast<QQuickWindow *>(window);
if (!quickWindow)
qFatal("%s: couldn't cast QWindow to QQuickWindow. All output windows must "
"be QQuickWindow derivates when using QWaylandQuickCompositor", Q_FUNC_INFO);
- return new QWaylandQuickOutput(this, quickWindow, manufacturer, model);
+ QWaylandQuickOutput *output = new QWaylandQuickOutput(this, quickWindow, manufacturer, model);
+ QQmlEngine::setObjectOwnership(output, QQmlEngine::CppOwnership);
+ return output;
}
QWaylandSurfaceView *QWaylandQuickCompositor::createView()
{
- return new QWaylandSurfaceItem();
+ QWaylandSurfaceItem *view = new QWaylandSurfaceItem();
+ QQmlEngine::setObjectOwnership(view, QQmlEngine::JavaScriptOwnership);
+ return view;
}
QWaylandSurface *QWaylandQuickCompositor::createSurface(QWaylandClient *client, quint32 id, int version)