aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
Commit message (Collapse)AuthorAgeFilesLines
* Reuse the memory we use for vertex uploads.Gunnar Sletta2015-01-062-11/+65
| | | | | | | | | | | | | | | | | | | | | Every batch would have its own buffer with its own memory and the original idea was that it would stabilize so that the same batch would be used over and over, so the memory allocatd for each batch's buffer would be reused. In practice batches get discarded and recycled in somewhat arbitrary order so we always end up reallocating. Instead, use a single buffer for all uploads. This saves us several reallocations per frame, and also prevents pooling of several potentially large allocated blocks inside the renderer. The exception is when using visualization or for drivers which have broken index buffer support (nouveau only currently), where we keep the existing behavior as the buffer data is needed during rendering and visualization. Change-Id: Id29095e00128ec1ee6d4ac3caa8f2c17cc7bbd27 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* Remove bogus assert.Gunnar Sletta2015-01-051-2/+0
| | | | | | | | | | It is perfectly valid to reparent nodes to a parent that is part of an existing hierarchy. Change-Id: Icf2dbe6030d399047e7ebe735e3096d1a8cd8c0e Task-number: QTBUG-43278 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* Traverse children correctly when reparenting.Gunnar Sletta2015-01-051-1/+1
| | | | | | | | | | | Since the children are being removed from the parent, using nextSibling on the child won't work. We need to extract the first child from the parent until there are no more children left. Change-Id: Ifca5f2760e2b1c7ba56c198623c5dc9d82c7560f Task-number: QTBUG-42530 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* Use QV4::ScopedObject typedef instead of actual typeOleg Shparber2015-01-032-4/+4
| | | | | Change-Id: I0b68c534ea513a7c230b12114f6b42b069f9864b Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Use QV4::ScopedString typedef instead of actual typeOleg Shparber2015-01-021-3/+3
| | | | | Change-Id: I64ecbf6cea463387a70e909ecc5f9165d22a7b0f Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Remove v8engine dependency in fromVariant conversionsLars Knoll2015-01-021-2/+1
| | | | | Change-Id: I3427129dc7a0e68c8fa0b61f353835e2bee179a0 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Remove v8engine dependency in toVariant conversionsLars Knoll2015-01-021-10/+4
| | | | | Change-Id: I0f2f77c9cc268a0c5ca3ffe0cd66fc98bb1964b3 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Initial work on gadget supportSimon Hausmann2014-12-223-150/+38
| | | | | | | | | | | | | | | | | | | | | | Changed built-in QtQml value types to use gadgets. This is in preparation for supporting external gadgets. This replaces the mostly direct inheritance of the concrete value types with gadgets and "dynamic" inheritance through QQmlValueType being generic. Over time as some of the value types may become gadgets, we can remove the ones here. It's important that these "separate" gadgets have the same memory layout as the actual types (QPointF, etc.). Also while QQmlValueType remains practically a singleton, it's not required anymore to be one. Consequently the JS wrappers for value types keep their own instance of QQmlValueType. This allows eliminating the qobject_cast in various places that dealt with the singleton nature. This comes at a cost, making the JS wrappers slightly heavier. However that is meant to be a temporary situation and finally the value type wrapper should merely store the meta-object in addition to the data and the type. Change-Id: I15071ded0a1e54203f29ec1ecf7a9ab646d1168e Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Remove most of the places where getPointer() is usedLars Knoll2014-12-203-32/+32
| | | | | | | This is no longer required, and simply uglifies the code Change-Id: Iba91a1d7735ebe23a43437f137a488423b6eb743 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Allow batching ShaderEffects without atlas samplersJocelyn Turcotte2014-12-183-25/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is currently necessary to set supportsAtlasTextures to enable batching of all ShaderEffect, even if they sample a ShaderEffectSource or have no sampler uniform at all. After fccbe57258c10e18ccdbbec405f5522dbd97af66 it is not necessary to set the RequiresFullMatrix flag based on supportsAtlasTextures since this now prevents batching altogether. Limiting batching should however also first verify that there are any sampler of the atlas used on that ShaderEffect in QQuickShaderEffectMaterial::compare, since that check wouldn't have any effect in QQuickShaderEffect::updatePaintNode through RequiresFullMatrix. Also make sure that using texture()->normalizedTextureSubRect() as the texture coordinate attribute is synchronized with calls to removedFromAtlas for all samplers and make sure that this only applies when the texture count == 1. This fixes a bug where setting supportsAtlasTextures on a ShaderEffect with more that one sampler would incorrectly use the texture coordinates of the first atlas texture in the geometry. This patch also removes: - The unneeded check for the RequiresFullMatrix in compare; the same program can be used in batched geometries and the renderer itself will prevent merging in that case. - The possibly heavy string comparison of m_source; QQuickShaderEffectMaterial::type() and QQuickShaderEffectMaterialKey are doing that for us more efficiently. I updated the documentation to clarify the 1-texture rule and explain the difference with qt_SubRect uniforms and when one or the other should be used. Change-Id: I85a86b8e7cb76f1536d5fcd369c7889f22537846 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Update scenegraph docs regarding threaded render loop usageLaszlo Agocs2014-12-171-8/+10
| | | | | Change-Id: I4f8aa9b209096bbcdabcb689007e4166279f8a4c Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Allow batching of GL_LINES and GL_POINTS geometryUlf Hermann2014-12-161-1/+2
| | | | | | | | | | | | | | | This is analogous to GL_TRIANGLES and GL_TRIANGLE_STRIP. There is no reason why we shouldn't batch it. In the case of GL_LINES this means a slight behavior change, though: If you provided geometry with an uneven number of vertices, it would draw lines the way opengl specifies it and drop the last vertex. Now, with batching, it will draw a line from the last vertex of an "uneven" node to the first vertex of the next node. This, however, is exactly like it already works for GL_TRIANGLES if you specify a number of vertices not divisible by 3. We assume the user should specify a number of vertices that matches the drawing mode. Change-Id: I372b9c15a19f065d3aeb3727688cca408ce9608e Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Simplify QFont value type wrapper in preparation for gadgetsSimon Hausmann2014-12-132-21/+3
| | | | | | | | | | | | | | | The value type wrapper for QFont tries to keep track whether pixel or point sizes were set and warns the programmer accordingly if both were set. This is implemented using separate boolean variables, but this can also be done using QFont's resolve mask. This move is motivated by the ability of the value type wrappers to operate only on the type they wrap in the future, without requiring additional helper variables. Change-Id: Ia05093b5dcc950281ef89b2bb6fe96c18329cdfa Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Support threading with QQuickRenderControlLaszlo Agocs2014-12-122-1/+17
| | | | | | | | | | | | | | | | | | | | | Reorganize the rendercontrol example to demonstrate both the single and multi threaded approaches. A small helper function is introduced to the QQuickRenderControl API: The QSGRenderContext has to live on the render thread. Previously there was no way for applications to move it to the desired thread. This is now possible. Pass --threaded to the rendercontrol example to use a separate render thread. [ChangeLog][QtQuick] QQuickRenderControl can now be used to render the Qt Quick scene on a dedicated render thread, similarly to how the built-in threaded render loop operates. Task-number: QTBUG-42813 Change-Id: I01c3b2ffca8a174d9d2c267a51f2e484ed7b34b3 Reviewed-by: Gunnar Sletta <gunnar@sletta.org> Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
* Default to threaded when using opengl32Laszlo Agocs2014-12-121-1/+6
| | | | | | | | | | | | | | | | | | This appplies only when using opengl32.dll. When using ANGLE or when using another non-opengl32 DLL, the "windows" single-threaded loop is chosen, just like before. One badly written autotest is fixed. We must never assume that performing some QQuickWindow related work will leave a context current on the main thread. The assumption worked by accident with the single-threaded render loop. [ChangeLog][QtQuick] Changed to use the threaded render loop by default on Windows when running with desktop OpenGL (opengl32.dll). Change-Id: I21798622c19ca510a97a96c19c1e70e29f086e3a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into devSimon Hausmann2014-12-0938-686/+592
|\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/jsruntime/qv4arraydata.cpp src/qml/jsruntime/qv4context_p.h src/qml/jsruntime/qv4globalobject.cpp src/qml/jsruntime/qv4internalclass.cpp src/quick/items/qquicktext_p.h src/quick/items/qquicktextedit_p.h src/quick/items/qquicktextinput_p.h Change-Id: If07e483e03197cb997ef47a9c647a479cdb09f4c
| * Merge "Merge remote-tracking branch 'origin/5.4.0' into 5.4" into ↵Simon Hausmann2014-12-093-4/+4
| |\ | | | | | | | | | refs/staging/5.4
| | * Merge remote-tracking branch 'origin/5.4.0' into 5.4Simon Hausmann2014-12-053-4/+4
| | |\ | | | | | | | | | | | | Change-Id: I5978bab8a4fde4c2ee33907fd81f49cb69e4fb26
| | | * qttest: make findChild available only for QtTest 1.1Fawzi Mohamed2014-12-051-2/+2
| | | | | | | | | | | | | | | | | | | | Change-Id: I4ceb1a969bd4296b82f899088b02b5e8cf100bcd Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| | | * Update plugins.qmltypesKai Koehne2014-12-052-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I9b6c54b572d4653d609b154000e274b9e64d591f Reviewed-by: Fawzi Mohamed <fawzi.mohamed@theqtcompany.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * | | Avoid string-based connect in QQuickImageBase.Michael Brasser2014-12-082-6/+6
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | String-based connect is relatively slow, and should be avoided in core items. This improves performance of the tst_librarymetrics_performance::instantiation_cached(043) image - empty test case (approximately halving the time). Task-number: QTBUG-43096 Change-Id: I02485c515435eceacc95c55f877fc8566e7406d7 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * | Fix QtQuick2 module unload supportChris Adams2014-12-044-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit ensures that the value type providers installed by the QtQuick2 QML module during initialization are uninstalled when the plugin is unloaded. It also fixes a bug in the type compiler so that it now works with types from plugins which get unloaded and then reloaded. Task-number: QTBUG-43004 Change-Id: I4b3fb75aae65dfbc5de9c88701ed82514087ab7d Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
| * | Error out when trying to set an item as its own parentFrederik Gladhorn2014-12-031-1/+1
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-43063 Change-Id: I92a33047ac7fa2afeff4986b6e42c07afbc59918 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
| * | QtQuick.Window: add missing documentation for Window methodsShawn Rutledge2014-12-031-19/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Several more methods/slots are inherited from QWindow but are not documented for the QML Window type. Also some other documentation improvements. Task-number: QTBUG-40093 Task-number: QTBUG-42426 Change-Id: Ib753be269cbc41ee540e6556e0ef483758eefe62 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| * | Merge remote-tracking branch 'origin/5.4.0' into 5.4Simon Hausmann2014-12-022-2/+2
| |\| | | | | | | | | | Change-Id: I89bbb2977350a03c156d531f810d08a5560ffbb3
| | * Make effectiveDevicePixelRatio() return a qreal.Morten Johan Sørvig2014-11-302-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fractional scale factors are not as broken as previously believed, especially for Qt Quick. Keep the door open for finding a way to support it at some point in the future. Change-Id: Ifeadcc53175ac6c25ea0288d5fe1966e3de408f9 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
| * | Don't default to HighQualitySubPixelAntialiasing on WinRTAndrew Knight2014-12-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The subpixel shader is probably not a good default here because most devices are mobile (can change screen orientation) and have high pixel densities. Furthermore, it breaks text rendering on the Surface RT, where the graphics hardware is too weak to support the number of uniforms the subpixel shader uses. Task-number: QTBUG-41769 Change-Id: I10210af91976ab55e611025c0452a1ee1f3114a9 Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
| * | Add missing call to rendercontrolLaszlo Agocs2014-11-281-1/+3
| | | | | | | | | | | | | | | Change-Id: Ic8c8e6d7a9d99216292b8b4faa2926d849333a05 Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
| * | Add since 5.4 markersAlbert Astals Cid2014-11-281-0/+4
| | | | | | | | | | | | | | | | | | Change-Id: Ic0e594cb53016e6f68fbfb6e6064707344afefef Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| * | Merge "Merge remote-tracking branch 'origin/5.4.0' into 5.4" into ↵Frederik Gladhorn2014-11-2117-460/+213
| |\ \ | | | | | | | | | | | | refs/staging/5.4
| | * | Merge remote-tracking branch 'origin/5.4.0' into 5.4Frederik Gladhorn2014-11-2117-460/+213
| | |\| | | | | | | | | | | | | Change-Id: I2e7fc085663e00dd0390593a91c30d23d1369c4e
| | | * Invalidate font caches when switching between threadsv5.4.0-rc1Eskil Abrahamsen Blomfeldt2014-11-137-3/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The font caches can only be used from a single thread at a time. QFontEngineFT for instance, uses a global static thread storage which is accessed on releasing and creating engines, and this causes a crash if the font engine is created on one thread and released on another. We use the updatePolish() function to make sure the caches are empty before entering updatePaintNode(), and then we invalidate the cache again after updatePaintNode() is done. [ChangeLog][Text] Fixed uncommon crash in text nodes. Change-Id: I01dbc2ed58aeebd03d77a157c700330334bdb385 Task-number: QTBUG-38800 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
| | | * Doc: Change the div classes for three-column layoutTopi Reinio2014-11-111-12/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new documentation style for publishing docs under qt.io requires dedicated div classes for pages that use a three- column layout. The new divs enable the columns to stack and react to changes in the window width. Task-number: QTBUG-42086 Change-Id: Id0ccb0ef7e0be237789b8c891db05413efc1f8aa Reviewed-by: Martin Smith <martin.smith@digia.com>
| | | * Revert "Fix pixel bleed in BorderImage"Eskil Abrahamsen Blomfeldt2014-11-107-439/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit a9238292145e05d36be7c35bdd50829c6400a3de. It also reverts follow-up commits: 87755d0437413cfb875c50e3dfa53030601567c9 c2c710e5a8d66fa696276aa69c2e3b00436eefe5 cc8a76ce8ea76afe912902067e95ca2abf9e482f The new implementation is much too slow because it will cause each section of the border image to be uploaded to the atlas, and it will not be shared between different border images nor between different sizes of the border. The performance regression is so significant that it's not worth it for the original bug fix. We leave the tests around, so some of those might regress due to this. Change-Id: I3f56f4564255ebb77e6487881a6a11b19ad0234e Task-number: QTBUG-42288 Task-number: QTBUG-35838 Reviewed-by: Michael Brasser <michael.brasser@live.com>
| | | * Merge "Merge remote-tracking branch 'origin/5.4' into 5.4.0" into ↵Jani Heikkinen2014-11-108-175/+189
| | | |\ | | | | | | | | | | | | | | | refs/staging/5.4.0
| | | | * Merge remote-tracking branch 'origin/5.4' into 5.4.0Oswald Buddenhagen2014-11-108-175/+189
| | | | |\ | | | | | | | | | | | | | | | | | | Change-Id: I2c69deb3bc69da1a06485aaf72fb298b08756734
| | | * | | Fix not having a context when cleaning up on WindowsLaszlo Agocs2014-11-101-3/+18
| | | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The same old issue surfaces in the windows render loop too. The basic render loop is already fixed, apply a similar patch to the windows one too. Task-number: QTBUG-42213 Change-Id: I07068315f5164014e329b8ce061947c97ae9da61 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| | | * | Documentation: Update QtQuick import value to 2.4Caroline Chao2014-11-051-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are new APIs in Qt 5.4, the import version needed is 2.4. Change-Id: I1c52c6a50362f539670d9ad00e03e57208234a17 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| * | | | Fix multirow spritesheet rendering in paused stateJoni Poikelin2014-11-211-2/+19
| |/ / / | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-42777 Change-Id: I8027f100c593ae7c57df7c952e66cc2b3fae1dd9 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| * | | Do not send deferred deletes from QQuickRenderControl::invalidate()Laszlo Agocs2014-11-181-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Leave it up to the clients of QQuickRenderControl to do this, if they want it. It is usually not necessary. In the single-threaded widget world forcing deferred deletes to execute on every invalidate(), so for example from the hide event handler of QQuickWidget, is dangerous because widget apps tend to deleteLater() all sorts of widgets which can then be destroyed at unexpected times. From windowDestroyed() we continue to send the deferred deletes, just like all the render loops do. Task-number: QTBUG-42618 Task-number: QTBUG-40435 Change-Id: I8189124e2e7675361ee97bd8ba3e88b10ef193fa Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| * | | Doc: removed reference to sizeHintNico Vertriest2014-11-181-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sizeHint is not a property of QQuickView Task-number: QTBUG-39044 Change-Id: I6e19e975ab71f73ddaf703956afb90f2e607b6f8 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| * | | Fix render control docsLaszlo Agocs2014-11-171-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix a typo and add a note to the signals. Change-Id: Ia8810562c5b5f192d7e54bc965807b8e78a26985 Reviewed-by: Karim Pinter <karim.pinter@digia.com> Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
| * | | Add padding to distance field glyph cacheEskil Abrahamsen Blomfeldt2014-11-112-9/+22
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Linear filtering can cause pixels outside the glyph's bounding rect to be sampled. On drivers where uninitialized texture data is actually uninitialized, this could cause artifacts in rendering for glyphs at the right edge of the initiliazed area since they would sometimes sample random pixels. To avoid this, we add padding between the glyphs in the cache. [ChangeLog][Qt Quick] Fixed uncommon artifacts in rendering of distance field glyphs. Task-number: QTBUG-42148 Change-Id: I6982b4a150d9459185d50a4362e1ead588d3860f Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
| * | QQuickWindow: let 'clearFocusObject' clear all the way to the rootRichard Moe Gustavsen2014-11-071-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous code was wrong, as it cleared focus from the active focus item directly. By doing so we would only clear focus inside the focus scope that surrounded the item, but leave the scope itself with active focus (which would then be the focus object). The intended result is rather to end up with the root as focus object. Change-Id: I455a8939f8bc6c48765119b995aa781aee6d1e70 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
| * | Debug: Make it possible to save distance field cache on WindowsEskil Abrahamsen Blomfeldt2014-11-071-75/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes compilation possible of the saveTexture() function which is used to store the distance field glyph cache on disk when debugging. It also changes the warnings output from here to have no prefix, since this is anyway always available as the context in Qt 5. Change-Id: If3b64f0921a59c485b5321a5465369708e764afc Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
| * | Initialize member variable QSGAnimationDriver::m_lag.Friedemann Kleint2014-11-051-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes purify warning: [W] UMR: Uninitialized memory read in QSGAnimationDriver::advance(void) {1 occurrence} QSGAnimationDriver::advance(void) [qtdeclarative\src\quick\scenegraph\qsgcontext.cpp:221] Task-number: QTBUG-42213 Change-Id: Ide35830c60c5935644747da5cfbad1cdbd357232 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| * | Add attached Window::contentItem propertyJ-P Nurmi2014-11-053-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is essential to the Qt Quick Controls for implementing floating text selection handle popups. Change-Id: Ibae65110a5db6d65dacd197fef3ad567d11342dc Reviewed-by: Alan Alpert <aalpert@blackberry.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * | Add a debug function to save contents of distance field cacheEskil Abrahamsen Blomfeldt2014-11-054-173/+175
| |/ | | | | | | | | | | | | | | | | Just copy the one from QSGSharedDistanceFieldCache with some compile fixes to the superclass so we store the default cache as well. Change-Id: I1fcc390601eea58f8b7729c9cead418e4c94714c Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>
* | Avoid inadvertent copies of the windows listRoger Maclean2014-12-081-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are a couple of ways in which this code creates temporary copies of the window list, m_windows. This is often benign but there are also places (e.g. startOrStopAnimationTimer) which get non-const references to items which results in m_windows being detached from the temporary resulting in a real copy of the list items. Again the copy is often fairly benign, however, as the code also relies heavily on pointers to items in the list, it can also result in crashes. I think it might be advisable to store a list of pointers to Window structures rather than store the structure themselves as it appears really easy to introduce copies of the list accidentally. The removal of the use of foreach for example is not made here for aesthetics but because it introduces a hidden temporary copy of the list. Change-Id: I504951a897c4fb0cf106f5a4792b5cfcd532ba8f Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | Cleanup destruction of heap objectsLars Knoll2014-11-211-8/+2
| | | | | | | | | | | | | | | | Generate the code from a macro instead of duplicating boiler plate code. Operate on Heap::Base instead of Managed. Change-Id: I84c5a705980899be3e5b931a093645e50d3923bf Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>