diff options
author | Jørgen Lind <jorgen.lind@theqtcompany.com> | 2015-07-29 14:58:54 +0200 |
---|---|---|
committer | Jørgen Lind <jorgen.lind@theqtcompany.com> | 2015-08-28 13:09:41 +0200 |
commit | a327ca8d8a1f6e0a44a3aa6bd4dac716911c434e (patch) | |
tree | ae4c432c495a7baee8f97737160836cbb2e38476 /src/compositor/compositor_api/qwaylandquickcompositor.cpp | |
parent | 6c9c54587c6cd1059d5de652d06e248456832ab6 (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.cpp | 12 |
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) |