aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Support batching of rotated antialiased elements."Gunnar Sletta2014-01-161-5/+6
| | | | | | | | | This patch broke scaled text rendering This reverts commit 6acaa1c42936f89d74324be9c0cce4873a9a565b. Change-Id: I1f7a3ba0556f6d59bc1e28946631be2d9fc2b67d Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* On Mac only editable ComboBox should receive tab focusFrederik Gladhorn2014-01-111-1/+5
| | | | | | | | | [ChangeLog][QtQuickControls] Mac: ComboBox will only get tab focus when it is editable. Change-Id: Ife04de67b2e3dea77ba878b247ad0b676c879c02 Reviewed-by: Liang Qi <liang.qi@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* Support batching of rotated antialiased elements.Gunnar Sletta2014-01-101-6/+5
| | | | | Change-Id: I0522a23617c897aff01b7b50e0af98553374d792 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Doc: Fix current QtQuick module version.Takumi Asaki2014-01-101-2/+2
| | | | | Change-Id: I8056757967ff2693f69b5a7afa11a00ca826ece0 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* Doc: QtTest - Fix documentation for TestCase and SignalSpyCaroline Chao2014-01-093-2/+13
| | | | | | | | | | | | | | | | | The property/methods documentation needs to be available in the components qml file. Thus we now import those components from the qml files directly instead of using fake header files. Rename the Qt Quick Test page to Qt Quick Test Qml Types to be consistent with the other submodules. Task-number: QTBUG-33587 Change-Id: Ifb1df8e7d15f2e23b4b4268e5df138934e62fc42 Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com> Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* Fix Flickable generated release event with pressDelay.Martin Jones2014-01-091-1/+5
| | | | | | | | | Map mouse position to grabber when forwarding release event due to release before pressDelay timeout. Task-number: QTBUG-34570 Change-Id: I7214077c9ac95f77407cf66f9dad52f577eccd79 Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
* Keys Attached Property: Fix doc reference to nonexistent propertiesGabriel de Dietrich2014-01-081-2/+2
| | | | | Change-Id: I5e6a0855b3ad10e3adf6cf73b08a7794daf187da Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Use qDebug for all debug under src/quick/scenegraph.Gunnar Sletta2014-01-077-10/+11
| | | | | | | Mixing printf and qDebug can make the output come out of sync. Change-Id: Ia71e71b09cb3bf651010eb2eb652db7899b07f0d Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Doc: Fix broken linksSze Howe Koh2013-12-3028-50/+48
| | | | | Change-Id: I4c4577edde96978a986606bf30fbb925f871bd42 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* Context2D: don't use an arrow to illustrate scaling in the docs.Mitch Curtis2013-12-261-0/+0
| | | | | | | | | | The example image scales an arrow, but uses an arrow to indicate that the next image (an arrow) is a result of the first arrow being scaled. Instead, use a circle. Change-Id: I8de18d4c2f3cb309681f63c31b0c9f7255d1868c Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
* Doc: Fixed a few broken links and snippetsVenu2013-12-231-2/+2
| | | | | | | | | | Couple of \snippet references in the ListModel docs were pointing to files outside the exampledirs boundary. Update those references to use the relative path. Change-Id: Ibf9d0fda9e5280345b08cb66a4fe0db9142a42a6 Reviewed-by: Nico Vertriest <nico.vertriest@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* QtQuick docs: add missing \qmlpropertygroup commandsJ-P Nurmi2013-12-2012-0/+16
| | | | | | | "warning: No QML property group command found; using..." Change-Id: Iafbdbc09cbd76bf81a5baf3a5a4fab843778b5cb Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* use private linkage where possibleOswald Buddenhagen2013-12-191-1/+1
| | | | | Change-Id: I1f51b7d043f49f2f2849eb370ac71366cbaa6da5 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* remove obsolete workarounds for qmake processing order problemsOswald Buddenhagen2013-12-191-14/+0
| | | | | Change-Id: I4b58eee6243c92f67bdd9c8f9da36ef82a489c12 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* Fix positioning of item when first cacheBuffer item is removed.Andrew den Exter2013-12-193-1/+14
| | | | | | | | | | | | | When items prior to the first visible item are removed from the instantiated items list the first item is moved forward by the size of the item removed so it position remains correct relative to the visible items. But if the removed item is the first instanitated item then it's size shouldn't contribute to the offset as the next instatiated item is already offset by its size. Task-number: QTBUG-33619 Change-Id: I05c33f505e2856afa08cd9cd89d8eae97c20679d Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* Docs: fix Drag::onDragStarted() and onDragFinished() signalsJ-P Nurmi2013-12-181-2/+2
| | | | | Change-Id: Iefda2d3611ed0f940255f1375ca4c356827fbc70 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* Fix & cleanup whitespace in qquickdrag.cpp docsJ-P Nurmi2013-12-181-21/+19
| | | | | Change-Id: I85b986c8b3dca6ccc872807a1d2e8b7b71688c0e Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* Fix touch to mouse synthesis/propagation.Robin Burchell2013-12-134-14/+36
| | | | | | | | | | | | | Having mouse events synthesised from both QtGui and internally in QtQuick is not a great way togo about things, especially when QtGui doesn't have the same degree of knowledge as QtQuick about the items in the scene. Thus, we now accept all events inside QtQuick to block QtGui synthesis, which should fix a significant amount of edge-case touch breakage/bad behavior. Change-Id: I14e1c87761c8f43160049b5e6f9da15b4e5edbb7 Done-with: Martin Jones <martin.jones@jollamobile.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2013-12-125-33/+49
|\ | | | | | | | | | | | | Conflicts: src/qml/qml/qqmlcompiler.cpp Change-Id: I802731139d47c5b733dd805f7bf432d67d7331e1
| * Set the format for the fallback offscreen surfacev5.2.0Laszlo Agocs2013-12-051-0/+1
| | | | | | | | | | | | | | | | | | | | Ie76dbe5fd4ab935db3da34f3ff63d217a3ba5013 fails to set the format for the QOffscreenSurface, resulting in BAD_MATCH failures when trying to make it current. Task-number: QTBUG-35410 Change-Id: I1d420556fad4df96a1893cb3513e398eeb6e71aa Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * Fix broken visibility property assignment after d0644b040eTor Arne Vestbø2013-12-051-1/+1
| | | | | | | | | | | | Task-number: QTBUG-35412 Change-Id: I09feca09030a2eb07aa1abebf65481d68b880c79 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * Don't leave the GL context current after cleanup.Gunnar Sletta2013-12-041-18/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When shutting down, we left the gl context current on the window even when it was hidden. On mac this was a problem as it would optimize away our makeCurrent when the surface was made visible again, leading to nothing being rendered. So we call doneCurrent regardless during invalidateGL(). We also check and verify that makeCurrent in invalidateGL() actually succeeds. This lead to another problem which is that closing the app using [x] will call QWindow::destroy() on all windows, removing their platform windows and causing makeCurrent to fail. To still gracefully clean up resources, we introduced the concept of an offscreen fallback surface which is temporarirly used during the cleanup when needed. The problem is still present on QWindow+QOpenGLContext level, and I've opened QTBUG-35363 to fix this. Task-number: QTBUG-35234 Change-Id: Ie76dbe5fd4ab935db3da34f3ff63d217a3ba5013 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| * Revert "Load "@2x" images on high-dpi "retina" systems."Morten Johan Sørvig2013-12-031-11/+0
| | | | | | | | | | | | | | | | | | | | | | This reverts commit 707bbe5dea9d7398b205124a54422f2fafb6f151. By itself this is completely broken and the image will display at twice the size. We need to add code to handle the @2x image but revert for now to get sane behavior. Change-Id: Iccdb26e9d19930b5d0ef4b6c7f596c5766f77a8a Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * Release GL resources of ShaderEffectSource while we still have GL.Gunnar Sletta2013-12-032-3/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | When a Window element is used, the QML window item is deleted before the ShaderEffectSource component and the deleteLater to delete the texture gets handled too late. We now register for the sceneGraphInvalidated signal and release resources synchronously while shutting down. Task-number: QTBUG-35294 Change-Id: Id83b669ddc16723551e5612264ccbad6d3a9bbcb Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* | Don't crash when QCoreApplication is currently being deleted.Sérgio Martins2013-12-121-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In debug mode fixes a crash. The next Q_ASSERT dereferrenced QCoreApplication::instance(). In release mode fixes hundreds of messages about timers: "QObject::startTimer: Timers can only be used with threads started with QThread" A case where this is reproducible is having a QQuickItem that's child of qApp, or in some child hierarchy of qApp. Change-Id: I3b506aefdb537b74dc0d6c755b6874d31be159a1 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Safeguard QQuickWindow::hide() against other GL contexts.Gunnar Sletta2013-12-122-0/+6
| | | | | | | | | | | | | | | | | | If another GL context is bound to another surface on the GUI thread, we can run into issues while cleaning up the SG nodes. Task-number: QTBUG-34898 Change-Id: Ifa02b7cdbc7ab38b3a149a21452cc5071498a7d1 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Size changes do not warrant a transform update.Gunnar Sletta2013-12-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | The size is not a part of the matrix, so the matrix does not need to be recomputed when the size of an element changes. The exception from this is when using transform origin which is already specialcased in the QQuickWindow::updateDirtyNode() function. Change-Id: I2c517880d39aa69232974f65da93333b7cba341d Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | Set highlight size for both dimensions, irrespective of ListView orientationRobin Burchell2013-12-111-18/+34
| | | | | | | | | | | | | | | | | | | | | | The assumption that all list delegates are the same size (dependent on ListView orientation) is not a correct one, even if it is correct most of the time. Task-number: QTBUG-31626 Change-Id: Iba6f3bc5f38d60e3be7632ab17d0c66ab8e73965 Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au> Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | Flickable: Use increased default flick parameters on BB10Oleg Shparber2013-12-114-62/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Due to the high resolution the display default flicking speed is rather slow. This change introduces increased values of QML_FLICK_DEFAULTMAXVELOCITY and QML_FLICK_DEFAULTDECELERATION which feel closer to the native experience. Also cleans up the flick variables a little by moving them to their own header, so that QQuickPathView can also benefit from the improved behavior on BB10. Change-Id: I80878d4cc2a53a8f530b1dc8674f729f70a83119 Reviewed-by: Alan Alpert <aalpert@blackberry.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* | Fix up listening for layout direction changes.Robin Burchell2013-12-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Change the event type to ApplicationLayoutDirectionChange. LayoutDirectionChange is sent for QWidgets only at present, and was wrong anyway: each widget may have a different layoutDirection, but the application instance only has one -- tied to ApplicationLayoutDirectionChange. Relies on I2d2ac7dc07f11be5c7e501a3575b1d0978d8ac31 from qtbase to actually function. Task-number: QTBUG-21573 Change-Id: Ibee25927b2213ae9145d46556698f54d5129bd06 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | Mark item as dirty when nodes are cleanedMichael Brasser2013-12-102-0/+4
| | | | | | | | | | | | | | | | Otherwise they may not be recreated in the correct configuration. Change-Id: Ib103b1874d7f104680eae7b6f43f722b5fa93bf2 Done-with: Aaron Kennedy <aaron.kennedy@jollamobile.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | QSGRenderer: sanity check attribute regs only when QSG_SANITY_CHECK=1J-P Nurmi2013-12-101-4/+2
| | | | | | | | | | | | | | | | | | | | The sanity check that attribute registers are disabled that was always done in debug mode took roughly 16ms on my machine and caused a trivial QML animation to eat 100% CPU. Task-number: QTBUG-35443 Change-Id: I8ba2a80db341d17e08216b3cad1678dd59b9b1a5 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Correctly profile the size of loaded pixmapsUlf Hermann2013-12-091-6/+2
| | | | | | | | | | | | | | | | | | | | Only set the sizes when they're known, prefer request size to implicit size (as the request size is what ends up in the cache), and don't set the size twice. Task-number: QTBUG-35337 Change-Id: Ie516a1cae2d9050f61362ee99cf8a6a9dd8ea3bb Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Fix crash in QQuickLoader when source component is garbage collectedSimon Hausmann2013-12-062-0/+6
| | | | | | | | | | | | | | | | | | | | It may happen that the QQuickLoader is the last entity left in the system holding a reference to the QQmlComponent *sourceComponent. We have to let the garbage collector know about that by keeping a persistent value for it. Task-number: QTBUG-35334 Change-Id: I715864440378fd9dd4f2d5ef8ff2f171c81ed7ef Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Profile a pixmap start event also when loading is asynchronous.Ulf Hermann2013-12-061-0/+3
| | | | | | | | | | | | | | | | | | | | | | If those events aren't profiled we get unmatched events for finished loading and errors. Task-number: QTBUG-35337 Change-Id: I132638edf5625566e37ee06453484f80b2adb74a Reviewed-by: Ulf Hermann <ulf.hermann@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Fix: QSGGeometry lineWidth in qsgbatchrendererTorgeir Lilleskog2013-12-061-0/+3
| | | | | | | | | | | | | | | | | | lineWidth was ignored in the new scenegraph batchrenderer. Regression from 5.1.1 Task-number: QTBUG-35346 Change-Id: I80eacc165f70b5f39d4a01cf458ab1a0e49cbd2d Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* | Propegate filtering state when we extract texture from atlas.Gunnar Sletta2013-12-061-0/+1
| | | | | | | | | | | | | | Task-number: QTBUG-35395 Change-Id: I5ac08ade7763d14bca855b8300156aee0e6a6920 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Only emit focusObjectChanged when an actual change occurs.Michael Brasser2013-12-061-2/+6
| | | | | | | | | | | | | | Change-Id: If18b460a8773e5cac597c02c51836b79711c20f4 Done-with: Matthew Vogt <matthew.vogt@jollamobile.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | Fix Flickable StopAtBounds drag over, back, over behavior.Martin Jones2013-12-051-28/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A Flickable with StopAtBounds failed when: 1. position on a boundary. Without lifting your finger: 2. attempt to drag beyond the boundary -> doesn't drag 3. drag back to initiate dragging 4. attempt to quickly drag beyond the boundary. After 4, the view should be back on the boundary, but it could get stuck a little short of the boundary. Change-Id: I9bfbb4293f4d464bddb97c5c37e9bb91ed7d48e4 Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* | Encapsulate the current context and fix it's usageLars Knoll2013-12-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | Encapsulate accesses to the current context, and rework the way we push and pop this context from the context stack. Largely a cleanup, but simplifies the code in the long term Change-Id: I409e378490d0ab027be6a4c01a4031b2ea35c51d Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Move the vtable pointer from the object to the internal classLars Knoll2013-12-041-4/+4
| | | | | | | | | | | | | | | | This saves one pointer per object, and willmake other optimizations easier in the future. Change-Id: I1324cad31998896b5dc76af3c8a7ee9d86283bfe Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Merge "Merge remote-tracking branch 'origin/release' into stable" into ↵Frederik Gladhorn2013-12-037-77/+139
|\ \ | | | | | | | | | refs/staging/stable
| * | Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2013-12-037-77/+139
| |\| | | | | | | | | | Change-Id: I894ad7b4888744833f487b481950c087fa960a5c
| | * Fix style animations to stop when the item is hiddenJ-P Nurmi2013-12-031-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QStyleAnimation automatically stopped for hidden QWidgets, but didn't know anything about QQuickItems and kept animating regardless of their visibility. QStyleAnimation was changed so that it will keep animating only as long as the animation target accepts animation updates. This change ensures that the style animation updates are accepted only when the item is visible. Task-number: QTBUG-35319 Change-Id: I3c93a653316b8abbbc32940cd7499b660828eff8 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| | * Safely abort when we don't succeed in creating a GL context.Gunnar Sletta2013-12-032-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-33363 (cherry-picked from commit 12eab9162781) Change-Id: Ia2b0c329157786cb4ec703989f12d2fdb1ce6bc8 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| | * Doc: Change the order of QQuickText function definitionsTopi Reinio2013-11-301-49/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For Text QML type, some property and method documentation is missing from the output because in the source file, they appear before the '\qmltype Text' command. This change reorders the functions so that qdoc will see all documentation for Text QML type. Task-number: QTBUG-35018 Change-Id: Icd995f66679d5105912ee12a7aeffd510921a54d Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
| | * Handle boundingboxes with NaN in them.Gunnar Sletta2013-11-302-8/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | NaN does not compare well with other floats. The result is that the bounding box is left at its initial values, FLT_MAX for top-left and FLT_MIN for bottom-right. If so, treat geometry as invalid, aka infinite. Task-number: QTBUG-35192 Change-Id: I1df6987d56a0ce1f500b0eba344a5dcbc55f80a4 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| | * Ensure that QML Windows respect the default platform window stateTor Arne Vestbø2013-11-301-1/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 'visible' property of a Window would be set on the baseclass QWindow like any other property during QML component creation, which would cause create() to be called and the platform window would be created. This left the 'visibility' of the QML window as Windowed, not respecting the platform defaults for how windows should be shown. The user would have to explicitly set "visibility: Window.AutomaticVisibility" for this default to apply, which doesn't make sense -- it should be the default. We solve this by deferring setVisible and setVisibility on the window until the component is complete and we have a full picture of its state. We then ask the platform for the default state based on the window flags (ensuring that eg "flags: Qt.Popup" will not result in maximized windows on iOS and Android), and apply the deferred visibility. The deferred visibility may still be 'false', but setting the window state makes sense anyways, so that a later "visible = true" will apply the default window state. Deferring platform window creation until the geometry has been potentially set from user code also has the benefit that the platform window can check the geometry and apply a default geometry if it's null. This was not possible when the 'visible' property was a regular property, as you could not know if the user's geometry changes would come after platform window creation. Task-number: QTBUG-35174 Change-Id: Icf3236187992048a85b2196c059f9b54699041a4 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
| | * Revert 99480d5420c0beea6771be582c039b550a4461f5Gunnar Sletta2013-11-272-18/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Mac OS X platform plugin has been fixed so that this hack is no longer needed. Not to mention that it breaks on XCB. We keep the warning about bad exposes from the plugin in debug mode. These are still useful for tracking down future bugs. Task-number: QTBUG-35143 Change-Id: I5125f7ae2b7fd77c55e9a29b10aa5434598a9ea9 Reviewed-by: Ulf Hermann <ulf.hermann@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* | | Improve the Canvas threading modelGunnar Sletta2013-12-039-176/+251
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The canvas classes were mixing scene graph resources and GL content across threads. This led to a number of potential crashes in addition to that the FBO based rendering had significant potential for stalling. QQuickContext2DTexture is no longer a QSGTexture with ambiguous ownership. Instead we use textureForNextFrame which is called on the render thread while the GUI is locked to synchronize state from the Context2D's "texture" into the actual QSGTexture. This means that cleanup of the QQuickContext2DTexture and the QSGTexture used for display is no longer in conflict. QQuickPixmap no longer contains a QSGTexture either as these are strictly for use on the scene graph thread. The Images are anyway loaded explicitly as QImage files in QQuickContext2DContext and uploaded again for every Canvas, so relying on the GL paint engine to do the caching will give us the same with less code. I also changed the default strategy to Immediate as that one supports the full API (cooperative does not support readback) and because cooperative is pretty bad for performance since the rendering happens in the sync() step. Task-number: QTBUG-34268 Task-number: QTBUG-31052 Task-number: QTBUG-21935 Task-number: QTBUG-30689 Task-number: QTBUG-29007 Change-Id: Ic540b22d5faa1188e21e56a3beee24191d13f423 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>