aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml
Commit message (Collapse)AuthorAgeFilesLines
* Only heap allocate binding bits storage if needed.Aaron Kennedy2015-04-272-15/+43
| | | | | | | | | | | | | | | | | | | | For samegame, this has the following change on the total bytes allocated: Startup (main page): Before: 1636 After: 1072 Difference: 564 bytes (-34%) Actual game (single player): Before: 14120 After: 10432 Difference: 3688 bytes (-26%) Done-with: Robin Burchell <robin.burchell@viroteck.net> Change-Id: I10fd1e9f1440dcff93aed06e2c77c2912bc7dd39 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> (cherry picked from commit 54a19db8d00b67044861c8ffd1d5b1e646658609) Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* V4: include alloca private header as alloca is used unconditionally.Pasi Petäjäjärvi2015-04-221-0/+1
| | | | | Change-Id: I9d0f63c41609c4aaef272fabafd5b1272853a099 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Eliminate remaining property cache string lookups upon object instantiationSimon Hausmann2015-04-211-4/+5
| | | | | | | | Even for the id property binding we can use the property data cache and therefore avoid string hashing. Change-Id: Id9a4ca3159cdfe5ba93060f1bc8626e70140daa1 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Speed up instantiation of objects that are assigned to list propertiesSimon Hausmann2015-04-211-3/+10
| | | | | | | | | | For example massive amount of Item{} objects that are "children" of another item and thus get assigned to the default data list property. Instead of repeatedly retrieving that list property via a meta-call, we can do that only once and re-load if necessary. Change-Id: Ia7d10b84b3c7dca58d9f0b4b2138bd6f916c128d Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Speed up property binding initialization on object creationSimon Hausmann2015-04-212-47/+38
| | | | | | | | | | Avoid repeated string hashing and lookups in the property cache in order to retrieve the property details when initializing literal and script bindings. Instead we now cache the property data at type validation time, similar to how the property data was encoded in the VME instructions in the old engine. Change-Id: I3957c7c4c3e26dfa97c4880b23940a3755ee90e4 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Address uninitialized pointer variablesHolger Hans Peter Freyther2015-04-202-0/+4
| | | | | | | | Coverity CID 10721, 84861, 86705, 85424, 85422, 85259, 84863, 84857 Change-Id: Ia86970b5ac4e0be9de01b79b618d33011da6a328 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Fix forward declaration of QQmlSourceLocation.Friedemann Kleint2015-04-171-1/+1
| | | | | | | | Fix warning: qtdeclarative/src/qml/qml/qqmljavascriptexpression_p.h(55) : warning C4099: 'QQmlSourceLocation' : type name first seen using 'struct' now seen using 'class' Change-Id: Id441502913180631fe09c2f256498063c8f144b1 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Merge "Merge remote-tracking branch 'origin/5.4' into 5.5" into refs/staging/5.5Liang Qi2015-04-161-2/+9
|\
| * Merge remote-tracking branch 'origin/5.4' into 5.5Liang Qi2015-04-161-2/+9
| |\ | | | | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/qml/debugger/qv4profilerservice/qv4profilerservice.pro tests/auto/qml/debugger/qqmldebuggingenabler/qqmldebuggingenabler.pro Change-Id: I76d87e3df97ebdba902ca3d7488c1582eca2a83c
| | * Add note clarifying return value of Qt.openUrlExternally()Aaron McCarthy2015-04-021-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On some platforms (notably wayland and xcb) the Qt.openUrlExternally() call returns as soon as the request is passed to the underlying system. The call may still fail, but this status is not reported to the application. Change-Id: I66936440f162154f08ab5abcf5b449844930a81b Reviewed-by: Valerio Valerio <valerio.valerio@jollamobile.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | | Speed up composite type instantiation with lots of IDsSimon Hausmann2015-04-163-28/+13
| | | | | | | | | | | | | | | | | | | | | | | | We don't need to convert from a QHash to a QVector in order to populate the property name cache in QQmlContextData. Change-Id: Ifa8e4f64a1e174907e92684b2d38abaf0a4a705c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Speed up object creationSimon Hausmann2015-04-169-23/+38
| | | | | | | | | | | | | | | | | | | | | | | | Avoid copying url and file name twice into the context every time we instantiate an object. Change-Id: I1c76b80b9c44f95512af5899d760151f6dcd7bb5 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Speed up object creation with lots of id name objectsSimon Hausmann2015-04-163-32/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the common case when objects are referenced by id, we don't need the QQmlContextData's property name cache for the lookup. Instead of bindings we resolve the id to an integer at type compilation time. Therefore we can delay the population of the QQmlContextData's propertyNames until we need it and therefore safe time on startup. Change-Id: I2e8eeb51b1ac92f230059be3467f9a1e00fdbbef Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Speed up creation of objects without script bindingsSimon Hausmann2015-04-162-28/+31
| | | | | | | | | | | | | | | | | | | | | | | | Avoid the creation of the QML binding wrappers if we don't need it, by moving the creation into a function that creates it on demand. Change-Id: I1af6a8507a114c1a0b83374704981b7ed4c4a3fc Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Speed up copying of value types in bindingsSimon Hausmann2015-04-163-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | When a binding results in a value type reference and the destination property is of the same time, then we can avoid a heap allocation and just allocate the value type memory on the stack, construct, copy and destruct. Change-Id: If71ef82b0ced85c1b962c5e44147d6c07edd1440 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Speed up value type binding creationSimon Hausmann2015-04-164-40/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Avoid calling QMetaType::construct/destruct(typeId, ...) as that requires repeated lookups in the type registry. Instead cache the constructor/destructor/etc. function addresses in the QQmlValueType singletons as QMetaType * Allocate memory for the gadget pointer lazily, to accommodate the common case of a value type binding by property reference. Change-Id: I98a3ac73453b8f80027c06401b4f29a9707949d2 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Changed QML type lockingSimon Hausmann2015-04-163-47/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace the use of QReadWriteLock with a plain QMutex. At this point QReadWriteLock adds a lot of overhead due to its internal QHash and otherwise offers little over a recursive mutex, especially given that there is most of the time only one reading thread and one writing thread. Change-Id: I0a91e4a64cff5d25e4a133ed46b08912e81bb055 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Speed up creation of objects that don't import scriptsSimon Hausmann2015-04-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | In the common case of no 'import "Foo.js" as Bar' we can avoid the creation of the JS array that holds the script references. Change-Id: I6704bd9efaf8681f939a148b2cb0a1de2cb22d80 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Speed up binding evaluationSimon Hausmann2015-04-163-28/+10
|/ / | | | | | | | | | | | | | | | | Don't spend any cycles of determining the location of the binding (file, line, column) unless we really need that information. That's the case when the profiler is active or an error happens. Change-Id: Iae97808d500b88fed6a813e8b224aa6ebe04d3b6 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Unregister types in the QMetaType system on unload.Robert Griebl2015-04-151-1/+10
| | | | | | | | | | | | | | | | | | This patch will enable the unregistering of previously registered QMetaTypes, when the corresponding Qml type is dead. The API for this was added to QtBase with b00201b. Change-Id: I96d4a3004d8da59ee8edf7cfd6d2fef3a5410807 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Simple speed-up for binding setup during object instantiationSimon Hausmann2015-04-141-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | We use stringAt() to retrieve the name of the id property of an object but all we do with that string is check if it has a length. So if an id is set, we allocate memory and copy the string data into a new QString, and if it's not set then we get a default constructed QString. Either way the string isn't used and we can simply check for whether the id is set by checking if the idIndex is non-zero. Change-Id: Ib84fb05ed31c59f7e85dac72ab61b4d3bc9c902b Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Cleanup: Fix const'ness of the property binding validator codeSimon Hausmann2015-04-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | The property validator is supposed to validate the proposed property bindings and abort type compilation if necessary. As such it is a read-only pass through the data structures and therefore we make it const. However it does have a side-effect of collecting some state, which however is "write-only" and therefore marked as mutable. Those variables are written to, but not read during this pass. Change-Id: I6a3655fedbd6691b7498cf82ca1c8e21dd635bd3 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | CleanupSimon Hausmann2015-04-141-3/+2
| | | | | | | | | | | | | | | | | | Avoid re-using the same variable for different purposes, so just pull in the first use into the tight scope and the second "property" variable close to the loop it is used with. Change-Id: I3a325478f9e56413b65dea9c7e05566497fbc6cf Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Fix some qdoc warnings.Friedemann Kleint2015-03-313-5/+5
| | | | | | | | | | | | | | | | | | | | | | qtdeclarative/src/qml/qml/qqmlinfo.cpp:46: warning: Cannot find 'qmlInfo(...)' in '\fn' QQmlInfo qmlInfo(const QObject *object) qtdeclarative/src/qml/qml/qqmlexpression.cpp:366: warning: Undocumented parameter 'column' in QQmlExpression::setSourceLocation() qtdeclarative/src/qml/doc/src/qmlfunctions.qdoc:176: warning: Undocumented parameter 'reason' in qmlRegisterExtendedUncreatableType() qtdeclarative/src/qml/doc/src/qmlfunctions.qdoc:176: warning: No such parameter 'message' in qmlRegisterExtendedUncreatableType() Change-Id: Iec801b33b11bd57abadd968a90c49f8eba1280d5 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com> Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
* | Fixing yet another memory leakRobert Griebl2015-03-251-2/+1
| | | | | | | | | | Change-Id: I1c083a488f963f8dd40f3bd6db5a46ac9db66ffb Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Remove QItemSelection value-type, use Array insteadGabriel de Dietrich2015-03-221-3/+0
| | | | | | | | | | | | | | | | We implement this by adding QItemSelection to the set of sequence types. Change-Id: Ia3db376c806d8f062639e22c7f4bf392f114c266 Reviewed-by: Stephen Kelly <steveire@gmail.com>
* | Remove QModelIndexList value type, use Array insteadGabriel de Dietrich2015-03-221-8/+5
| | | | | | | | | | | | | | | | We implement this by adding QModelIndexList to the set of sequence types. Change-Id: If7e0e88ab0c2916c2b65a926f8241549520d7391 Reviewed-by: Stephen Kelly <steveire@gmail.com>
* | Fix conversion between char and string.Christian Strømme2015-03-211-2/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a QChar (or char) was used to set a QString property, the intermediate value used by the QML engine (int), would be converted to a string representation of the integer and not the actual character. To avoid this behavior, characters are now stored as string objects and the string is then converted to the target char type if possible. A side effect of this solution is that it is makes it possible to assign a string to a char property as well, but only if the string contains exactly one character. [ChangeLog][QtQml][Important Behavior Changes] Assigning a char to a string will now create a string with the actual character instead of a string representation of the character's code-point. A side effect of this change is that a one-character string also can be assigned to a character type. Task-number: QTBUG-44934 Change-Id: Ifd15386933ee11354ee1bbb5598a5f0b00a08616 Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com> Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Remove forward declaration of QScriptContextLars Knoll2015-03-181-1/+0
| | | | | | | | | | Change-Id: I2ab642b73bf7fdd5d82085b0dc0f61d32a5c1fb5 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Fix warningAleix Pol2015-03-161-1/+1
| | | | | | | | | | | | | | | | If the arguments of console.timeEnd are wrong, say it's timeEnd instead of time. Change-Id: Ida8a76cd452cf3aecc03e5064bbf213333d93a03 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Fix usage of QtQmlDevTools private headers on OSX with framework buildsSimon Hausmann2015-03-167-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously this module borrowed its private headers from QtQml, so that when writing QT += qmldevtools-private, you'd get the private headers from QtQml. This doesn't work when QtQml is built as a framework. A cleaner solution is to give this module its headers proper by letting syncqt create the forwarding headers correctly (and consequently also include them in make install). In order for this to work, the included headers themselves cannot include any headers from QtQml, which this patch also takes care of, through a centralized inclusion of qv4global_p.h. Change-Id: I9bb8337956a2774cfaca6b338369face6c6ee785 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
* | Remove QQmlDirParser from QtQmlDevToolsSimon Hausmann2015-03-163-28/+4
| | | | | | | | | | | | | | | | This class is not needed in the library. Change-Id: Ie880086a849b62a2856d1f388a64d363b040cb56 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | Acknowledge QPersistentModelIndex is a built-in meta-typeGabriel de Dietrich2015-03-121-30/+3
| | | | | | | | | | | | | | | | | | | | We remove the now unnecessary meta-type registration and conversions for QPersistenModelIndex. This reverts and amends commit 7b29a983fa794291ff8ec. Change-Id: I4e8346bb7ab03766e1dd5c2c23bb6cf47ab1f455 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | QML Engine: ArrayBuffer XHR response type supportValery Kotov2015-03-091-0/+76
| | | | | | | | | | | | | | | | | | | | | | Support for "arraybuffer" response type for QQmlXMLHttpRequest was added. [ChangeLog][QtQml][QQmlXMLHttpRequest] QQmlXMLHttpRequest now supports "arraybuffer" binary response type. Change-Id: I866e543cc7bc6ab037ffff1ef6628057b73daf90 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Work around QPersistentModelIndex being a built-in meta-typeGabriel de Dietrich2015-03-051-3/+27
| | | | | | | | | | | | | | | | This is a temporary work-around and will be removed once I63d733d1eb66aa61691e7afce27fe7372a83ac00 is merged in qtbase. Change-Id: I6cfcf1ddc2c9d408c26c171be865d40141de7fa0 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | QtQml: Micro-optimize iterator loops.Friedemann Kleint2015-02-264-12/+13
| | | | | | | | | | | | | | Avoid repeated instantiation of end() in loops, use variable instead. Change-Id: I3bb1c6918cfd16a5dcefbcc03c442e99fe9bf76b Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.4' into 5.5Frederik Gladhorn2015-02-242-5/+10
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf LICENSE.GPLv2 examples/qml/networkaccessmanagerfactory/view.qml src/qml/jsruntime/qv4runtime.cpp src/qml/jsruntime/qv4stringobject.cpp Change-Id: I5d12f436d60995e51d5c2f59d364e9cbc24f8e32
| * Fix crash when invalidating qqmltypeloaderDaiwei Li2015-02-061-4/+7
| | | | | | | | | | | | Change-Id: I16db2ea9a6c25d26e2b803b9bb8d9ef7156e254d Reviewed-by: Gunnar Sletta <gunnar@sletta.org> Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| * Doc: add missing "winrt" & "winphone" to Qt.platform.osJ-P Nurmi2015-02-021-0/+2
| | | | | | | | | | | | Change-Id: Idc252cc0303ffd7e8259cd9bf19a05a643657600 Reviewed-by: Caroline Chao <caroline.chao@theqtcompany.com> Reviewed-by: Karim Pinter <karim.pinter@digia.com>
| * Doc: fix Qt.platform.os since -tagJ-P Nurmi2015-02-021-1/+1
| | | | | | | | | | Change-Id: I623ae8818d6d8f10faec2f823c4d27a37d8fecda Reviewed-by: Caroline Chao <caroline.chao@theqtcompany.com>
| * Remove unnecessary QString::toUtf8 method callNobuaki Sukegawa2014-12-201-1/+0
| | | | | | | | | | | | Change-Id: Idc4c5466e23e72d33441bbc19f03fbc27348b09f Reviewed-by: Alejandro Exojo Piqueras <suy@badopi.org> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Fix some qdoc-warnings.Friedemann Kleint2015-02-231-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | qtdeclarative/src/quick/scenegraph/coreapi/qsgmaterial.cpp:384: warning: Class RenderState has no \inmodule command; using project name by default: QtQuick qtdeclarative/src/quick/scenegraph/util/qsgsimplerectnode.cpp:39: warning: Class QSGSimpleRectNode has no \inmodule command; using project name by default: QtQuick qtdeclarative/src/quick/scenegraph/util/qsgtextureprovider.cpp:38: warning: Class QSGTextureProvider has no \inmodule command; using project name by default: QtQuick qtdeclarative/src/quick/items/qquickwindow.cpp:3156: warning: Cannot find 'closing(...)' in '\fn' void QQuickWindow::closing() qtdeclarative/src/quick/items/qquickwindow.h:160: warning: No documentation for 'QQuickWindow::closing()' qtdeclarative/src/quick/items/qquickwindow.cpp:3134: warning: Can't link to 'Window.closing()' qtdeclarative/src/qml/qml/qqmlfileselector.cpp:90: warning: Undocumented parameter 'parent' in QQmlFileSelector::QQmlFileSelector() Change-Id: I42cf1e06c9e7a63327acc470bd33a726acc69bfc Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
* | Cleanup math function includes and usageAllan Sandfeld Jensen2015-02-191-2/+0
| | | | | | | | | | | | | | | | Use std::math on floats and doubles, and qMath on qreals, and only include the math headers actually needed. Change-Id: I1d511d7b1bac0050eaa947c7baee760b736858bf Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Add Qt.hsva() functionSean Harmer2015-02-184-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | This is more convenient than the alternative hsla() function in many cases as color pickers in other applications default to the HSV color space e.g. GIMP, kcolorchooser. [ChangeLog][QtQml] Added Qt.hsva() function Change-Id: Id5c1a78173757bf9842b164d90b31682e9a41749 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | NamedNodeMap: Remove logically dead codeHolger Hans Peter Freyther2015-02-181-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code has been changed by Lars in the git commit 47fbcb47771a36ab9fd0a4d5ede7b7504ab1410d. Now "r->engine()" is called before the "if (!r)" check is being executed. We can assume that "m->as<NamedNodeMap>()" will always return a non nullptr and this allows us to remove the extra null check. Fixes CID: 86703 Change-Id: Ib4f1103e38c7e1e8e5175d91e795d2621e3a79c4 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Add Q_GADGET wrappers for QModelIndex & Co.Gabriel de Dietrich2015-02-121-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The complete list of types is, * QModelIndex * QModelIndexList * QPersistentModelIndex * QItemSelection * QItemSelectionRange These wrapper types follow the QQmlValueType conventions and allow us to expose the wrapped types without introducing meta-type changes. They also allow to customize the string type representation. We also extend QQmlValueTypeFactory to return the meta-object for those types. Finally, we add two-way meta-type conversion between QModelIndex and QPersistentModelIndex to get the same interoperability as in C++ when passing an object of one type to a function requir- ing an object of the other type. Change-Id: Iaa7089ea576c901f12715ffa21e4d94603d53755 Reviewed-by: Caroline Chao <caroline.chao@theqtcompany.com>
* | Update copyright headersJani Heikkinen2015-02-12155-1077/+1077
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: I61120571787870c0ed17066afb31779b1e6e30e9 Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
* | Typeloader cleanupSimon Hausmann2015-01-233-31/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The QQmlDataBlob base class had a typeloader member that was provided with startLoading() later, just to allow calling the url interceptor. The one sub-class of QQmlDataBlob - QQmlTypeLoader::Blob - also had a typeloader pointer, provided at constructor time. This patch cleans this up by removing the duplicated typeloader pointer in the sub-class and passing it straight through to the base-class at construction type. This also allows moving the url interception to the constructor. Also fixed the findCachedCompilationUnit calls to use the url after applying the intercept and removed one unnecessary findCachedCompilationUnit call - the QFile::exists call is sufficient. Change-Id: If5c49d38a6ec66fea6cd7c21013c046cf75acafd Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | CleanupsLars Knoll2015-01-236-339/+339
| | | | | | | | | | | | | | | | Simplify some code in BooleanObject Simplify access to call arguments and thisObject Change-Id: I2f8e844019bc587385608beb02f05b15f827535c Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | CleanupsLars Knoll2015-01-233-10/+10
| | | | | | | | | | | | | | | | Remove duplicated methods. Remove some mostly unused methods, and simplify some others. Change-Id: I605b249e54417bb32c3dfc8e22f2c8b6b684a1e1 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>